これはなに

シェルのclearコマンドについてのメモ。
clear コマンドとは

clear コマンドは、ターミナルの画面をクリアするコマンドである。
clear コマンドを実行すると、ターミナルの画面がクリアされ、新しい画面が表示される。
Ctrl + Lでも同様の効果がある。
clear コマンドの実装

clear コマンドは、ANSIエスケープシーケンスを利用して、ターミナルの画面をクリアしている。
たとえば、clear コマンドを実行した結果をファイルにリダイレクトすると、ターミナルはクリアされない。
clear > clear.txt代わりに、以下のような文字列がclear.txtへ書き込まれる。
[H [2J [3Jこの文字列は、ターミナルの画面をクリアするための特殊な文字列(ANSIエスケープシーケンス)である。ターミナルは、この文字列を「画面をクリアする指示」として解釈し、画面をクリアする。
上記で四角になってしまっている部分は、hexdumpコマンド1で確認できる。
$ clear | hexdump -c
0000000 033 [ H 033 [ 2 J 033 [ 3 J
000000bつまり、clearコマンドは、ターミナルの画面をクリアするための特殊な文字列"\033[H\033[2J\033[3J"をターミナルへ出力している。
hexdumpは、バイナリファイルを16進数で表示するコマンドである。-cオプションを指定することで、ASCII文字として表示できる。 ↩︎