rm
재귀는 아래로만 제대로 작동합니까?
rm -r x y
삭제 x
및 y
그 밖에 부모 또는 아무것도를하고 그 안에서 모든 것을 (그들은 디렉토리에있는 경우),하지만.
실행 중 : sudo rm -R *.QTFS
현재 디렉토리 및 해당 하위의 모든 * .QTFS 파일을 삭제합니까?
아뇨라는 이름의 모든 파일이 삭제됩니다 *.QTFS
, 재귀 적으로 모든 파일 내부 디렉토리 라고 *.QTFS
, 그 디렉토리 자체. 다른 삭제 동작을 원하면을 사용하십시오 find -delete
.
에 의해 표시되는 현재 디렉토리 ls -lha
에는 더 나은 단어가 없기 때문에 포함 .
및 ..
링크 가 포함되어 있으므로 디렉토리 트리에서 재귀가 위를 따르지 않는 이유는 무엇입니까? RM 앱에서 인공 제한이 있나요, 또는 .
하고 ..
실제 일하지?
의 인위적인 한도입니다 rm
.
인공적인 것은 아니지만 실제로 작동 할 수있는 유일한 방법입니다. rm
상위 ..
링크를 따를 경우 , 모든 링크를 다시 따라 가면 rm -r
시스템의 모든 파일이 제거됩니다 . 컨텐츠를 나열 할 때 각 디렉토리 의 및 항목을 보고 해당 이유로 명시 적으로 무시합니다...
/
rm
..
.
실제로 시도해 볼 수 있습니다. 실행 rm -r .
및 대부분의 rm
구현은 오류를 명시 적으로보고하여 작동을 거부합니다.
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(그 메시지 는 GNU에서 온rm
것이고 다른 것들은 비슷합니다). 명시 적 인수가 아닌 내재적으로 이러한 항목을 발견하면 해당 항목을 무시하고 계속 진행합니다. 이 동작은 POSIX에 필요합니다 . GNU rm
와 많은 BSD에서 fts_read
계층-통역 함수 패밀리에 의해 자동으로 제공됩니다 .
이나 .
와 ..
실제 일하지?
.
하고 ..
있습니다 일반적으로 그 파일 시스템 별이지만, 실제 디렉토리 항목. 거의 항상 모든 사용자 코드에 대한 실제 항목 인 것처럼 표시됩니다. 많은 소프트웨어는 (가 아니라 rm
) 런 어웨이 또는 바람직하지 않은 재귀를 포착하거나 방지하기 위해 동작을 특수하게 보여줍니다.