「。」そして '..'だけが含まれていますが、rmが空ではないと言うディレクトリをどのように削除できますか?

「。」そして '..'だけが含まれていますが、rmが空ではないと言うディレクトリをどのように削除できますか?

これら2つのファイルはOffice 2011の製品であり、「コンテンツ」ディレクトリが削除されるのを防ぎます。どのように削除しますか?

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実行する必要があります。rmrootfsck

答え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

もう一度やり直してください。プロセスの1つがContents削除されたファイルをディレクトリにまだ開いたままにしている可能性があります。再起動するとファイルが解放され、ディレクトリを削除できます。

関連情報