중복 가능성:
"--"(이중 대시)은(는) 무슨 뜻인가요?
누구든지 다음 사항을 설명할 수 있습니까?
"-xyz"라는 파일이 있습니다. 명령줄을 사용하여 파일을 삭제하거나 이동하려고 하면 이동할 수 없습니다. 나는 다음과 같은 것들을 시도했습니다:
[rahul@srv100 ~]# ls -lrt -- "-xyz"
-rw-r--r-- 1 rahul rahul 0 Dec 19 08:06 -xyz
[rahul@srv100 ~]# mv "-xyz" xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv \-xyz xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv -\xyz xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv '-xyz' xyz
mv: invalid option -- x
Try `mv --help' for more information.
마지막으로 Winscp를 사용하여 파일 이름을 바꾸고 여러 방법을 시도한 후 옵션을 얻었고 작동합니다.
mv -- '-xyz' xyz
"--"이 도움이 되기를 바랍니다. 다음 파일/디렉토리를 만들었습니다.
mkdir -- --abc
touch -- -xyz
그래서 내 질문은 bash에서 "--"가 무엇입니까? 설명 해주십시오.
답변1
다른 사람들이 이미 언급했듯이 --
옵션과 인수를 구분하는 데 사용됩니다. 프로그램을 실행하고 인수를 지정하면 프로그램은 지정된 인수가 명령줄 옵션으로 해석되어야 하는지 아니면 인수로 해석되어야 하는지 구분할 수 없습니다. 이것이 바로 옵션 접두사 -
/ --
or 가 Windows에 도입된 이유입니다 /
. 즉 -rf
, --help
또는/?
이와 같은 접두사 또는 해석할 수 있는 다른 특수 이름으로 시작하는 파일이 있을 수 있으므로 --
명령줄 옵션을 일반 인수와 분리하는 기능이 도입되었습니다. 즉, 뒤에 오는 각 인수는 --
명령줄 옵션으로 처리되지 않지만 매개변수로만 사용됩니다.getopt (1)
는 구분 기호 지원과 같은 매개변수 구문 분석을 위한 표준 솔루션입니다. --
이는 이를 사용하는 모든 프로그램이 getopt
자동으로 --
구분 기호를 지원함을 의미합니다.
특수 문자로 시작하는 파일을 처리하려는 경우 특수 문자로 시작하지 않으므로 파일 앞에 추가 -
할 수도 있습니다. 따라서 명령줄 옵션으로 해석되지 않습니다. 예를 들어 다음과 같습니다../
-
mkdir ./--abc
답변2
이는 더 이상 명령 옵션이 허용되지 않음을 명령에 알리는 데 사용됩니다.
그래서
rm ---abc
이는 abc에서 -를 무시한다는 의미입니다.
자세한 내용은 다음을 참조하세요. http://tldp.org/LDP/abs/html/special-chars.html
답변3
추가 명령줄 인수를 옵션으로 해석하지 않도록 개별 명령에 지시합니다.