一部のプログラムでは、画面上の同じ場所(3行目、5列目など)に文字を複数回書き込むように背景とフォントの色をどのように設定しますか?
curl google.com > a
いくつかの例は、いくつかのインストール画面とほぼすべてのテキストエディタに表示される進行状況バーです。
ベストアンサー1
あなたが要求するのは、実際にはグラフィックAPIではなく、端末制御文字にすぎません。
その後には多くの歴史がありますが、当時のターミナルはテレタイププライターマシン。基本的には、シリアル接続を介してコンピュータに接続されているトラック用紙フィーダを備えたタイプライターです。文字を入力すると、バイナリ値がコンピュータに送信されます(ページに入力することも含まれます)。コンピュータは、要求されたコンテンツの出力として文字を再印刷します。
特殊文字は端末を制御するために使用されます(ここでこれらの文字を生成するために使用される制御キーが提供されます)。たとえば、バックスペースキー^H
、キャリッジリターン文字(カーソルを行の先頭に移動)、または改行文字(ページを1行上に移動)です。一部の制御コードには、制御文字を生成するためのCのエスケープシーケンス(ほとんどすべてのプログラミング言語で共有)があります。以前にリストされたコントロールは、です。^?
^M
^J
\b
\r
\n
これ端末エミュレータ今日、あなたが使用しているソフトウェアは、文字通り古いテレタイプマシンで偽装されたソフトウェアです。ある意味では、Unixがまだタイプライターを使って通信していると思うのと同じです。
の場合は、curl
1行全体を書き込んでから\r
(Enter)を送信し、カーソルを行の先頭に移動してからもう1行を書き込みます。改行文字が送信されないため、画面の同じ行に書き込みを続けます。
これにより、これを証明できます。
echo -n "First" ; sleep 5 ; echo -en "\rSecond\n"
「First」という単語が印刷されていることがわかります(ただし、新しい行は送信されません)。 5秒後、「Second」という単語に変わり、新しい行が送信されます。このパターンを無限に繰り返すことができます。 「3番目」を直接追加してみると、思わぬ内容が表示されるはずです;-)
これらの制御文字とその他の制御文字の詳細については、ascii(7)
マニュアルを参照してください。