이 두 파일은 Office 2011의 제품이며 "Contents" 디렉터리가 삭제되는 것을 방지합니다. 어떻게 제거하나요?
sh-3.2# ls -l -a
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 14 23:40 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 1
sh-3.2# cd Contents
sh-3.2# ls -l -a
total 0
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 .
drwx------+ 15 Beef staff 480 Jan 14 23:32 ..
구체적으로는 위의 "."과 콘텐츠 디렉터리의 ".." 파일입니다. 저는 Mac 터미널에서 bash 쉘을 사용하고 있습니다. 뿌리를 내렸어요.
감사해요!
sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 15 00:19 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 160 Dec 28 12:09 Lily 1228
drwxrwxrwx 29 Beef staff 928 Jan 3 21:48 Old Dell Laptop
lrwxr-xr-x 1 Beef staff 29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@ 1 Beef staff 1554944 Jan 8 2019 SanDisk Flashback.pdf
drwxrwxrwx 4 Beef staff 128 Jan 8 2019 SanDiskSecureAccess
-rwxrwxrwx 1 Beef staff 8600360 Nov 4 2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@ 9 Beef staff 288 Jan 10 11:41 Scanned Docs
drwxrwxrwx 4 Beef staff 128 Dec 19 10:04 google
sh-3.2# rmdir Contents
rmdir: Contents: Directory not empty
sh-3.2# rmdir -p Contents
rmdir: Contents: Directory not empty
이 디렉토리를 어떻게 제거합니까?
sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 15 00:19 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 160 Dec 28 12:09 Lily 1228
drwxrwxrwx 29 Beef staff 928 Jan 3 21:48 Old Dell Laptop
lrwxr-xr-x 1 Beef staff 29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@ 1 Beef staff 1554944 Jan 8 2019 SanDisk Flashback.pdf
drwxrwxrwx 4 Beef staff 128 Jan 8 2019 SanDiskSecureAccess
-rwxrwxrwx 1 Beef staff 8600360 Nov 4 2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@ 9 Beef staff 288 Jan 10 11:41 Scanned Docs
drwxrwxrwx 4 Beef staff 128 Dec 19 10:04 google
sh-3.2# sudo rm -r -f Contents
rm: Contents: Directory not empty
그래도 삭제되지 않습니다.
답변1
당신의 디렉토리것 같다비어 있지만 ls
출력에는 다음이 있다고 나타납니다.예디렉토리의 링크 수가 2가 아닌 3이기 때문입니다(APFS 파일 시스템의 빈 디렉토리는 링크 수가 2여야 함).
이는 파일 시스템이 일관되지 않은 상태가 되었으며 fsck
해당 시스템에서 실행되어야 함을 의미합니다. macOS에서는 디스크 유틸리티 애플리케이션을 통해 Disk First Aid를 실행하여 이 작업을 수행합니다. 기본 시동 디스크(적어도 기본적으로 "Macintosh HD"라고 함)에 문제가 있는 경우 복구 모드에서 이 작업을 수행해야 합니다.
만약 이것이라면나는 같은 문제에 직면했다, 그러면 그럴 것이다아마도복구 모드에서 디스크에 응급 처치를 실행하기 전에 먼저 최신 버전의 macOS(2019년 3월 이후)를 사용하고 있는지 확인하면 이 문제를 해결할 수 있습니다.
Cmd+R컴퓨터를 다시 시작한 후 클릭하여 복구 모드로 들어갑니다. 복구 모드에 들어가면 메뉴에서 디스크 유틸리티를 실행할 수 있습니다.
답변2
디렉토리 항목은 UNIX가 실제로 작은 시스템에서 실행되고 코드도 작아야 했던 1970년대 초반의 유물입니다 .
...
.
그래서 사람들은 및라는 이름의 디렉토리에 대한 실제 하드 링크를 만듭니다 ..
. 이 잘못된 생각으로 인해 빈 디렉토리에 대한 하드 링크 수가 2가 됩니다.
오늘날 이것은 말도 안되는 소리입니다. 1988년 이후 POSIX 정의는 이러한 항목이 존재할 필요가 없다는 것입니다. 그들의 행동은 모방되어야 합니다. 이는 경로 이름에 .
또는 ..
가 나타나면 파일 시스템이 올바른 방식으로 작동한다는 것을 의미합니다.
최신 파일 시스템에는 디렉터리에 항목이 없으며 .
, ..
빈 디렉터리의 하드 링크 개수는 2가 아닙니다.
ZFS는 이런 방식으로 구현되지만 잘못 작성된 프로그램이 실패하는 것을 방지하기 위해 기록 동작을 위조합니다. 따라서 ZFS는 이러한 항목이 존재하지 않는 경우에도 .
and를 제공합니다...
readdir()
최신 파일 시스템을 사용하는지, 과거 파일 시스템을 사용하는지에 관계없이 이러한 항목은 삭제할 수 없습니다.
이제 링크 개수는 2개입니다...
기록 파일 시스템에서 운영 체제는 일반적으로 링크 수가 2보다 큰 디렉토리를 하위 디렉토리가 있는 것으로 간주하므로 삭제할 수 없습니다.
디렉터리의 링크 수가 확장 속성 파일이 나열된 숨겨진 "속성 디렉터리"의 결과가 아닌 경우 이는 파일 시스템의 버그로 인한 결과임에 틀림없습니다.
운영 체제에서 이 프로그램을 사용하여 디렉토리를 삭제할 수 없는 경우 을 unlink
실행해야 합니다.rm
root
fsck
답변3
내 첫 번째 추측은 파일이 삭제되었지만 실행 중인 프로세스에 의해 열린 상태로 유지되었다는 것입니다. 사용 sudo lsof | grep Contents
- 이름에 "Contents"라는 단어가 포함된 모든 열려 있는 파일의 PID를 제공해야 합니다. 다음은 헤더를 표시하는 출력의 처음 몇 줄입니다.
$ sudo lsof | head
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,1 4096 2 /
systemd 1 root rtd DIR 253,1 4096 2 /
...
디렉토리에 무언가를 열어두는 프로세스를 제거하면 해당 프로세스를 삭제할 수 있습니다.
답변4
다시 시작해 보세요. 프로세스 중 하나가 Contents
삭제된 파일을 디렉터리에 아직 열어두었을 수 있습니다. 다시 시작하면 파일이 해제되고 디렉터리를 삭제할 수 있습니다.