[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에 쓰려는 것으로 해석 합니다. 쉘에는 특별한 것이 없습니다.
답변
답변
-
각 명령이 의미하는 바를 정확히 의미합니다. 몇 가지 일반적인 규칙이 있으며 다른 답변에서 대부분의 예를 보았지만 100 % 보편적 인 규칙은 없습니다.
[정보] 아무것도 마법이 -
문자까지 쉘에 관한 한 (점을 제외 쉘 자체, 그리고 일부는 같은 명령 내장 cd
하고 echo
, 그것은 기존의 방법으로 사용). 일부 문자가 같은 \
, '
그리고 "
, 있는 나타나는 곳마다 특별한 의미를 가진 “마법”. 이것은 “쉘 메타 문자”입니다. -
그렇지 않습니다.
주어진 명령을 사용하는 방법을 참조하려면 -
, 그 명령에 대한 문서를 읽어 .
답변
마술은 컨벤션에 있습니다. 수천 년 동안 사람들은 옵션을 인수와 구별하기 위해 ‘-‘를 사용했으며 파일 이름에 ‘-‘를 사용하여 stdin 또는 stdout을 적절하게 의미했습니다. 컨벤션의 힘을 과소 평가하지 마십시오!
답변
프로그램의 표준 입력 스트림을 사용하는 것을 의미합니다.
의 경우 cd
다른 것을 의미합니다. 이전 작업 디렉토리로 변경합니다.