別の内容を印刷してプログラムでファイルを作成しようとしています。 (つまりprintf %s\\n hostname >> file.txt
)
画面を消去するためにEscコードを送信したいです(最初の行になります)。
printf $'\033[2J'$'\033[;H'
Bashでは(\033
octetで)を使用するとEsc
画面が消去されます。すべてが正常に動作します。ファイルの最初の行は、ファイルを開くcat
と最初に画面を消去します。
tcsh(FreeBSDルートのデフォルトシェル)では、「エスケープ」をエスケープする方法とbashエスケープコードに対応するコードを取得する方法がわからないようです。
私は努力してきました(printf
そしてecho
)
- エコ%{\e[2J]}
- エコ\e
- エコ\e
- エコ%{\033[2J}
誰もが正しい方向に私を指すことができればとても感謝します!
ありがとうございます!
ベストアンサー1
printf
ksh93
-style引用符なしで型(最初の)引数の引数を個別に拡張します$'...'
。だから:
printf '\33[2J\33[H'
これはprintf
組み込まれていないため、ファイルシステムでコマンドを呼び出しtcsh
ます。その後、またはコマンドをprintf
呼び出すこともできますが、termcap / terminfoのサポートが組み込まれているので、そうする必要はありません。次のことができます。tput
clear
tcsh
tcsh
echotc clear
これは、terminfoデータベースまたはtermcapデータベースを照会して、現在の端末に送信する正しいエスケープシーケンスを取得します(termによって異なります$TERM
)。これは通常、ハードコーディングを使用するよりも優れています。
内蔵機能を使用するには、次の手順を実行しますtcsh
。echo
set echo_style = both # meant to be the default in tcsh
echo -n '\033[2J\033[H'
または:
set echo_style = sysv # or both
echo '\033[2J\033[H\c'