シンボリックリンクは、シンボリックリンクとも呼ばれ、別のファイルまたはディレクトリを指す特殊なタイプのファイルです。これは、Windowsのショートカットのようなものです。シンボリックリンクは、同じまたは異なるファイルシステムまたはパーティション上のファイルまたはディレクトリを指すことができます。
このガイドでは、rm
を使用してLinux/UNIXシステムでシンボリックリンクを削除(削除)する方法を説明します。 、unlink
、およびfind
コマンド。
シンボリックリンクを削除するには、シンボリックリンクを含むディレクトリへの書き込み権限が必要です。そうしないと、「操作は許可されていません」というエラーが発生します。
シンボリックリンクを削除しても、それが指すファイルは影響を受けません。
ls -l
を使用します 特定のファイルがシンボリックリンクであるかどうかを確認し、シンボリックリンクが指すファイルまたはディレクトリを検索するコマンド。
ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7
最初の文字「l」は、ファイルがシンボリックリンクであることを示します。 「->」記号は、シンボリックリンクが指すファイルを示します。
rm
を使用してシンボリックリンクを削除する #
rm
コマンドは、指定されたファイルとディレクトリを削除します。
シンボリックリンクを削除するには、rm
を呼び出します コマンドの後に引数としてシンボリックリンク名が続く:
rm symlink_name
成功すると、コマンドはゼロで終了し、出力を表示しません。
rm
を使用 一度に複数のシンボリックリンクを削除できます。これを行うには、シンボリックリンクの名前をスペースで区切って引数として渡します。
rm symlink1 symlink2
シンボリックリンクを削除する前にプロンプトを表示するには、-i
を使用します オプション:
rm -i symlink_name
タイプを確認するにはy
Enter
を押します 。
rm: remove symbolic link 'symlink_name'?
シンボリックリンクがディレクトリを指している場合は、/
を追加しないでください 最後に末尾のスラッシュ。そうしないと、エラーが発生します:
rm symlink_to_dir/
rm: cannot remove 'symlink_to_dir/': Is a directory
引数の名前が/
で終わる場合 、rm
コマンドは、ファイルがディレクトリであると想定します。 -d
なしで使用すると、エラーが発生します または-r
オプション、rm
ディレクトリを削除できません。
安全のため、-r
は絶対に使用しないでください。 rm
でシンボリックリンクを削除する場合のオプション 。たとえば、次のように入力した場合:
rm -f symlink_to_dir/
ターゲットディレクトリの内容が削除されます。
unlink
を使用してシンボリックリンクを削除します #
unlink
コマンドは、指定されたファイルを削除します。 rm
とは異なり 、unlink
単一の引数のみを受け入れます。
シンボリックリンクを削除するには、unlink
を実行します コマンドの後に引数としてシンボリックリンク名を続ける:
unlink symlink_name
コマンドが正常に実行されると、出力は表示されません。
/
を追加しないでください unlink
のため、シンボリックリンク名の末尾にスラッシュが付いています ディレクトリを削除できません。
壊れたシンボリックリンクの検索と削除#
ソースファイルを削除するか、別の場所に移動すると、シンボリックファイルはぶら下がったままになります(壊れたままになります)。
特定のディレクトリの下にある壊れたシンボリックリンクをすべて見つけるには、次のコマンドを実行します。
find /path/to/directory -xtype l
/path/to/directory/symlink1
/path/to/directory/subdir/symlink2
このコマンドは、ディレクトリとそのサブディレクトリの下にあるすべての壊れたリンクを一覧表示します。
サブディレクトリに含まれているシンボリックリンクを除外する場合は、-maxdepth 1
を渡します。 find
のオプション :
find /path/to/directory -maxdepth 1 -xtype l
/path/to/directory/symlink1
壊れたシンボリックリンクを見つけたら、rm
を使用して手動で削除できます。 またはunlink
または、-delete
を使用します find
のオプション コマンド:
find /path/to/directory -xtype l -delete
結論#
シンボリックリンクを削除するには、rm
のいずれかを使用します またはunlink
コマンドの後に引数としてシンボリックリンクの名前が続きます。ディレクトリを指すシンボリックリンクを削除するときは、シンボリックリンク名に末尾のスラッシュを追加しないでください。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。