このコマンドは何ですか?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
$TERM
xterm
terminfo
infocmp 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
の値n
とm
デフォルト値は1CSIn;mH
なので、^[[H
カーソルが開始位置に移動します。^[[2J
画面を消去し、カーソルを元の位置に置きます。