web-dev-qa-db-ja.com

bashエイリアスでキーボードショートカットをシミュレートするにはどうすればよいですか?

たとえば、私のbashエイリアスの1つはこれです

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

clearは、私が望まない履歴もクリアします。画面を一瞬クリアしたいだけです。

Ctrl+L しかし、まさに私が望むことをします。エイリアスでどのように使用できますか?

5
Lazer

clearが履歴をクリアしていて、端末がそれを実行している関数、エイリアス、またはスクリプトが存在する必要がある場合。 type -a clearが教えてくれることをご覧ください。

ターミナルをクリアする別の方法は、tput clearを使用することです。これは、clearが実行することになっていることとまったく同じことを実行します。エスケープシーケンス(xtermなど)を使用して直接実行することもできますが、端末によって異なる場合があります(gnome-terminal、PuTTYなどのxtermをエミュレートするものでは機能するはずです):printf '\e[H\e[2J'

一般的にあなたが求めているのは、bashからreadlineコマンドを実行することです(zshのzle -U $key_sequenceまたはzle $widget $arguments[@]に相当)。私の知る限り、これはbashでは不可能です。

ただし、この特定のケースでは、clearの実行と入力の間に違いは見られません。 Ctrl+L (readlineコマンドclear-screen)。