我有一个打开不同终端的 shell 脚本。
打开终端后,我在终端中手动启动不同的应用程序。我想通过 shell 脚本将文本(例如 bin/binfile)添加到终端的命令行来自动执行此操作。重要的是,我只想输入文本,因此执行脚本后我仍然必须在终端中按 Enter 键才能启动应用程序。我不想自动执行命令。那可能吗?
答案1
假设您使用的是 bash,您可以通过配置 readline 快捷方式以在单个按键中输出您想要的命令来接近。
export INPUTRC=`mktemp`
trap "rm -f $INPUTRC" EXIT
echo '"\eOP": "my command"' > $INPUTRC
xterm
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
并使用 F2 而不是 F1。
答案2
使用包装脚本:
等待k.sh:
#!/bin/sh
printf "$*"
read k
exec "$@"
然后将其添加到您的命令前面
waitk.sh ls -l
答案3
一种简单的方法是将文本通过管道传输到剪贴板缓冲区,例如| pbcopy
.
进而Cmd + v
。