我想在每次用户在交互式 bash shell 中按下按键时运行一个函数。
我想知道 bash 是否有内置的东西,比如 zsh 中的自插入功能?
或者,我想知道是否有一些我可以从中读取的包含缓冲区的文件描述符,类似于 zsh 中的 $BUFFER 变量?
我正在寻找构建类似于script
命令但不使用伪终端的东西
答案1
也许我误解了你,但read -n1
可能有用。
#!/bin/bash
while read -n1 -r v
do
printf 'You typed "%s".\n' "$v"
done
- 允许
-r
反斜杠 (\
) 作为普通字符使用。 - 需要对其进行调整,以便您能够实际看到用户何时键入空格、制表符或Enter。 (正如这里所写的,
read
将返回但$v
不会被设置。) - 特殊键(如F1)将显示为多个字符。
- 像往常一样,这些字符会在用户键入时显示。您可以使用 关闭它
stty -echo
。 - 由于代码写到这里,需要使用Ctrl+C来跳出循环。显然你可以添加自己的逻辑;例如,
if [ "$v" = Q ]; then break; fi
。