如何在 bash 别名中模拟键盘快捷键?

如何在 bash 别名中模拟键盘快捷键?

例如,我的 bash 别名之一是这样的

alias p='clear;ls -lt;pwd;'

clear还清除了我不想要的历史记录。我只想暂时清除屏幕。

Ctrl+L然而正是我想要的。如何在我的别名中使用它?

答案1

如果clear正在清除历史记录和终端,则必须有一个函数、别名或脚本正在执行此操作。看看什么type -a clear告诉你。

清除终端的另一种方法是使用它执行与应该执行的tput clear操作完全相同的操作。clear您也可以尝试直接使用转义序列(例如 xterm)来执行此操作,但对于不同的终端可能会有所不同(它应该适用于任何模拟 xterm 的终端,例如 gnome-terminal、PuTTY 等):printf '\e[H\e[2J'

答案2

您所要求的一般称为从 bash 执行 readline 命令(相当于zsh 中的zle -U $key_sequencezle $widget $arguments[@])。据我所知,这在 bash 中是不可能的。

但是,在这种特定情况下,我没有观察到运行clear和键入Ctrl+L( readline command clear-screen)之间有任何区别。

相关内容