tcsh - エコエスケープコード

tcsh - エコエスケープコード

別の内容を印刷してプログラムでファイルを作成しようとしています。 (つまりprintf %s\\n hostname >> file.txt

画面を消去するためにEscコードを送信したいです(最初の行になります)。

printf $'\033[2J'$'\033[;H'Bashでは(\033octetで)を使用するとEsc画面が消去されます。すべてが正常に動作します。ファイルの最初の行は、ファイルを開くcatと最初に画面を消去します。

tcsh(FreeBSDルートのデフォルトシェル)では、「エスケープ」をエスケープする方法とbashエスケープコードに対応するコードを取得する方法がわからないようです。

私は努力してきました(printfそしてecho

  • エコ%{\e[2J]}
  • エコ\e
  • エコ\e
  • エコ%{\033[2J}

誰もが正しい方向に私を指すことができればとても感謝します!

ありがとうございます!

ベストアンサー1

printfksh93-style引用符なしで型(最初の)引数の引数を個別に拡張します$'...'。だから:

printf '\33[2J\33[H'

これはprintf組み込まれていないため、ファイルシステムでコマンドを呼び出しtcshます。その後、またはコマンドをprintf呼び出すこともできますが、termcap / terminfoのサポートが組み込まれているので、そうする必要はありません。次のことができます。tputcleartcshtcsh

echotc clear

これは、terminfoデータベースまたはtermcapデータベースを照会して、現在の端末に送信する正しいエスケープシーケンスを取得します(termによって異なります$TERM)。これは通常、ハードコーディングを使用するよりも優れています。

内蔵機能を使用するには、次の手順を実行しますtcshecho

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'

おすすめ記事