clear コマンドを Bash の Ctrl-L のように動作させることはできますか?

clear コマンドを Bash の Ctrl-L のように動作させることはできますか?

clearと bash Ctrl-Lはかなり異なるようです。clear以前のすべてのターミナル情報を完全に削除します (そのため、上にスクロールできません)。一方、Ctrl- はL画面をスクロールするだけで、カーソルがページの上部にあるため、上にスクロールして以前の情報を見ることができます。私はCtrl-システムの方がずっと好きです。以前のすべてのターミナル情報を消去するのではなく、 - を実行するようにLオーバーライドする方法はありますか? これは大きな問題ではありませんが、好みの-機能を指すようにエイリアスする方法があるかどうか、好奇心から知りたいだけです。clearCtrlLclearCtrlL

余談ですが、PowerShell には bash へのバインディングもあり、同じように動作することに気づきましたCtrl。PowerShellLCtrl設計L者は bash から多くのことを取り入れたようですが、cmd.exeコンソールにはこの機能がありません。

答え1

以前の端末情報をすべて消去するのではなく、Ctrl-L を実行するように clear をオーバーライドする方法はありますか?

alias clear='tput -x clear'

はい、Ctrl-Lbash では(モード中set -o emacs)まったく同じことを行います。

alias clear='printf "\033[H\033[2J"'または、ほとんどのターミナル エミュレータで動作するエスケープをハードワイヤードすることもできます。これは、 がインストールncursesされていることを前提としていませんbash

注:clearbusybox のアプレットはスクロールバック バッファを消去しないので、ほとんどの組み込み Linux システムのように、busybox ベースのシステムを使用している場合は、特別な操作を行う必要はありません。

答え2

clearはターミナルコマンドです。抜粋man clear:

説明 clear 可能であれば、スクロールバック バッファを含む画面をクリアします (拡張「E3」機能が定義されている場合)。 clear環境変数 TERM で指定された端末タイプを環境内で検索し、次に terminfo データベースを検索して画面をクリアする方法を決定します。 clear標準出力に書き込みます。標準出力をファイルにリダイレクトし (これにより、clear が実際に画面をクリアするのを防ぐことができます)、後でファイルを画面にリダイレクトして cat 、その時点で画面をクリアすることができます。

Ctrl+lはキーバインドですreadlineclear-screenコマンド(man 3 readline)。

画面をクリアし、現在の行を再描画します。現在の行は画面の一番上に残ります。引数を指定すると、画面をクリアせずに現在の行を更新します。


clearreadline コマンドにエイリアスする方法が見つかりませんclear-screen。まったく不可能かもしれません。

関連情報