실수로 파일이 삭제되는 것을 방지하기 위해 별칭을 사용하고 있으며 디렉터리에서도 비슷한 작업을 수행하고 싶습니다.
파일의 경우 다음을 내 파일에 추가했습니다 .bashrc
.
alias rm="rm -i"
또한 실수로 디렉토리를 삭제하는 것을 방지하고 싶습니다. 다음을 시도했습니다.
alias rm -rf="rm -rfi"
이:
alias "rm -rf"="rm -rfi"
그러나 둘 다 작동하지 않습니다. 어떤 제안이 있으십니까?
답변1
Bash(1)에서:
별명
[...] 각 단순 명령의 첫 번째 단어가 인용되지 않은 경우 별칭 [...] 문자 [...]가 있는지 확인하고 위에 나열된 쉘 메타 문자 또는 인용 문자가 표시되지 않을 수 있는지 확인합니다. 별칭.
따라서 별칭은 따옴표 없이 단어만 될 수 있습니다.
또한 rm 호출에 -f
및 를 모두 사용하는 -i
것은 다소 모순적이므로(rm(1)) 의미가 없습니다.
-f, --force는 존재하지 않는 파일과 매개변수를 무시합니다.메시지를 표시하지 않음
-나 삭제하기 전에 매번 메시지가 표시됩니다
하지만 그건 좋은 일입니다. rm
전화를 걸더라도 별칭이 실제로 사용됩니다 rm -r
. 왜냐하면 첫 번째 단어 - rm
- 에 별칭 - 가 있어서 rm -i
대체되기 때문입니다!
$ alias rm
bash: alias: rm: not found
$ alias rm='rm -i'
$ mkdir test
$ rm -r test
rm: remove directory ‘test’?
/편집: Raphael Ahrens는 또한 주석에서 -f
디렉터리를 삭제하기 위해 (force)를 사용할 필요가 없으며 (이미 내 예에서 볼 수 있듯이) -r
(재귀)이면 충분하다고 언급했습니다.
-r, -R, --recursive 디렉터리와 해당 내용을 반복적으로 삭제합니다.
답변2
별칭은 rm
위험합니다. 이러한 별칭이 설정되지 않은 상자에 있으면 약간의 피해를 입히는 것입니다.
"실수로 디렉토리를 삭제하는 것을 방지"하는 것이 -r
이 플래그의 목적입니다.
이와 같은 명령을 무시하지 마십시오. 스크립트가 어떤 가정을 할지 결코 알 수 없습니다. 필요한 경우 이 이름 이외의 이름을 선택하고 rm
, 그렇지 않으면 작업 흐름에서 무언가를 변경하여 작동하지 않도록 하십시오 rm -rf
.