ディレクトリへのシンボリックリンクを削除する


1085

重要なディレクトリへのシンボリックリンクがあります。そのシンボリックリンクを削除し、その背後にディレクトリを保持します。

私は試しrmて戻ってきましたrm: cannot remove 'foo'
私は試しrmdirて戻っrmdir: failed to remove 'foo': Directory not empty
て、それからに進みましたrm -frm -rfそしてsudo rm -rf

それから私は自分のバックアップを見つけるために行きました。

赤ん坊を風呂水で捨てずにシンボリックリンクを取り除く方法はありますか?


74
Linux関連の質問をすることの何が問題になっていますか?前回チェックしたところ、スタックオーバーフローはOS固有ではありませんでした
ジェレミーカントレル

6
この質問は、スーパーユーザー、またはLinux関連のスタック交換に適していますか?
mwfearnley 2015年

45
@mwfearnleyでしょうが、日付を確認してください。スーパーユーザーはまだ当時のことではありませんでした。移植されたので、そこにもあります。なぜそれがまだここにあるのかはわかりませんが、それは私の最高得点の質問であり、ギフトのカルマを口の中で見るつもりはありません。
Matthew Scouten

16
ヒント: rm -r link/ターゲットのコンテンツを削除します
Gayan Weerakutti

31
Then I went to find my back-ups-笑った。
frakman1

回答:


1308
# this works:
rm foo
# versus this, which doesn't:
rm foo/

基本的に、ディレクトリを削除するのではなく、ファイルを削除するように指示する必要があります。との違いは、Cライブラリがそれぞれを処理する方法に違いがあるためと考えられます。rmrmdir

とにかく、1つ目は動作するはずですが、2つ目はfooがディレクトリであることについて不平を言うはずです。

上記のように機能しない場合は、権限を確認してください。ファイルを削除するには、含まれているディレクトリへの書き込み権限が必要です。


121
ああそう。それは理にかなっている。私はfooと入力したことがなく、f <tab>と入力してbashに/を入力しました。
マシュー・スカウテン、

6
これは常に機能するとは限りません。場合によってはrm -rf folderName、シンボリックリンクを削除するために(末尾に/を付けずに)実行する必要があります。たとえば、Amazon Linuxは特定の状況下でこのように動作します。
brandonscript 2013年

18
@ r3mus:-rすべてを失いたくない場合を除き、シンボリックリンクと一緒に使用しないでください。-fファイルのアクセス許可を上書きする場合を除いて、どちらも必要ありません。
Matthew Scharley、2013年

27
特に、「リンク」操作unlinkとは関係ありませんln。この名前unlinkは、ファイルシステムのファイルテーブルからファイルのリンクを解除/削除するプロセスを指し、コンテンツへの参照からコンテンツが切り離される-それらはリンク解除されます。特にリンクやシンボリックリンクに適用すると、紛らわしい紛らわしい名前になります。タイプに関係なくすべてのファイルunlinkで機能するため、シンボリックリンクで機能します
Matthew Scharley、2016

4
あなたが実際に愚かなことをするのを心配しているなら、alias rm="rm -i"私はそこにある他の何よりも多くの皮を節約しました。
Matthew Scharley、2016

832

「リンク解除」コマンドを使用し、末尾に/がないことを確認してください

$ unlink mySymLink

unlink()は、ファイルシステムから名前を削除します。その名前がファイルへの最後のリンクであり、ファイルを開いているプロセスがない場合、ファイルは削除され、使用していたスペースは再利用できるようになります。 名前がファイルへの最後のリンクであったが、プロセスがまだファイルを開いている場合、そのファイルを参照している最後のファイル記述子が閉じられるまで、ファイルは存在し続けます。

私がそれを正しく読んでいるならば、これは問題があるかもしれないと思います。

名前がシンボリックリンクを参照している場合、リンクは削除されます。

名前がソケット、fifo、またはデバイスを参照している場合、その名前は削除されますが、オブジェクトを開いているプロセスは引き続き使用できます。

https://linux.die.net/man/2/unlink


33
@OmarAbid「rm foo /」バージョンは私を怖がらせます。これははるかに安全に見えます:)
Joe Phillips

