명령 끝의 대시 "-"는 무엇을 의미합니까?

명령 끝의 대시 "-"는 무엇을 의미합니까?

다음 명령을 내리세요:

gzip -dc /cdrom/cdrom0/file.tar.gz | tar xvf –

-명령이 끝나면 무엇을 의미합니까? 일종의 자리표시자인가요?

답변1

이 경우에는 "표준 입력"을 의미합니다. tar예를 들어 일부 소프트웨어에서는 파일 인수가 필요하고 stdin을 사용해야 할 때 이를 사용합니다. 이는 쉘 구성이 아니며 사용 중인 프로그램에 따라 다릅니다. 의심스러운 경우 맨페이지를 확인하세요!

이 경우 표준 입력은 option 에 대한 인수입니다 -f. 지원되지 않는 경우 또는 같은 것을 -사용할 수 있습니다 (후자는 다양한 unice에서 널리 지원됩니다).tar xvf /proc/self/fd/0tar 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명시적으로 호출할 필요가 없습니다.

관련 정보