我有一个.sh
带有 shell 命令的文件,例如:
echo "What shall are we running?"
if [ "$0" == "-bash" ]; then
echo "I'm running a bash"
else
echo "Not a bash"
fi
ls -al | less
htop
我想在 Emacs (27.2) 中一次一行地浏览这些文件(出于教学目的),并将每一行发送到 macOS (12.1) 终端应用程序Terminal.app
。
与此最密切相关的帖子似乎是
this,但没有一个解决方案效果很好。例如,使用tmux
inside Terminal.app
,组合 withemamux
不起作用,因为后者不允许发送完整的行(并且 with 的解决方案tmux
除了矫枉过正之外还有一些缺点)。这里最不赞成的答案为 iTerm 提出了一个想法。最重要的功能是iterm-send-string
,但我没有使用 Emacs Lisp 编程的经验,所以无法让它工作。
我发现的另一个想法是eepitch
,但我不想将我的 shell 脚本与其他输入混淆(同样,出于教学目的)。还有一个想法是this,但对于 GNU/Linux。
对此类问题的常见回答似乎是“为什么不用 Mx (e)shell?” 到目前为止,最有效的方法确实是M-x ansi-term
与
这种方法相结合。问题是既不shell
,eshell
也不ansi-term
等同于Terminal.app
,例如,上面示例 shell 脚本 ( less
, htop
)中的最后两行在ansi-term
. 所以我现在最好的解决方案是单步执行 shell 脚本中的“大部分”行,ansi-term
并偶尔拉起Terminal.app
执行在ansi-term
.