我有一个 shell 脚本,它正在打开不同的终端。
打开终端后,我在终端中手动启动不同的应用程序。我想通过 shell 脚本向终端的命令行添加文本(例如 bin/binfile)来自动执行此操作。重要的是,我只想输入文本,因此在执行脚本后,我仍然必须在终端中按 Enter 才能启动应用程序。我不想自动执行命令。那可能吗?
假设您使用的是 bash,您可以通过配置 readline 快捷方式以在单个按键中输出您想要的命令来接近。
export INPUTRC=`mktemp`
trap "rm -f $INPUTRC" EXIT
echo '"\eOP": "my command"' > $INPUTRC
xterm
Run Code Online (Sandbox Code Playgroud)
INPUTRC 是 readline 使用的环境变量。它将尝试打开 $INPUTRC 并从中读取配置。
readline 配置"\eOP": "my command"
将宏绑定到 F1 键(在我的终端中显示为ASCII 转义字符的my command
序列)。\eOP
\e
现在,在 xterm 中按 F1 将产生my command
。
该陷阱可确保终端关闭后临时配置文件被清除。
(绑定到 F1 的正确 readline 咒语可能会有所不同,因此您可能需要使用除 之外的其他内容\eOP
。如果您已经有 ~/.inputrc 那么您可能希望将其包含在创建的临时文件中。)
编辑:关于下面的评论,xfce4-terminal
对我有用,与
export INPUTRC=`mktemp`
trap "rm -f $INPUTRC" EXIT
echo '"\eOQ": "my command"' > $INPUTRC
xfce4-terminal
Run Code Online (Sandbox Code Playgroud)
并使用 F2 而不是 F1。