只是预先说一下:我知道大多数具有交互式提示的程序也具有某种初始化文件或设置将运行某些内容的命令标志的能力,并且然后让您进入交互式提示。但是,我对 shell 级别的解决方案感兴趣。
假设我有一个xyz
从 shell 运行的命令,它接管我的终端并给我一个交互式提示,我可以在其中运行换行符终止的命令。
假设我有两个命令(两行),我想在交互式会话开始时运行,每次运行xyz
.
如果这两行是仅有的我想运行的命令,当然我可以运行:
printf '%s\n' 'first command' 'second command' | xyz
或者,如果我有一大堆命令要运行,但我提前知道所有命令,我可以将它们全部放入一个文件中并运行:
xyz < commands-file.txt
然而,如果我想要得到一个标准的交互式提示,其结果与我键入xyz
然后手动键入我的first command
和second command
...有没有办法使用重定向在 shell 中(例如在 shell 函数中)执行此操作?
显而易见的解决方案sed -e '1ifirst command' -e '1isecond command' | xyz
不起作用,要么是因为xyz
可以检测到输入不是来自终端,要么是因为输出sed
被缓冲了;不确定是哪一个。