Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

【保存版】シンボリックリンクを削除する2つの方法|rm・unlinkコマンドの使い方を徹底解説

シンボリックリンク(ソフトリンク、symlinkとも呼ばれます)とは、別のファイルへの参照情報だけを持つ特殊なファイルのことです。これにより、元のファイルのフルパスを毎回入力しなくても、あたかもその場所に実体があるかのようにアクセスできます。通常のファイルにもディレクトリにもリンクを張ることができ、多くのOSやパッケージがこの仕組みを活用しています。

たとえば、LinuxやFreeBSDでWineを使用している方なら、dosdevices というディレクトリを目にしたことがあるかもしれません。ここには、Windowsアプリを動作させるために作られた仮想MS-DOSドライブへのシンボリックリンクが格納されています。

本記事では、自分で作成したシンボリックリンクや、プログラムが残した不要なリンクを安全に削除する方法を、具体的なコマンド例とともに解説します。

「Too many levels of symbolic links」エラーとは?

シンボリックリンクを扱っていると、“Too many levels of symbolic links”(シンボリックリンクの階層が深すぎます)というエラーに遭遇することがあります。これは、リンクが自分自身を指すなどして無限ループに陥っている状態を示しており、該当するリンクを削除することで解決できるケースがほとんどです。

方法1:rm コマンドでシンボリックリンクを削除する

まずは最も一般的な方法です。作業前に、本当に削除してよいリンクかどうかを必ず確認しましょう。

手順1:ターミナルを開く

Ctrl + Alt + T を同時に押すとターミナルウィンドウが開きます。UbuntuのUnity環境ではDashから検索してもよいですし、KDE、Xfce4、LXDEなどのデスクトップ環境では、アプリケーションメニュー → システムツールからターミナルを起動できます。

手順2:対象のリンクへ移動して削除する

cdコマンドでリンクのあるディレクトリへ移動し、次のコマンドを実行します。

rm -i linkName

linkName の部分は、実際に削除したいリンク名に置き換えてください。実行すると “rm: remove symbolic link ‘linkName’?” という確認メッセージが表示されるので、問題なければ y を入力してEnterキーを押します。これでリンクが削除されます。

rmコマンド単独でも削除は可能ですが、-i オプションを付けることで削除前の確認プロンプトが表示され、誤って重要なファイルを消す事故を防げます。もし表示された項目がシンボリックリンク以外だった場合は、n を入力すればキャンセルできます。

練習してみよう:リンクの作成と削除

実際に試してみましょう。まず /tmp ディレクトリに移動し、以下のコマンドでテスト用のディレクトリとリンクを作成します。

mkdir bob
ln -s bob jamie

一般形としては、ln -s name1 name2 で、ファイルシステム上の任意のファイルやディレクトリへのシンボリックリンクを作成できます。たとえば ln -s /etc/nanorc edit と実行すると、現在のディレクトリにシステム全体のnanorc設定ファイルを指す「edit」というリンクが作られます。このリンクは通常のファイルと同じように扱え、more edit のように中身を閲覧することも可能です。

確認が終わったら、rm -i edit を実行すれば、元のファイルには一切触れずにシンボリックリンクだけを削除できます。

権限不足で削除できない場合

自分のユーザーアカウントにアクセス権限があるリンクなら、上記のコマンド1つで削除できます。しかし、システム領域のリンクなどを扱う際には管理者権限が必要になることがあります。その場合は、sudo rm -i edit のように sudo を付けて実行してください。パスワードの入力を求められた後、削除の確認プロンプトが表示されます。

方法2:unlink コマンドでシンボリックリンクを解除する

シンボリックリンク専用のコマンドとして、unlink も用意されています。

unlink edit

このように、削除したいリンク名を指定するだけで実行できます。ただし、unlinkには rm -i のような確認プロンプトや安全性チェックがないため、誤操作のリスクを考えると rm -i の方が推奨されます。一方で、オプション指定が一切不要な点はシンプルで扱いやすいとも言えます。

どちらのコマンドを使うべき?

rm はLinux、BSD、Solaris、macOSなど、あらゆるUnix系システムに必ず搭載されているコマンドです。環境を選ばず、確認プロンプトによる安全性も確保できるため、特別な理由がなければ rm -i を使うのがベストプラクティスと言えるでしょう。


著者について

【保存版】シンボリックリンクを削除する2つの方法|rm・unlinkコマンドの使い方を徹底解説

Kevin Arrows

Kevin Arrowsは、10年以上の業界経験を持つテクノロジースペシャリストです。Microsoft認定テクノロジースペシャリスト(MCTS)の資格を保有し、最新の技術動向を追い続けることに強い情熱を注いでいます。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど幅広い分野に関する記事を数多く執筆しており、複雑な技術的概念を明快かつ簡潔に説明する能力で高く評価されています。

  1. 「rmdir: Directory not empty」エラーの解決方法|Linux・Windows対応ガイド

    rmdirは、LinuxおよびWindowsで利用できるコマンドラインユーティリティで、空のディレクトリを削除するためのコマンドです。標準的なrmコマンドは中身が入ったディレクトリでもまとめて削除できてしまうため、誤って重要なファイルを含むディレクトリを消してしまうリスクがあります。その点、rmdirは空のディレクトリしか削除しないため、意図しないデータ消失を防げる安全なコマンドとして重宝されています。 「rmdir: directory not empty(ディレクトリが空ではありません)」というエラーは、ファイルやサブディレクトリを含む空ではないディレクトリに対してrmdirコマンドを実行

  2. LinuxでTeamViewerの自動起動を無効化する方法:ステップバイステップガイド

    TeamViewerは、離れた場所にあるワークステーションにリモート接続し、データやメッセージのやり取りを行うための人気アプリケーションです。Windows環境ではこの用途で最も広く利用されているプログラムの一つであり、Linuxユーザーの一部はWineを併用することで同じ利便性を実現しています。可能であればネイティブのLinuxアプリケーションを使うのが理想ですが、接続先の相手がWindowsを使用している場合は、TeamViewerが必要になることもあるでしょう。 ここで大きな問題となるのが、TeamViewerが自動的に起動してしまう点です。バージョンによっては、wineserverをは