按下按键后立即运行命令的脚本

按下按键后立即运行命令的脚本

我想在 bash 中创建一个重复函数,每次按下任意键时都会运行相同的三个命令。

在 Windows 中,我可以通过在批处理文件中无限循环中使用暂停命令来完成此操作,这可以很好地满足我的需求。

大多数 *nix 发行版没有等效的暂停命令,并且read -p无法按照我想要的方式运行。

完成我需要的最好方法是什么?此外,当输入某个组合键(比如Ctrl- )时,是否可以执行不同的命令(用于清理) ?C

答案1

假设使用 bash,该read选项-N可能有用:

  -N nchars return only after reading exactly NCHARS characters, unless
            EOF is encountered or read times out, ignoring any delimiter

如果使用read -N 1 x,则输入字符后它将立即返回,而无需等待换行符。

关于问题的第二部分,点击 Ctrl-C将 INT 信号发送到您的脚本;拦截只是捕获该信号的简单问题。

将所有内容放在一起的示例:

trap 'echo special command' INT

while read -N 1 foo; do
    echo normal command
done

还有一个交互示例(我点击了x两次,然后 Ctrl点击了C一次):

xnormal command
xnormal command
^Cspecial command

(请注意,退出此脚本会很烦人;一种方法是使用 - 停止它CtrlZ然后终止该作业。)

相关内容