유닉스 도구: 파일 이름이 마이너스로 되어 있다면 어떻게 될까요?

유닉스 도구: 파일 이름이 마이너스로 되어 있다면 어떻게 될까요?

저는 항상 궁금합니다. 대부분의 GNU/Unix 도구는 "minus Something" 형식의 옵션을 취하고 때로는 인수가 뒤따릅니다. 마이너스라는 이름의 파일이 있으면 어떻게 될까요?

$ ls
-f
$ rm -f
$ ls
-f
$ mv -f abc
mv: missing destination file operand after `abc'
Try `mv --help' for more information.
$ cat -f
cat: invalid option -- 'f'
Try `cat --help' for more information.

또는

$ ls
-ohello.c
$ gcc -ohello -ohello.c
gcc: fatal error: no input files
compilation terminated.

이것은 단지 호기심에서 나온 것입니다. 나는 이것에 대한 사용 사례가 없습니다.

답변1

이름이 지정된 파일을 제거하려면 ( 옵션의 끝을 의미함) 또는 를 -x사용하십시오 .rm -- -x--rm ./-x

답변2

면접에서 이런 유형의 질문을 하는 것은 꽤 흔한 일입니다. 대시를 사용하여 파일을 처리하는 일반적인 방법은 다음 중 하나입니다.

$ rm -- -f
$ rm ./-f

답변3

유닉스에서 자주 묻는 질문입니다. 주요 방법은 파일에 전체 경로 이름을 지정하여 파일 앞에 대시가 없도록 하는 것입니다.

$ rm -file.txt
unknown option -l

$ rm ./-file.txt    #No problem!
$ rm $PWD/-file.txt #Same thing

일부명령에서는 대시 자체(또는 이중 대시)를 사용하여 옵션을 끝낼 수 있습니다. 그러나 이는 모든 명령에 반드시 적용되는 것은 아니며 다른 시스템의 동일한 명령에도 해당됩니다.

$ rm -- -file.txt   #Works on Linux but not on some Unix systems

답변4

당신은 사용해야합니다

  rm -- <filename>

전:

  rm -- -f

관련 정보