(コマンドを実行する前に)端末でコマンドを入力するたびにclear
コマンドを実行するようにbashを構成したいと思います。どうやってやるの?
Debian Linuxを使用しています。
Bashにはプリコマンドフックがあります 。ちょっと。
preexec () {
clear
}
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$Prompt_COMMAND" ] && return # don't cause a preexec for $Prompt_COMMAND
local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG
bind 'RETURN: "\e[1~clear; \e[4~\n"'
その後、押すたびに return\n
と書くだけでなく、行の先頭に移動し、テキストclear;
を入力してから、最後に移動して\n
を期待どおりに入力します。
私が今日尋ねた質問から(ユーザーへのクレジット付き @ aecolley's answer ):
bind '"\C-m": "\C-l\C-j"'
\C-m
「Enter」キーのシミュレーション、\C-l
シミュレーションCtrl+l
明確であり、\C-j
は「改行とインデント」であるため、コマンドはEnterキーをCtrl + lとCtrl + jにバインドしています。
GNU bash、バージョン3.2.53(1)-release(x86_64-Apple-darwin14))で機能し、このスレッドの他の回答では機能しません。また、これは 'で履歴を汚染しません他のすべてのコマンドをクリアします。
cb4() {
preexec () {
clear
}
}
これはpreexec
と呼ばれるフックを使用し、zshでも動作することが確認されています
次に、実行するすべてのコマンドの前に自動的にクリアするセッション:cb4
preexec () {
clear
}
word clear
をtput reset
に置き換えます
tput
はオプションですが、リセットプロセスを高速化します