Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

LinuxをはじめとするUnix系OSでは、「すべてはファイルである」という設計思想が基本となっており、ファイルの正体はinode(ファイル名や実際の中身を除く、ファイルに関するあらゆる情報を格納するデータ構造)へのリンクです。

ハードリンクは、別のファイルと同じinodeを指すファイルです。ファイルを1つ削除しても、それはinodeへのリンクが1つ外れるだけで、データ自体は失われません。一方、シンボリックリンク(ソフトリンクとも呼ばれます)は、ファイルシステム上の別のファイル名を参照するリンクです。

両者のもう一つの重要な違いは、ハードリンクは同一ファイルシステム内でしか機能しないのに対し、シンボリックリンクは異なるファイルシステム間にまたがって作成できる点です。

Linuxでハードリンクを作成する方法

Linuxでハードリンクを作成するには、lnユーティリティを使用します。たとえば、次のコマンドは、ファイルtopprocs.shへのハードリンクとしてtpを作成します。

$ ls -l
$ ln topprocs.sh tp
$ ls -l
Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

上記のlsコマンドの出力を見ると、新しく作成されたファイルはリンクとしては表示されず、通常のファイルとして表示されています。つまり、tptopprocs.shと同じinodeを指す、もう一つの通常の実行可能ファイルだということです。

シンボリックリンクそのものに対して直接ハードリンクを作成したい場合は、次のように-Pフラグを使用します。

$ ln -P topprocs.sh tp

Linuxでシンボリックリンクを作成する方法

Linuxでシンボリックリンクを作成する場合も、同じlnユーティリティ-sスイッチを付けて使います。たとえば、次のコマンドは、ファイルtopprocs.shへのシンボリックリンクとしてtopps.shを作成します。

$ ln -s ~/bin/topprocs.sh topps.sh
$ ls -l topps.sh
Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

上記の出力では、パーミッション欄の先頭にlが表示されており、topps.shが別のファイル名へのリンクであることがわかります。

同名のシンボリックリンクがすでに存在する場合はエラーになります。既存のリンクを削除して強制的に作成し直したいときは、-fオプションを使いましょう。

$ ln -s ~/bin/topprocs.sh topps.sh
$ ln -sf ~/bin/topprocs.sh topps.sh
Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

詳細モードを有効にするには、-vフラグを追加します。これにより、リンクされた各ファイルの名前が出力に表示されるようになります。

$ ln -sfv ~/bin/topprocs.sh topps.sh
$ ls -l topps.sh
Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

以上で完了です!関連記事もぜひチェックしてみてください。

  1. fdupes – Linuxで重複ファイルを検索・削除するコマンドラインツール
  2. Linuxでファイルタイプとシステム時刻を管理するのに役立つ5つのコマンド

この記事では、Linuxでハードリンクとシンボリックリンクを作成する方法を学びました。本ガイドに関する質問やご感想があれば、下のフィードバックフォームからお気軽にお寄せください。

Linuxスキルを次のレベルへ

メンバーになると、すべてのコース、認定資格対策トラック、そして毎月追加され続ける実践的なLinuxコンテンツライブラリにフルアクセスできます。

メンバー特典

  • プレミアム記事を広告なしで閲覧可能
  • 全コースにアクセス:Linux入門、AI×Linux、Bashスクリプティング、Ubuntuハンドブック、Golangなど
  • Linux認定資格(RHCSA、RHCE、LFCS、LFCA)の学習コンテンツにアクセス
  • 新コースをリリース直後から受講可能
  • 週刊ニュースレターの購読
  • コメント欄での優先サポート
  • プライベートTelegramコミュニティへの参加
  • Linuxコミュニティとの交流

Linuxでハードリンクとシンボリックリンクをマスターする方法:ステップバイステップガイド

Aaron Kili氏はLinuxとF.O.S.Sの熱心な愛好家であり、今後が期待されるLinuxシステム管理者兼Web開発者です。現在はTecMintのコンテンツクリエイターとして、コンピュータに関わる仕事をこよなく愛し、知識の共有を信条としています。

TecMintのチュートリアルはすべて、経験豊富なLinuxシステム管理者のチームによって作成されており、当サイトの高品質基準を満たしています。

  1. Awkの基本を完全マスター:知っておきたいprintコマンド7選を実例つきで解説

    本記事は、Awkチュートリアルシリーズの第1回目です。今後数週間にわたり、実用的なサンプルとともにAwkの全機能を網羅した記事を順次公開していく予定です。 この記事では、Awkの基本的な動作メカニズムを確認しながら、実際に役立つ7つのawk printコマンドの使用例を見ていきましょう。注意: まだの方は、以前公開したSedチュートリアルシリーズもあわせてご覧ください。 Awkの概要と印刷(出力)操作の基礎 Awkは、構造化データを簡単に操作し、整形されたレポートを生成できるプログラミング言語です。「Awk」という名前は、開発者3名である「Aho(アホ)」「Weinberger(ワインバーガー

  2. Linuxシェルの基礎とシェルスクリプト入門のポイント – パートI

    百聞は一見に如かず——以下の図を見れば、Linuxの仕組みがひと目でわかります。 関連記事 シェルプログラミングを学べる5つのシェルスクリプト – パートII Linux BASHスクリプティングの世界を旅する – パートIII Linuxシェルの基礎用語 シェル(Shell): ユーザーとオペレーティングシステム(OS)をつなぐコマンドラインインタプリタ。コマンドの実行や、テキスト形式のスクリプト作成が可能です。 プロセス(Process): ユーザーがシステム上で実行するあらゆるタスクのこと。単なる「タスク」より少し複雑な概念です。 ファイル(File): ハードディスク(HDD)上