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

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

다음 명령이 주어졌습니다.

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

-명령 끝의 은(는) 무슨 뜻인가요 ? 일종의 자리표시자인가요?

답변1

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

이 경우 표준 입력은 -f옵션에 대한 인수입니다. 지원되지 않는 경우에는 또는 -같은 것을 사용하여 벗어날 수 있습니다 (후자는 다양한 유니스에서 널리 지원됩니다).tar xvf /proc/self/fd/0tar xvf /dev/stdin

보편적으로 '표준 입력'을 의미하기 위해 이것을 의존하지 마십시오. 쉘에 의해 해석되지 않기 때문에 모든 프로그램은 원하는 대로 이를 자유롭게 처리할 수 있습니다. 어떤 경우에는 표준입니다.산출또는 완전히 다른 것: su'로그인 쉘 시작'을 의미합니다. 다른 경우에는 전혀 해석되지 않습니다. 머슬 메모리 -로 인해 내가 사용했던 일부 프로그램의 일부 버전이 대시를 이해하지 못했기 때문에 이름이 지정된 파일을 꽤 많이 만들었습니다 .

답변2

이 경우 -Linux를 실행한다고 가정하면 실제로는 쓸모가 없습니다.

GNU tar(Linux 버전)는 기본적으로 표준 입력의 입력을 받아들입니다. 만약 당신이~ 아니다이 동작을 원하고 파일 이름을 명령줄 인수로 전달하려면 플래그를 지정해야 합니다 f.

tar xf filename

그래서 이것은 다음과 같습니다

tar x < filename

또는 귀하의 예와 같이 입력이 gzip으로 압축된 경우:

gzip -dc filename | tar x

여기에 플래그를 지정하는 것은 전혀 의미가 없지만 f지정되었으므로 -표준 입력에서 읽고 싶다는 것을 나타내기 위해 파일 이름을 제공해야 합니다(다른 답변 참조). 반복하자면, 이것은 중복되고 약간 이상합니다.

gzip게다가 위의 줄은 플래그를 지정하여 GNU tar가 자체적으로 입력을 스트리밍하도록 지시할 수 있으므로 단순화될 수 있습니다 z.

tar xfz filename

gzip명시적으로 호출할 필요가 없습니다.

관련 정보