在交互式 shell 中每次击键时执行 bash 中的函数

在交互式 shell 中每次击键时执行 bash 中的函数

我想在每次用户在交互式 bash shell 中按下按键时运行一个函数。

我想知道 bash 是否有内置的东西,比如 zsh 中的自插入功能?

或者,我想知道是否有一些我可以从中读取的包含缓冲区的文件描述符,类似于 zsh 中的 $BUFFER 变量?

注意:我知道这个问题:https://superuser.com/questions/604812/how-to-execute-a-function-in-bash-or-zsh-on-every-letter-being-typed-into-prompt

我正在寻找构建类似于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

相关内容