clear
と bash Ctrl-Lはかなり異なるようです。clear
以前のすべてのターミナル情報を完全に削除します (そのため、上にスクロールできません)。一方、Ctrl- はL画面をスクロールするだけで、カーソルがページの上部にあるため、上にスクロールして以前の情報を見ることができます。私はCtrl-システムの方がずっと好きです。以前のすべてのターミナル情報を消去するのではなく、 - を実行するようにLオーバーライドする方法はありますか? これは大きな問題ではありませんが、好みの-機能を指すようにエイリアスする方法があるかどうか、好奇心から知りたいだけです。clear
CtrlLclear
CtrlL
余談ですが、PowerShell には bash へのバインディングもあり、同じように動作することに気づきましたCtrl。PowerShellLのCtrl設計L者は bash から多くのことを取り入れたようですが、cmd.exe
コンソールにはこの機能がありません。
答え1
以前の端末情報をすべて消去するのではなく、Ctrl-L を実行するように clear をオーバーライドする方法はありますか?
alias clear='tput -x clear'
はい、Ctrl-L
bash では(モード中set -o emacs
)まったく同じことを行います。
alias clear='printf "\033[H\033[2J"'
または、ほとんどのターミナル エミュレータで動作するエスケープをハードワイヤードすることもできます。これは、 がインストールncurses
されていることを前提としていませんbash
。
注:clear
busybox のアプレットはスクロールバック バッファを消去しないので、ほとんどの組み込み Linux システムのように、busybox ベースのシステムを使用している場合は、特別な操作を行う必要はありません。
答え2
clear
はターミナルコマンドです。抜粋man clear
:
説明
clear
可能であれば、スクロールバック バッファを含む画面をクリアします (拡張「E3」機能が定義されている場合)。clear
環境変数 TERM で指定された端末タイプを環境内で検索し、次に terminfo データベースを検索して画面をクリアする方法を決定します。clear
標準出力に書き込みます。標準出力をファイルにリダイレクトし (これにより、clear が実際に画面をクリアするのを防ぐことができます)、後でファイルを画面にリダイレクトしてcat
、その時点で画面をクリアすることができます。
Ctrl+lはキーバインドですreadline
のclear-screen
コマンド(man 3 readline
)。
画面をクリアし、現在の行を再描画します。現在の行は画面の一番上に残ります。引数を指定すると、画面をクリアせずに現在の行を更新します。
clear
readline コマンドにエイリアスする方法が見つかりませんclear-screen
。まったく不可能かもしれません。