[linux] 명령 줄 매개 변수에서 “-“(대시)의 마법은 무엇입니까?

예 :

  • ISO 이미지를 만들고 CD에 직접 굽습니다.

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • 이전 디렉토리로 변경하십시오.

    cd -

  • 포트 12345에서 수신하고 전송 된 데이터를 untar하십시오.

    nc -l -p 12345 | tar xvzf -

대시의 목적은 무엇이며 어떻게 사용합니까?



답변

명령 -끝에 벌거 벗은 것을 의미하는 경우 tar파일을 사용하려는 많은 명령에서 일반적입니다.

실제 파일 이름이 아닌 표준 입력 또는 출력을 지정할 수 있습니다 .

이것이 첫 번째와 세 번째 예의 경우입니다. 예를 cdrecord들어이 명령은 표준 입력 (에서 생성 한 ISO 이미지 스트림 mkisofs)을 가져 와서 /dev/dvdrw.

cd명령을 사용하면 디렉토리를 변경할 때마다 가져온 디렉토리가 저장됩니다. 당신이 경우에 cd특별한와 -“디렉토리 이름”, 대신 진짜 하나의 기억 디렉토리를 사용합니다. 이를 사용하여 두 디렉토리 사이를 매우 빠르게 전환 할 수 있습니다.

다른 명령은 다른 특수 값 -으로 취급 될 수 있습니다 .


답변

마법이 아닙니다. 일부 명령 -은 사용자가 stdin에서 읽거나 stdout에 쓰려는 것으로 해석 합니다. 쉘에는 특별한 것이 없습니다.


답변

나에 리디렉션 stdin또는 stdout.

참조 : http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2


답변

-각 명령이 의미하는 바를 정확히 의미합니다. 몇 가지 일반적인 규칙이 있으며 다른 답변에서 대부분의 예를 보았지만 100 % 보편적 인 규칙은 없습니다.

[정보] 아무것도 마법이 -문자까지 쉘에 관한 한 (점을 제외 쉘 자체, 그리고 일부는 같은 명령 내장 cd하고 echo, 그것은 기존의 방법으로 사용). 일부 문자가 같은 \, '그리고 ", 있는 나타나는 곳마다 특별한 의미를 가진 “마법”. 이것은 “쉘 메타 문자”입니다. -그렇지 않습니다.

주어진 명령을 사용하는 방법을 참조하려면 -, 그 명령에 대한 문서를 읽어 .


답변

마술은 컨벤션에 있습니다. 수천 년 동안 사람들은 옵션을 인수와 구별하기 위해 ‘-‘를 사용했으며 파일 이름에 ‘-‘를 사용하여 stdin 또는 stdout을 적절하게 의미했습니다. 컨벤션의 힘을 과소 평가하지 마십시오!


답변

프로그램의 표준 입력 스트림을 사용하는 것을 의미합니다.

의 경우 cd다른 것을 의미합니다. 이전 작업 디렉토리로 변경합니다.


답변