MyFile
라는 이름의 텍스트가 포함된 파일을 가져와서 동일한 디렉터리에 있는 파일 로 압축하려고 합니다 .MyFileComp
나는 시도했다:
gzip MyFile | touch MyFileComp
gzip MyFile >> MyFileComp
두 명령 모두 create MyFileComp
이지만 파일을 열면 비어 있습니다. 파일의 압축을 풀려고 하면 알 수 없는 접미사가 표시됩니다. 이것이 무엇을 의미하는지 모르겠습니다.
어떤 도움이라도 대단히 감사하겠습니다. 감사해요
답변1
압축을 제대로 안하신 것 같네요. -c를 사용하여 stdout으로 보내고 끝에 ".gz"를 추가합니다. 이것이 문제인가요?
gzip -c MyFile > MyFileComp.gz
gzip -d MyFileComp.gz
답변2
기본적으로 이 도구는 명령줄에 지정된 이름의 파일을 압축할 때 gzip
파일 이름 접미사가 붙은 파일을 생성합니다 . .gz
마찬가지로 uncompress a file 을 사용하여 gzip -d
명령줄에 압축된 파일 이름을 지정 하면 .gz
파일 이름 끝에 접미사가 있을 것으로 예상하고 해당 접미사를 제거하여 압축되지 않은 데이터의 파일 이름을 만듭니다.
이 동작을 따르지 않으려는 경우, 즉 압축 파일에 파일 이름 접미사를 전혀 사용하지 않고 를 사용하여 해당 파일의 압축을 풀고 싶다면 gzip -d
명령줄에서 파일 이름을 지정할 수 없습니다 gzip
. 대신 gzip
표준 입력에서 읽고 표준 출력에 쓰겠습니다.
압축:
gzip <my_file >my_compressed_file
압축을 푼다:
gzip -d <my_compressed_file >my_file
기술적으로는 -c
위의 두 명령과 함께 사용해야 하지만 gzip
명령줄에 파일 이름이 지정되지 않았기 때문에 어쨌든 stdin에서 읽고 stdout에 쓰고 해당 스트림은 제공된 대로 리디렉션됩니다.
또한 위의 두 명령의 경우 소스 데이터(압축 명령의 소스인지 압축 해제 명령의 소스인지 여부)는 그대로 유지되는 반면, gzip
도구를 평소와 같이 사용하는 경우에는 명령줄에서는 일반적으로 -k
( ) 옵션을 사용하지 않으면 소스 파일이 삭제됩니다.--keep
주문
gzip MyFile | touch MyFileComp
이 두 명령을 서로 gzip MyFile
독립적 으로 실행하십시오. touch MyFileComp
파이프에는 데이터가 기록되지 않으며 gzip
, 데이터가 있더라도 touch
읽혀지지 않습니다. 결국 압축된 파일이 호출 MyFile.gz
되고 빈 파일이 호출됩니다 MyFileComp
(파일이 아직 존재하지 않는다고 가정). 파일이 MyFile
삭제됩니다.
주문
gzip MyFile >> MyFileComp
이전과 동일하게 압축하고 MyFile
표준 출력 에 아무 것도 기록하지 않으므로 빈 파일이 생성됩니다 (아직 존재하지 않는다고 가정). 파일이 삭제됩니다.MyFile.gz
gzip
MyFileComp
MyFile
답변3
기본적으로 원하는 파일 이름으로 리디렉션할 수 있도록 gzip -c
압축됩니다 . STDOUT
당신이 찾고 있는 반전은 또는 을 강제로 시도하더라도 (1.6 기준) 없이 거부되기 zcat
때문 입니다.gzip -d
gunzip
-f
.gz
gzip -c MyFile > MyFileComp
zcat MyFileComp > MyFile
경고하다: MyFile
이미 존재하는 경우 덮어쓰게 됩니다.