使用 shell 重定向将文本预先输入到交互式命令中?

使用 shell 重定向将文本预先输入到交互式命令中?

只是预先说一下:我知道大多数具有交互式提示的程序也具有某种初始化文件或设置将运行某些内容的命令标志的能力,并且然后让您进入交互式提示。但是,我对 shell 级别的解决方案感兴趣。


假设我有一个xyz从 shell 运行的命令,它接管我的终端并给我一个交互式提示,我可以在其中运行换行符终止的命令。

假设我有两个命令(两行),我想在交互式会话开始时运行,每次运行xyz.

如果这两行是仅有的我想运行的命令,当然我可以运行:

printf '%s\n' 'first command' 'second command' | xyz

或者,如果我有一大堆命令要运行,但我提前知道所有命令,我可以将它们全部放入一个文件中并运行:

xyz < commands-file.txt

然而,如果我想要得到一个标准的交互式提示,其结果与我键入xyz然后手动键入我的first commandsecond command...有没有办法使用重定向在 shell 中(例如在 shell 函数中)执行此操作?


显而易见的解决方案sed -e '1ifirst command' -e '1isecond command' | xyz不起作用,要么是因为xyz可以检测到输入不是来自终端,要么是因为输出sed被缓冲了;不确定是哪一个。

相关内容