bash
コマンドプロンプトの入力を画面上部に保持して、古いコマンドからの出力が上方向ではなく下方向にプッシュされるようにしたいと思います。
どうすればこれを達成できますか?
これらの行を.bashrc
に追加します。
Prompt_on_top() {
tput cup 0 0
tput el
tput el1
}
pre_cmd() {
if [ "$BASH_COMMAND" = "$Prompt_COMMAND" ] || [ -n "$COMP_LINE" ]; then
return
fi
printf "\33[2J"
}
Prompt_COMMAND="Prompt_on_top"
trap 'pre_cmd' DEBUG
bash
have Prompt_COMMAND 、これは、コマンドがbash
show Promptの前に実行されることを保持します。ここでは、関数Prompt_on_top
に設定します。これは tput を使用して、画面の上部にカーソルを設定します。
bash
には、コマンドを実行する前にコマンドを実行する方法もあります。 trap を使用して、信号DEBUG
を処理します。ここでは、これを関数pre_cmd
に設定します。これにより、古い画面がクリアされ、完了( COMP_LINE が空でない)した場合、またはBASH_Prompt
でコマンドを実行した場合は何も行われません。
このアプローチには制限があります。コマンド出力が長すぎて画面に収まらない場合、出力はPrompt_on_top
アクションによってオーバーライドされます。この場合、出力全体を読み取るために、出力をページャーにパイプする必要があります。