通过 Shell 脚本将文本添加到命令行

通过 Shell 脚本将文本添加到命令行

我有一个打开不同终端的 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

相关内容