ターミナル - ^[[H^[[2J - カラットブラケット H カラットブラケット 2 J

ターミナル - ^[[H^[[2J - カラットブラケット H カラットブラケット 2 J

このコマンドは何ですか?CSI n ; m Hカーソルをn行と列に移動するのはわかりますmが、タイトルにどんなコマンドがあるのでしょうか?^[[H^[[2J

答え1

^[以下は、少なくともxtermに似た端末(ESC文字が表示される場所)で画面を消去し、カーソルを一番上に置くシーケンスを視覚的に表現したものです。

$ TERM=xterm tput clear | cat -v
^[[H^[[2J

これらのエスケープシーケンスについては、以下を確認してください。ctlseqs.txt文書には以下が含まれていますxterm

ESC [
制御シーケンス導入者(CSIは0x9b)。

そして:

CSI Ps; Ps H
カーソル位置[行;列] (既定値 = [1,1]) (CUP)

そして:

CSI Ps Jディスプレイの削除(ED)。
Ps = 0 ->下のクリア(デフォルト)。
Ps = 1 ->上記の内容を削除してください。
Ps = 2 -> すべて削除します。
Ps = 3 ->保存された行を削除する(xterm)。

(これを行うと、^[[2J保存した行や代替画面は消えません。)

tput clear(またはclear)はxterm同様の端末と同じ効果を持ちますprintf '\e[H\e[2J'。これを行うには、データベースに問い合わせて、名前が環境変数に格納されている端末機能の文字順序が何であるかを判断しますterminfo。ダンプ・データベースの端末項目を使用すると、以下が表示されます。clear$TERMxtermterminfoinfocmp xterm

$ infocmp -1 xterm | grep clear
        clear=\E[H\E[2J,

与えられたエスケープシーケンスを理解する別の方法は次のとおりです。

$ infocmp -L -1 | grep J
        clear_screen=\E[H\E[2J,
        clr_eos=\E[J,

(関数名はここで使用されますL)。その後、これらの機能を説明できますman 5 terminfo

答え2

の値nmデフォルト値は1CSIn;mHなので、^[[Hカーソルが開始位置に移動します。^[[2J画面を消去し、カーソルを元の位置に置きます。

関連情報