シンボリックリンクが関連付けられているディレクトリとシンボリックリンクを削除するにはどうすればよいですか?

シンボリックリンクが関連付けられているディレクトリとシンボリックリンクを削除するにはどうすればよいですか?

Sayはaシンボリックリンクですba私はこれらの両方を削除する簡単なコマンドを探していbますb

答え1

明らかにコメントを残すことはできないので、これに対する答えは次のとおりです。aリンクなので、逆参照されたディレクトリで再帰オプションを使用する必要があります。

rm -rf "$(readlink -f "a")"; rm -f "a"

答え2

私の現在のソリューションは

rm -rf "$(readlink -f "a")"; rm -f "a"

しかし、もっと簡単なことがありますか?

答え3

一部のシステムは、末尾のスラッシュを追加するときにシンボリックリンクを逆参照します(少なくともシンボリックリンクがディレクトリを指している場合)。

mkdir -p b/c && touch b/c/foo && ln -s b/c a

rm -rf a/ && rm -f a
# removed "b/c" and "a"

POSIX標準が一部変更されました(パス名の確認を参照)。IEEE規格1003.1、2004年版そしてIEEE規格1003.1-2008)が、末尾のスラッシュを持つパス名とシンボリックリンクである最終パス名コンポーネントは(ほとんど)同じように動作するようです。つまり、シンボリックリンクが確認されます。

ただし、すべてのシステムがこの動作を実装するわけではありません(Gillesの説明を参照)。

関連情報