質問

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

rm を試して rmを取得しました:「foo」を削除できません
rmdir を試したが、 rmdir: 'foo'を削除できませんでした:ディレクトリが空ではありません
その後、 rm -f rm -rf 、および sudo rm -rf

を進めました。

その後、バックアップを探しに行きました。

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

役に立ちましたか?

解決

# this works
rm foo
# versus
rm foo/

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

とにかく、最初のものは動作するはずですが、2番目のものはfooがディレクトリであることについて文句を言うべきです。

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

他のヒント

「リンク解除」を使用コマンドを実行し、最後に/が付いていないことをしないことを確認します

$ unlink mySymLink
  

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

正しく読んでいる場合、これは問題になると思います。

  

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

     

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

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

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 でyesと答えます。

それが実際にシンボリックリンクであると仮定すると、

$ rm -d symlink

それを把握する必要がありますが、もう存在しないがここで正しいことを行う別のケースを対象とした潜在コードを有効にすることはできません。

rmがシンボリックリンクを削除できない場合、おそらくシンボリックリンクを含むディレクトリの権限を調べる必要があります。ディレクトリエントリを削除するには、含むディレクトリに対する書き込み権限が必要です。

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

CentOSでは、 rm linkname を実行するだけで、「シンボリックリンクを削除しますか?」と尋ねられます。 「 Y 」および「 Enter 」と入力すると、リンクがなくなり、ディレクトリが安全になります。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top