少し前に、ソフトリンクとハードリンクとはについて説明しました 実用的な例で。場合によっては、どこも指していない未使用のソフトリンクやシンボリックリンクを削除するのを忘れることがあります。未使用のリンクをファイルシステムに保持しても、ディスク領域を少し占有することを除いて、システムに害を及ぼすことはありません。したがって、それらを保持する意味はありません。 Linuxシステムで壊れたシンボリックリンクを見つけて削除するだけです。
壊れたシンボリックリンクを見つけて、Linuxで削除します
Linuxで壊れたシンボリックリンクやソフトリンクを見つける方法はたくさんあります。ここでは2つの方法を示しました。
1。 「シンボリックリンク」ユーティリティを使用して、壊れたソフトリンクを見つけて削除します
シンボリックリンク コマンドライン、シンボリックリンクメンテナンスユーティリティです。指定されたディレクトリをスキャンし、シンボリックリンクがある場合はそれを一覧表示します。
シンボリックリンクは、多くのLinuxディストリビューションの公式リポジトリで利用できます。
CentOSにシンボリックリンクをインストールするには 、実行:
$ sudo yum install symlinks
Fedora :
$ sudo dnf install symlinks
Debian 、 Ubuntu 、 Linux Mint :
$ sudo apt-get install symlinks
Ubuntuでは、 [universe]
を有効にする必要があります リポジトリ。
$ sudo add-apt-repository universe
Symlinksをインストールした後、次のコマンドを実行して、壊れたシンボリックリンクを見つけて削除します。
$ symlinks -dr <directory-path>
上記のコマンドは、指定されたディレクトリ内の壊れたシンボリックリンクをスキャンし、それらを削除します。
ここで
-
d
-ぶら下がっているシンボリックリンクを削除します -
r
-再帰的
例を示しましょう。 "abc"
という名前のファイルを作成します 現在のディレクトリにあります。
$ touch abc
次に、 'xyz'
というシンボリックリンクを作成します abc
の場合 ファイル:
$ ln -s abc xyz
次に、実際のファイルを削除します。つまり、 abc
。
$ rm abc
ご存知かもしれませんが、実際のファイルを削除すると、シンボリックリンクには価値がなくなります。ただの近道で、今は壊れているからです。
壊れたシンボリックリンクを見つけるには、次のコマンドを実行します:
$ symlinks .
ドットに注意してください (。コード> ) 最後に。これは、現在のディレクトリで壊れたリンクを検索していることを意味します。
出力例:
dangling: /home/sk/xyz -> abc
ここでは、 xyz
実際のソースファイル"abc"
を削除したため、ぶら下がっています 。したがって、コマンドを使用してこの壊れたリンクを削除しましょう:
$ symlinks -dr .
出力例:
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc
最後に、 symlinks
を実行します もう一度コマンドを実行して、壊れたリンクが残っていないかどうかを確認します。
2。 「検索」コマンドを使用して、壊れたソフトリンクを検索して削除します
find
を使用することもできます 壊れたシンボリックリンクを削除するコマンド。
壊れたシンボリックリンクを検索し、削除しないようにするには、次のコマンドを実行します。
$ find . -xtype l
このコマンドは、現在のディレクトリにある壊れたシンボリックリンクを一覧表示します。 / usr / local /
など、特定のパスで壊れたシンボリックリンクを検索する場合 、実行:
$ find /usr/local/ -xtype l
出力:
上記のコマンドは、 / usr / local /
で壊れたリンクを検索します およびそのサブディレクトリ。上記の出力でわかるように、多くの壊れたシンボリックリンクがあります。
または、次のコマンドを使用して、未使用のシンボリックリンクを一覧表示します。
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
壊れたリンクがどこを指しているかを確認することも可能です。目的のシンボリックリンクを削除していることを確認することをお勧めします。
$ find /usr/local/ -xtype l -exec ls -l {} \+
出力例:
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/drracket -> /home/sk/racket/bin/drracket lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/gracket -> /home/sk/racket/bin/gracket lrwxrwxrwx 1 root root 32 Jan 21 08:53 /usr/local/bin/gracket-text -> /home/sk/racket/bin/gracket-text lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mred -> /home/sk/racket/bin/mred lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/mred-text -> /home/sk/racket/bin/mred-text lrwxrwxrwx 1 root root 23 Jan 21 08:53 /usr/local/bin/mzc -> /home/sk/racket/bin/mzc lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mzpp -> /home/sk/racket/bin/mzpp lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/mzscheme -> /home/sk/racket/bin/mzscheme lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/mztext -> /home/sk/racket/bin/mztext lrwxrwxrwx 1 root root 30 Jan 21 08:53 /usr/local/bin/pdf-slatex -> /home/sk/racket/bin/pdf-slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/plt-games -> /home/sk/racket/bin/plt-games lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-help -> /home/sk/racket/bin/plt-help lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r5rs -> /home/sk/racket/bin/plt-r5rs lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r6rs -> /home/sk/racket/bin/plt-r6rs lrwxrwxrwx 1 root root 34 Jan 21 08:53 /usr/local/bin/plt-web-server -> /home/sk/racket/bin/plt-web-server lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/racket -> /home/sk/racket/bin/racket lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/raco -> /home/sk/racket/bin/raco lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/scribble -> /home/sk/racket/bin/scribble lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/setup-plt -> /home/sk/racket/bin/setup-plt lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/slatex -> /home/sk/racket/bin/slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/slideshow -> /home/sk/racket/bin/slideshow lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/swindle -> /home/sk/racket/bin/swindle
壊れたリンクをすべて一度に削除するには、次のコマンドを実行します。
$ sudo find /usr/local/ -xtype l -delete
または、
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
/ usr / local /
を置き換えます 自分の道で。
推奨される読み物:
- Linuxでシンボリックリンクを一覧表示する方法
お役に立てば幸いです。