私は最近、シェルがどのように動作するかをより理解し、clear
コマンドがどのように機能するかを調べようとしました。実行可能ファイルは にあり/usr/bin/clear
、空行(ターミナルの高さと同じ)を印刷してカーソルを端末の左上に配置するようです。
端末のサイズに関係なく、コマンドの出力は常に同じです。
$ clear | hexdump -C
00000000 1b 5b 48 1b 5b 32 4a |.[H.[2J|
00000007
そしてまったく同じ効果でechoを使って複製することができます。
$ /bin/echo -e "\x1b\x5b\x48\x1b\x5b\x32\x4a\c"
このコマンドの出力がどのようにコンソールクリアに変換されるのか本当に疑問に思います。
ベストアンサー1
このコマンドの出力はclear
コンソールエスケープコードです。必要な正確なコードは、使用している特定の端末によって異なりますが、ほとんどはANSI制御シーケンスを使用します。以下は、さまざまなコードを説明するための良いリンクです。http://www.termsys.demon.co.uk/vtansi.htm。関連スニペットは次のとおりです。
Cursor Home <ESC>[{ROW};{COLUMN}H
Sets the cursor position where subsequent text will begin. If no row/column
parameters are provided (ie. <ESC>[H), the cursor will move to the home position,
at the upper left of the screen.
そして:
Erase Screen <ESC>[2J
Erases the screen with the background colour and moves the cursor to home.
<ESC>
16進数1B
または8進数はどこにありますか033
?キャラクターを見るもう一つの方法は次のとおりです。
clear | sed -n l