tailが端末の文字セットを変更できないようにする

tailが端末の文字セットを変更できないようにする

Linuxターミナル(CentOS)では、このコマンドを使用してtail --follow=name my-rolling-file.logアプリケーションのログを表示します。

時にはログからいくつかのバイナリデータがダンプされます(私は通常文字列を含みますが、時にはUTF-8の中国語などのバイナリおよび/または特殊文字を含むCamelメッセージの本文をダンプします)。これが発生した場合は、端末を今の|ようにパイプ文字に変更してくださいö

tail問題を引き起こすことがバイナリデータロギングであると推測しており、特殊文字を無視するようにコマンドを要求することが可能かどうか疑問に思います。マニュアルページを確認しましたが、何も見つかりませんでした。

現在、この問題を解決するには、端末でCtrl-Cコマンドを実行して再起動する必要があります。可能であれば、これらの作業を避けたいと思います。resettail

このコマンドに加えて、機能は同じですが(スクロールファイルに従う)他のコマンドを知っている場合は、tailCentOS 6.5でインストールして実行できる限り、そのコマンドも許可されます。

ベストアンサー1

tail次のコマンドを渡して、特殊文字(バイナリデータ)を表示するのに安全な一般文字に変換できますcat -v

tail --follow=name my-rolling-file.log | cat -v

(とも呼ばれる)の(詳細)オプションは、および記号を-v使用して「印刷されない」文字を表示します。cat--show-nonprinting^M-

  • 0x00 は次のように表示されます。^@
  • 0x01 は次のように表示されます。^A
  • 0x02は次のように表示されます。^B
  • など。
  • 0x7Fは次のように表示されます。^?
  • 0x80-0xFFは次のように表示され、M-その後にバイトの下位7ビットが表示されます。

または、これらの文字を削除するには、次のようにします。

tail --follow=name my-rolling-file.log | tr -cd "\t\n -~"

tr文字を「翻訳」します。つまり、文字をマップします。たとえば、小文字を大文字に変更するために使用できます。この-dオプションは文字を削除するように指示します。たとえば、tr -d aeiouすべての(小文字)コレクションを削除します。オプションは-c補完を意味します。つまり、私が指定した文字以外のすべての文字を実行します。  "\t\n -~"タブ文字、改行、すべての一般的な印刷可能文字です。

おすすめ記事