9
Ubuntuのでは、私はテストした~/c/a/file/c/b/ln -s ~/c/a ~/c/b/。では~/c/b/rm a/機能せずrm -rf a/、元のを空にするだけaです。unlink a完璧に動作し、unlink a/何もしません。
ブレイディトレーナー2014

3
OS X 10.10では、unlinkは単にのエイリアスですrmrmディレクトリ構造の任意の部分を処理するときに適切な規律が利用されるべきであることを示しに行きます。
Doug Powers

1
スクリプトでrm -fは、リンクが存在するかどうかに関係なくリンクを削除しますがunlink、リンクが存在しない場合は文句を言います。unlinkに相当する `-f 'オプションはなく、スクリプトをより複雑にします。
shonky linuxユーザー、2015

22
unlink通常のファイルを削除できます。rmシンボリックリンクよりも機能が少なく、特定のものではありません。フラグのrmないディレクトリも削除しません-r。だから私はrmを選ぶことをお勧めします、それは冗長でインタラクティブなフラグを持っています; また、意味のある警告およびエラーメッセージ。
ThorSummoner

18

rmはシンボリックリンクを削除する必要があります。

skrall@skrall-desktop:~$ mkdir bar
skrall@skrall-desktop:~$ ln -s bar foo
skrall@skrall-desktop:~$ ls -l foo
lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
skrall@skrall-desktop:~$ rm foo
skrall@skrall-desktop:~$ ls -l foo
ls: cannot access foo: No such file or directory
skrall@skrall-desktop:~$ ls -l bar
total 0
skrall@skrall-desktop:~$ 

17

rm symlinknameスラッシュを使用しますが、最後にスラッシュを含めません(使用しないでください:) rm symlinkname/。次に、シンボリックリンクを削除するかどうかを尋ねられ、yyesと答えます。


63
あなたは間違っていませんが、正しい答えはすでにここにあり、受け入れられています(4年前!)。なぜわざわざ?
マシュースカウテン、

1
「Remove a symlink」を検索すると、Googleはこれを強調スニペットとして持っていました。多分それはその簡潔さが好きで、そのヒューリスティックスがどのように機能するかはわかりません。とにかく、コマンドラインを振り返ると、すぐに手のひらを作りました:-)
Randall

12

実際にシンボリックリンクだとすると、

$ rm -d symlink

それは理解する必要がありますが、それができないので、もう存在しないがここで正しいことを実行する別のケースのために意図された潜在コードを有効にすることができます。


7

rmがシンボリックリンクを削除できない場合は、シンボリックリンクを含むディレクトリの権限を確認する必要があるかもしれません。ディレクトリエントリを削除するには、含まれているディレクトリに対する書き込み権限が必要です。


4

セットアップが次のようなものであると想定すると、問題なくln -s /mnt/bar ~/fooを実行できるはずrm fooです。できない場合は、自分がの所有者でありfoo、ファイルの書き込み/実行権限を持っていることを確認してください。再帰的に実行しない限り、削除してfooもには影響しませんbar


2

CentOSで実行するrm linknameと、「シンボリックリンクを削除しますか?」というメッセージが表示されます。と入力するYEnter、リンクが失われ、ディレクトリは安全です。


2

Windowsサーバーで実行されているMinGW(実際にはGit Bash)でこの問題が発生しました。上記の提案はどれも機能していないようです。最後に、ケースのディレクトリのコピーを作成し、Windowsエクスプローラーのソフトリンクを削除してから、ごみ箱のアイテムを削除しました。ファイルを削除しているような音がしましたが、しませんでした。ただし、バックアップを作成してください。


3
「ファイルを削除しているような音がした...」-わあ!
Sterex、2018

LMFAO。「ファイルを削除しているような音がした...」
Shivam Jha

フロッピーディスクを覚えています。
キースウィッティンガム、

上記のどれも私にとってはうまくいきませんでした:eddyq @ eddyq-Latitude-E6440:〜$ lsデスクトップダウンロードDropbox-WindowsミュージックパブリックビデオwドキュメントDropbox examples.desktop写真テンプレート 'VmWare vmxファイル'
eddyq
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.