以下を使用してファイルを読み取ろうとするとき/var/log/boot.log
:less
[amirreza@localhost ~]$ sudo less /var/log/boot.log
"/var/log/boot.log" may be a binary file. See it anyway?
しかし、それを使用しようとすると、cat
結果は次の色のテキストファイルです。
Starting Virtualization daemon...
Starting Notify NFS peers of a restart...
Starting Permit User Sessions...
[ OK ] Finished Permit User Sessions.
[ OK ] Started Deferred execution scheduler.
[ OK ] Started Command Scheduler.
Starting GNOME Display Manager...
Starting Hold until boot process finishes up...
[ OK ] Started Notify NFS peers of a restart.
[ OK ] Started GNOME Display Manager.
systemdはログをバイナリ形式で保存し、それをチェックするために特別なツールが必要であることを知っていますが、less
違いは何ですかcat
?
答え1
less
ファイルを表示する前にファイルを見て、バイナリファイルだと思うかどうか尋ねます。おそらく、次のようなゴミを見たくないと思います。
<BB>!^@h^C^@^@^@<E9><B0><FF><FF><FF><FF>%^B<BB>!^@h^D^@^@^@
<E9><A0><FF><FF><FF><FF>%<FA><BA>!^@h^E^@^@^@<E9><90><FF><FF>
<FF><FF>%<F2><BA>!^@h^F^@^@^@<E9><80><FF><FF><FF><FF>%<EA>
<BA>!^@h^G^@^@^@<E9>p^@^@^@<E9>@<FF><FF><FF><FF>%ʺ!^@h^K^@^@
これがless /bin/ls
私のシステムに現れるもので、<BB>
印刷できない文字のさまざまな表現^F
です。^@
デフォルトでは、これらの制御文字を端末に送信する代わりに表示するため、望ましくない結果が生じる可能性があります。
ここで奇妙なことは、実際にANSIカラーエスケープシーケンスをサポートしていることです。これらのシーケンスを端末に送信するフラグがless
付属していますが、他の制御文字は抑制されるためです。-R
ログファイルにカラーエスケープコードのみが含まれている場合は、バイナリファイルとして処理しないでください。
一方、cat
生データを端末にダンプし、何が起こるのか全く気にしないでください。ファイルの内容によっては、端末フォントが線画文字に変わる場合があります。
答え2
catはデフォルトでは何らかの方法で処理せず、すべての入力(標準入力を含む)を画面にダンプします。
less はポケットベルです。つまり、テキストファイルを処理するように設計されています。