실수로 디렉터리를 삭제하는 것을 방지합니다. 옵션으로 별칭을 만드시겠습니까?

실수로 디렉터리를 삭제하는 것을 방지합니다. 옵션으로 별칭을 만드시겠습니까?

실수로 파일이 삭제되는 것을 방지하기 위해 별칭을 사용하고 있으며 디렉터리에서도 비슷한 작업을 수행하고 싶습니다.

파일의 경우 다음을 내 파일에 추가했습니다 .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.

관련 정보