"less"는 gzip 파일의 압축을 자동으로 풀지 않습니다.

"less"는 gzip 파일의 압축을 자동으로 풀지 않습니다.

Fedora/Redhat/CentOS에서 이 less명령은 마법처럼 gzip으로 압축된 파일을 감지하고 즉시 압축을 푸는 것처럼 보입니다. 따라서 다음을 수행할 수 있습니다.

less my_stuff.csv.gz

방금 우분투 11에서는 작동하지 않는 것으로 나타났습니다.

less my_stuff.csv.gz
"my_stuff.csv.gz" may be a binary file.  See it anyway? 

CentOS VM을 조사하여 작동하게 만드는 쉘 별칭 마법이 있는지 확인했지만 없는 것 같습니다. CentOS 바이너리에 gzip 지원이 내장되어 있나요?

이것이 CentOS에서 어떻게 작동하는지 및/또는 Ubuntu에서 작동하도록 만드는 방법을 아는 사람이 있다면 감사하겠습니다.

난 내가 할 수 있다는 걸 알아요

zcat my_stuff.csv.gz | less

하지만 그렇게 하면 키보드가 더 빨리 닳게 될 거예요.

답변1

less기본적으로 그렇게 하지 마십시오. 그러나 ~/.bashrc기본 동작을 변경하는 기본 행이 있습니다.

[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

이 줄을 제거하거나 주석을 달지 마십시오.
이를 사용하면 다음과 같이 알지 못하는 사이에 압축된 파일과 압축되지 않은 파일을 페이지로 이동할 수 있습니다.

less /var/log/dpkg.log*

로그 중 일부는 압축될 수 있고 일부는 압축되지 않은 경우가 있습니다.

를 통해 액세스한 루트 계정의 경우 sudo동일한 작업을 수행할 수 없지만 두 가지 해결 방법이 있습니다.

  1. sudo zless file*
  2. sudo -E less file*

내가 사용한 첫 번째 경우에는 zless압축되지 않은 파일에서도 작동합니다.
두 번째에는 환경 변수를 보존하고 예상한 대로 작업을 줄이는 -E옵션을 추가했습니다.sudo

답변2

더 적은gzip으로 압축된 파일을 읽을 수 없습니다. 매뉴얼 페이지에서 확인할 수 있습니다. Ubuntu와 대부분의 배포판에는 기본적으로 다음과 같은 스크립트가 설치되어 있습니다.zless, 설명대로 작동합니다.

따라서 대답은 다음을 사용하는 것입니다.

zless my_stuff.csv.gz

Fedora와 Ubuntu의 차이점은 Fedora가 환경 변수를 설정한다는 것입니다덜 개방lesspipe를 통해 인수를 강제하려면 다음을 수행하십시오.

echo $LESSOPEN
||/usr/bin/lesspipe.sh %s

이 명령은 Ubuntu에서는 작동하지 않습니다.

관련 정보