rm 및 권장 사용법에 대한 질문--
두 개의 파일 -i
과 xx
. 내가 그들을 제거하려고하면
$ rm *
나는 얻다:
rm: remove regular file `xx'? n
그리고 에서 설명했듯이"-"처럼 이름이 하이픈으로만 보이는 파일을 Linux에서 어떻게 제거합니까?이 문제를 해결하는 방법은 다음과 같습니다.
$ rm -- *
분명히 문제는 이름이 불려지 -rf
거나 유사한 경우 훨씬 더 악화될 수 있습니다.
그래서 내 질문은 다음과 같습니다
불쾌한 놀라움이나 공격을 피하기 위해 확장 가능한 명령보다 체계적으로 명령을
--
사용해야 합니까 ?rm
제가 이것을 묻는 이유는 얼마 전에 이 rm
문제를 배웠다가 잊어버리고 최근까지 팀원이 다시 가져왔기 때문입니다. 그러나 나는 그런 의미에서 어떤 권장 사항도 본 적이 없으며 너무 위험하므로 더 많이 제시해야 하는지 궁금합니다. (아마도 다른 명령도) --
사용할 때마다 일종의 스크립팅 및 콘솔 패턴을 사용해야 합니까 ?rm
답변1
완벽한 세상에서는 그렇습니다. 체계적으로 --
. 그러나 우리 모두는 rm
체계적으로 를 입력하지 않고 명령을 사용하는 방법을 배웠으며 --
, 이를 입력하려면 세 번의 추가 키 입력이 필요하므로 그런 일이 발생하는 것을 볼 수 없습니다. 게다가 --
옵션을 종료하는 관례가 항상 존재하는 것은 아닙니다(이것이 많은 사람들이 를 사용하는 방법을 배웠을 때 이에 대해 배우지 않은 이유입니다 rm
).
즉, rm
쉘 스크립트에서 (및 기타 명령)을 사용할 때는 항상 방어적으로 프로그래밍해야 합니다. 예를 들면 다음과 같습니다.
rm "$1" # Remove the file named in the first command line argument
안전하지 않으며 이어야 합니다 rm -- "$1"
. 하지만,
rm "/var/spool/foo/$thatfile"
의 내용으로 인해 인수가 잘못 해석 $thatfile
될 수 없으므로 안전합니다.rm
특정 예( )에서는 일반적으로 안전한 해결 방법으로 rm *
사용합니다 .rm ./*