다음을 사용하여 파일을 읽으려고 할 때 /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는 호출기입니다. 즉, 텍스트 파일을 처리하도록 설계되었습니다.