다음 명령을 내리세요:
gzip -dc /cdrom/cdrom0/file.tar.gz | tar xvf –
-
명령이 끝나면 무엇을 의미합니까? 일종의 자리표시자인가요?
답변1
이 경우에는 "표준 입력"을 의미합니다. tar
예를 들어 일부 소프트웨어에서는 파일 인수가 필요하고 stdin을 사용해야 할 때 이를 사용합니다. 이는 쉘 구성이 아니며 사용 중인 프로그램에 따라 다릅니다. 의심스러운 경우 맨페이지를 확인하세요!
이 경우 표준 입력은 option 에 대한 인수입니다 -f
. 지원되지 않는 경우 또는 같은 것을 -
사용할 수 있습니다 (후자는 다양한 unice에서 널리 지원됩니다).tar xvf /proc/self/fd/0
tar xvf /dev/stdin
보편적인 "표준 입력"을 나타내기 위해 여기에 의존하지 마십시오. 쉘에 의해 해석되지 않기 때문에 각 프로그램은 원하는 대로 무엇이든 할 수 있습니다. 어떤 경우에는 이것이 표준입니다.산출또는 완전히 다른 것: su
"로그인 쉘 실행"을 의미합니다. 다른 경우에는 전혀 해석되지 않습니다. 근육 기억으로 인해 -
내가 사용했던 일부 프로그램의 일부 버전은 대시를 이해하지 못했기 때문에 꽤 많은 파일을 만들었습니다 .
답변2
이 경우 -
Linux를 실행한다고 가정하면 사실상 쓸모가 없습니다.
GNU tar(Linux 버전)는 기본적으로 표준 입력의 입력을 허용합니다. 당신이 그렇게한다면아니요이 동작을 원하고 파일 이름을 명령줄 인수로 전달하려면 플래그를 지정해야 합니다 f
.
tar xf filename
그래서 이것은 다음과 관련이 있습니다
tar x < filename
또는 귀하의 예와 같이 입력이 압축된 경우:
gzip -dc filename | tar x
여기에 플래그를 지정하는 것은 전혀 의미가 없지만 f
플래그가 지정되었으므로 -
표준 입력에서 읽고 싶다는 것을 나타내기 위해 파일 이름을 제공해야 합니다(다른 답변 참조). 반복하자면, 이것은 중복되고 약간 이상합니다.
gzip
추가적으로 위의 줄은 GNU tar가 플래그를 지정함으로써 스스로 입력을 스트리밍하도록 지시할 수 있기 때문에 단순화될 수 있습니다 z
:
tar xfz filename
– gzip
명시적으로 호출할 필요가 없습니다.