画面を消したいのですが、できれば可能です。ほとんどの端末では、エスケープシーケンスを介してこれを実行できます\033[2J\033[H
。しかし、すべての端末がこれを理解しているわけではありません。端末がこのシーケンスを理解しているかどうかはどうすればわかりますか?
ベストアンサー1
これがtermcapまたはterminfoデータベースの目的です。
tput clear
clear
これらのデータベースは、名前が格納されている端末または端末エミュレータの機能の正しいエスケープシーケンスを検索します$TERM
。
tput
標準コマンドですしかし、標準は幸いにも、ここに1を含む最小限の関数名を除いて関数名を指定しませんclear
。
ほとんどのシステムには、clear
同じ操作を実行する標準コマンドでなくてもコマンドがあります。
シェルには、組み込み関数をtcsh
使用してデータベースクエリをサポートする機能が組み込まれています。ここで、その関数の名前は次のとおりです。termcap
echotc
cl
echotc cl
シェルにはterminfoもzsh
あります(両方ともモジュールにあり、実行/アクセス時に自動的にロードされます)。echotc
echoti
zsh/terminfo
echotc
echoti
$terminfo
echoti clear
ここで、$terminfo
連想配列は関数を対応するエスケープシーケンスにマッピングします(引数を持たない関数にのみ役立ちます)、次のこともできます。
print -rn -- $terminfo[clear]
他のほとんどの言語(シェルでない場合)には、これらのデータベースへのインタフェースがあります(C、Perl、およびPythonのlibtinfoとより高いTerm::Cap
レベルのncursesを参照)。Curses
curses
notcurses
バラよりman 5 terminfo
terminfo データベースの詳細情報そここのデータベースのHTMLソースは、次のように保持されます。@トーマスディキ(彼はncursesとxtermや他の多くの端末関連アプリケーションも管理しています。)コメントでは、さまざまな端末または端末エミュレータでサポートされている機能の歴史に関する多くの有用な情報を提供しています。
1ローカル環境でのみ可能なので、厳密に言えば、POSIXlyはどこでも必要になるとは思わないがPOSIX
必要です。LC_ALL=POSIX tput clear