ファイルを削除します。ただし、シンボリックリンクの場合にのみ該当します。

ファイルを削除します。ただし、シンボリックリンクの場合にのみ該当します。

理想的には、このようなコマンドが欲しい

rm --only-if-symlink link-to-file

誤ってファイルを何度も削除しましたが、そのファイルを指すシンボリックリンクは削除しなかったためです。 sudoが関連している場合、これは特に悪い可能性があります。もちろん、私はls -al本当にシンボリックリンクであることを確認するために1つを行います。ただし、これはオペレータエラー(名前付きファイル、スペルエラーなど)や競合状態(誰かが何らかの理由でファイルを削除したい場合)に脆弱です。 。ファイルがシンボリックリンクであることを確認し、1つのコマンドで削除する方法はありますか?

ベストアンサー1

 $ rm_if_link(){ [ ! -L "$1" ] || rm -v "$1"; }

 #test
 $ touch nonlink; ln -s link
 $ rm_if_link nonlink
 $ rm_if_link link
   removed 'link'     

おすすめ記事