Logs
在讀取二進製文件方面,less 和 cat 有什麼區別?
當我嘗試使用 讀取文件
/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.
less
我知道 systemd 以二進制格式保存它的日誌,我們需要特殊的工具來檢查它們,但是和之間有什麼區別cat
?
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
並且^@
是不可列印字元的各種表示形式。預設情況下,它會顯示這樣的控製字元,而不是將它們發送到終端,這可能會產生不良後果。奇怪的是,它
less
實際上支持 ANSI 顏色轉義序列,因為它使用-R
標誌將這些轉義序列發送到終端,但抑制了其他控製字元。如果您的日誌文件只包含顏色轉義碼,它可能不應該將其視為二進製文件。另一方面,
cat
只是將原始數據轉儲到終端,根本不關心發生了什麼。根據文件的內容,它可能例如將您的終端字型更改為畫線字元。