rm이 기본적으로 재귀적으로 작동하지 않는 이유는 무엇입니까?

rm이 기본적으로 재귀적으로 작동하지 않는 이유는 무엇입니까?

나는 rm 명령이 경로가 파일인지 폴더인지 자동으로 확인하지 않고 필요한 경우 기본적으로 재귀적으로 삭제하지 않는 이유를 알아내려고 친구와 토론을 하고 있었습니다. 상당히 일반적인 작업의 경우 "-r"은 필요하지 않습니다. 이에 대한 별칭을 설정할 수 있다는 것을 알고 있습니다. 하지만 내가 정말로 원하는 것은 그 이유를 아는 것입니다(타당한 이유가 있다고 생각하지만 단지 그것을 모르겠습니다).

답변1

진짜 이유는 작가에게 물어봐야 한다. 제가 말씀드릴 수 있는 것은 이것이 매우 좋은 습관이라는 것입니다.

~에서철도 공기 제동에 관한 Wikipedia 기사:

웨스팅하우스의 시스템은 공기압을 이용해 각 차량의 가스탱크(공기탱크)를 팽창시킨다. 공기압이 가득 차면 각 차량에 브레이크를 해제하라는 신호가 전달됩니다. 공기압의 감소 또는 손실은 각 차량에 탱크의 압축 공기를 사용하여 제동하라는 신호를 보냅니다.

이는 기본 상태가 브레이크가 적용되고 있음을 의미합니다. 당신은 그것을 풀고 기차를 잠재적으로 위험한 상태에 놓기 위해 노력해야 합니다.

물론 rm애초에 왜 두 가지 모드(재귀 및 비재귀)가 있는지는 설명하지 않습니다. 어쩌면 그것이 당신이 요구하는 것일 수도 있습니다. 그러나 현실적으로는 보다 안전한 기본값을 설정하는 것이 옳은 일입니다.

답변2

두 번째 가정은 재귀 패턴은 나중에 생각해야 한다는 것입니다.

결국 평범한 것도 rm안전하지 않습니다. 그리고 반드시 균일할 필요는 없습니다더 안전한, 서로 다른 문서가 똑같이 중요하거나 대체 불가능한 것은 아니기 때문입니다. 무엇을 삭제하시겠습니까? Github에서 복제된 디렉터리( 플래그 -r유무 /boot/vmlinuz*에 관계 없음 ) -r.

당신은 rm발에 총을 맞았습니다. 하지만 rm -r눈에 보이는 모든 발을 쏘면 운이 좋으면 그 발 중 어느 것도 자신의 발이 아닙니다.

그리고 rm -rplain 과 완전히 다른 작업을 수행하려면 rm트리 아래의 모든 파일을 연결 해제(2)한 다음 빈 디렉터리를 rmdir(2)해야 합니다.

답변3

A는 filea와 다르며, a,와도 같지 않습니다 directory.block or character device filepipesemaphore

rm파일 삭제(일반 파일, 장치 파일, 파이프 파일 포함)

rmdir디렉토리를 삭제합니다.

rm- 디렉터리는 기본적으로 삭제되지 않습니다.

rmdir- 비어 있지 않은 디렉터리는 기본적으로 삭제되지 않습니다.

rm -d- rm이 디렉터리와 파일을 허용하도록 만들었지만 빈 디렉터리(예: )만 제거합니다 rmdir.

rm -r- 다시 트리 위로 이동하면 트리의 맨 아래로 재귀하여 파일과 디렉터리를 삭제합니다. 파일을 먼저 삭제하므로 파일을 삭제하려고 하면 디렉터리가 비어 있게 됩니다.

rmdir -p a/b/c디렉터리와 해당 상위 디렉터리를 삭제합니다. 단, 디렉터리가 비어 있는 경우에만 해당됩니다. 주어진 디렉토리 구조 a/b/c then rmdir -p a/b/cand는 비어 있지 않은 디렉토리를 삭제한다는 rm -r a점을 제외하면 거의 반대 명령입니다 .rm -rrmdir

이는 우리에게 매우 유연한 시스템을 제공합니다.

자신만의 별칭을 만드는 데 방해가 되는 것은 없습니다.

`AliasZapIt='rm -r $*'

mkdir -p a/b/c ; touch a/b/c/fc1
ZapIt a

a/b/c/fc1 a/b/ca/b 및 a가 삭제됩니다.

관련 정보