重要なディレクトリへのシンボリックリンクがあります。そのシンボリックリンクを取り除きたいのですが、その背後にはディレクトリを残しておきます。
私はrm
を試して、rm: cannot remove 'foo'
を取り戻します。
私はrmdir
を試し、rmdir: failed to remove 'foo': Directory not empty
を取り戻しました
私はそれからrm -f
、rm -rf
そしてSudo rm -rf
を通して進みました
それから私は私のバックアップを見つけに行きました。
赤ちゃんを風呂水で捨てずにシンボリックリンクを取り除く方法はありますか?
# this works
rm foo
# versus
rm foo/
基本的には、ディレクトリを削除するのではなく、ファイルを削除するように指示する必要があります。 rm
とrmdir
の違いは、Cライブラリがそれぞれを扱う方法に違いがあるために存在すると思います。
いずれにせよ、最初のものは動作するはずですが、2番目のものはfooがディレクトリであることについて不平を言うべきです。
上記のように動作しない場合は、権限を確認してください。ファイルを削除するには、それを含むディレクトリへの書き込み権限が必要です。
"unlink"コマンドを使用して、最後に/があるようにnotにしてください。
$ unlink mySymLink
unlink()はファイルシステムから名前を削除します。 その名前がファイルへの最後のリンクで、ファイルを開いているプロセスがない場合、ファイルは削除され、使用していたスペースは再利用可能になります。その名前がファイルへの最後のリンクであっても、そのファイルを開いているプロセスが残っている場合は、それを参照している最後のファイル記述子が閉じられるまでそのファイルは存在し続けます。
私はそれを正しく読んでいるなら、これは問題になるかもしれないと思います。
名前がシンボリックリンクを参照している場合、そのリンクは削除されます。
名前がソケット、fifo、またはデバイスを参照している場合は、その名前は削除されますが、オブジェクトを開いているプロセスは引き続き使用する可能性があります。
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:~$
rm symlinkname
を使用しますが、末尾にスラッシュを含めないでください(:rm symlinkname/
を使用しないでください)。シンボリックリンクy
を削除するかどうかを尋ねられます。
それが実際にシンボリックリンクであると仮定すると、
$ rm -d symlink
それを理解する必要がありますが、もう存在しないがここで正しいことをするという別のケースを目的とした潜在コードを有効にすることはできません。
Rmがシンボリックリンクを削除できない場合は、おそらくシンボリックリンクを含むディレクトリのパーミッションを調べる必要があります。ディレクトリエントリを削除するには、それを含むディレクトリに対する書き込み権限が必要です。
セットアップがln -s /mnt/bar ~/foo
のようなものであると仮定すると、問題なくrm foo
を実行できるはずです。できない場合は、自分がfoo
の所有者であり、ファイルへの書き込み/実行権限があることを確認してください。再帰的にしない限り、foo
を削除してもbar
には影響しません。
私はMinGW(実際にはGit Bash)がWindows Server上で動作しているときにこの問題を抱えていました。上記の提案はどれもうまくいかないようでした。結局、場合に応じてディレクトリのコピーを作成してから、Windowsエクスプローラでソフトリンクを削除してから、ごみ箱内の項目を削除しました。それはファイルを削除していたがそうではなかったようにそれは音を立てました。でもバックアップを取ってください。
CentOSでは、rm linkname
を実行するだけで、 "シンボリックリンクを削除しますか?"というメッセージが表示されます。タイプ Y そして Enterリンクは消え、ディレクトリは安全になります。