Linux에서 "-" 기호는 무엇을 의미합니까? [복사]

Linux에서 "-" 기호는 무엇을 의미합니까? [복사]

나는 이 기호를 항상 보지만 내 책에서는 아직 그 의미를 명확히 밝히지 않았습니다. 매뉴얼 페이지나 웹 검색 모두 이에 대해 명확하게 설명하지 않습니다. 처음에는 I/O 기호인 줄 알았으나 사용하려고 했더니 작동하지 않았습니다.

예를 들어 patchMan and Info 문서에는 다음과 같이 나와 있습니다.

"-i PATCHFILE" 또는 "--input=PATCHFILE" 옵션을 사용하여 패치를 읽을 위치를 지정할 수도 있습니다. PATCHFILE을 지정하지 않거나 PATCHFILE이 인 경우 '-'"path"는 표준 입력(예: "diff" 출력)에서 패치를 읽습니다.

"-" 기호를 볼 때마다 거의 항상 (어느 시점에서) 표준 입력에 대한 참조가 따라옵니다.

내가 여기서 무엇을 놓치고 있는 걸까요? 기호는 표준 입력을 나타냅니까? Bash 컨텍스트에서 "-"는 무엇을 의미합니까?

답변1

-Bash는 매개변수를 전혀 해석하지 않습니다. 이는 단지 많은 프로그램에서 구현하는 관례일 뿐입니다.

일반적으로 프로그램이 파일을 정상적으로 처리할 때 이것을 볼 수 있으므로 파일을 처리하려고 할 때 사용할 파일 이름이 아닌 일부 텍스트 문자열을 기대합니다.stdin/stdout대신에.

-표준이기 때문에 의도적으로 이름이 지정된 파일이 있는 시스템을 접할 가능성은 거의 없습니다.옵션 문자유닉스에서. 그러나 실제로는 파일 이름을 지정하는 것이 합법적이므로 -(더 일반적으로는 어떤 파일이든)시작with — 매개변수를 -이해하는 많은 프로그램-반품--"처리 중지 옵션"을 의미하는 옵션을 이해합니다 . 이를 통해 다음과 같은 파일 삭제와 같은 작업을 수행할 수 있습니다 -.

$ rm -- -

답변2

내가 아는 한 이것은 bash 구성이 아니라 규칙입니다. 응용 프로그램 -은 실제 파일 대신 stdin에서 읽거나 stdout에 쓰거나 /dev/stdin /dev/stdout에 쓰는 것을 나타내는 데 사용됩니다 .

관련 정보