유닉스 도구 : 파일의 이름을 빼면 어떨까요? / Unix 도구는

항상 궁금합니다 : 대부분의 GNU / Unix 도구는 “빼기”형식의 옵션을 취하며 때로는 인수가 따릅니다. 빼기 이름을 가진 파일이 있으면 어떻게합니까?

$ 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.

이것은 단지 호기심에서 벗어난 것입니다. 이에 대한 유스 케이스가 없습니다.



답변

라는 이름의 파일을 제거하려면 -x, 사용 rm -- -x( --수단 옵션의 끝) 또는 rm ./-x.


답변

인터뷰 설정에서 이러한 유형의 질문을하는 것이 일반적입니다. 대시가있는 파일을 처리하는 일반적인 방법은 다음 중 하나입니다.

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


답변

유닉스의 일반적인 질문입니다. 주요 방법은 파일의 전체 경로 이름을 지정하는 것이므로 파일 앞에 대시가 없습니다.

$ 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


답변

당신은 사용해야합니다

  rm -- <filename>

전의:

  rm -- -f


답변