実用例付き Linux の ln コマンド

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linuxのlnコマンドと、ハードリンクとシンボリックリンクを作成するためのその実用的なアプリケーションについて学びます。この実験では、lnコマンドの目的、ハードリンクの作成方法、およびシンボリックリンクの作成方法について説明します。これら2種類のリンクの違いとその使用例を理解します。この実験では、手順を追った説明と例を提供して、Linuxにおけるlnコマンドとそのファイルおよびディレクトリ管理機能を身につけるのを助けます。

Linux Commands Cheat Sheet


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/ls -.-> lab-422760{{"実用例付き Linux の ln コマンド"}} linux/rm -.-> lab-422760{{"実用例付き Linux の ln コマンド"}} linux/ln -.-> lab-422760{{"実用例付き Linux の ln コマンド"}} linux/cat -.-> lab-422760{{"実用例付き Linux の ln コマンド"}} end

lnコマンドの目的を理解する

このステップでは、Linuxにおけるlnコマンドの目的について学びます。lnコマンドは、他のファイルやディレクトリを指す特殊なファイルであるリンクを作成するために使用されます。リンクには2種類あります。ハードリンクとシンボリック(ソフト)リンクです。

ハードリンクは、追加のオプションなしでlnコマンドを使用して作成されます。ハードリンクは、基本的に元のファイルのコピーですが、同じinode(ファイルメタデータ)と物理的な格納場所を共有します。これは、ファイルコンテンツに対して行われた変更がすべてのハードリンクに反映されることを意味します。

ハードリンクを作成するには、次のコマンドを実行します。

ln original_file hard_link_name

出力例:

$ ln file1.txt file1_hardlink.txt

シンボリックリンクは、ソフトリンクとも呼ばれ、lnコマンドに-sオプションを付けて作成されます。シンボリックリンクは、元のファイルまたはディレクトリへのポインタであり、ターゲットへのパスを含んでいます。ハードリンクとは異なり、シンボリックリンクはファイルシステムの境界を越えたファイルやディレクトリを指すことができます。

シンボリックリンクを作成するには、次のコマンドを実行します。

ln -s original_file symbolic_link_name

出力例:

$ ln -s file1.txt file1_symlink.txt

ハードリンクとシンボリックリンクの主な違いは、ハードリンクが元のファイルと密接に結びついているのに対し、シンボリックリンクがより柔軟で、ファイルシステム全体にわたるファイルやディレクトリを指すことができる点です。

lnコマンドを使ったハードリンクの作成

このステップでは、lnコマンドを使ってハードリンクを作成する方法を学びます。

まず、ハードリンクを作成するために使うサンプルファイルを作成しましょう。

touch file1.txt
echo "This is the original file." > file1.txt

次に、lnコマンドを使ってfile1.txtにハードリンクを作成しましょう。

ln file1.txt file1_hardlink.txt

オプションなしのlnコマンドはハードリンクを作成します。これは、file1_hardlink.txtfile1.txtが今や同じinode(ファイルメタデータ)と物理的な格納場所を共有していることを意味します。一方のファイルに対して行われた変更は、もう一方にも反映されます。

ハードリンクが正しく作成されたことを確認しましょう。

ls -l file1.txt file1_hardlink.txt

出力例:

-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1.txt
-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1_hardlink.txt

両方のファイルが同じinode番号(2列目の「2」)を持っていることに注意してください。これは、それらが同じファイルへのハードリンクであることを示しています。

次に、元のファイルに変更を加えて、それがハードリンクにどのような影響を与えるか見てみましょう。

echo "This is an updated file." > file1.txt
cat file1.txt file1_hardlink.txt

出力例:

This is an updated file.
This is an updated file.

ご覧の通り、file1.txtに加えられた変更がハードリンクfile1_hardlink.txtにも反映されています。

ハードリンクは、同じファイルに複数の参照を作成したい場合に便利ですが、追加のストレージ空間を消費しません。ただし、ハードリンクはファイルシステムの境界をまたがることはできず、ディレクトリには作成できません。

lnコマンドを使ったシンボリックリンクの作成

このステップでは、lnコマンドを使ってシンボリック(ソフト)リンクを作成する方法を学びます。

まず、シンボリックリンクを作成するために使う別のサンプルファイルを作成しましょう。

touch file2.txt
echo "This is the second file." > file2.txt

次に、-sオプション付きのlnコマンドを使ってfile2.txtにシンボリックリンクを作成しましょう。

ln -s file2.txt file2_symlink.txt

-sオプションは、lnコマンドにハードリンクではなくシンボリックリンクを作成するように指示します。

シンボリックリンクが正しく作成されたことを確認しましょう。

ls -l file2.txt file2_symlink.txt

出力例:

-rw-r--r-- 1 labex labex 23 Apr 12 12:34 file2.txt
lrwxrwxrwx 1 labex labex  8 Apr 12 12:34 file2_symlink.txt -> file2.txt

シンボリックリンクfile2_symlink.txtの権限の先頭に「l」があることに注意してください。これは、それがシンボリックリンクであることを示しています。出力にはまた、file2_symlink.txtfile2.txtを指していることも示されています。

ハードリンクとは異なり、シンボリックリンクはファイルシステムの境界を越えたファイルやディレクトリを指すことができます。これをディレクトリにシンボリックリンクを作成することで示しましょう。

mkdir dir1
ln -s dir1 dir1_symlink
ls -l dir1 dir1_symlink

出力例:

drwxr-xr-x 2 labex labex 4096 Apr 12 12:34 dir1
lrwxrwxrwx 1 labex labex    5 Apr 12 12:34 dir1_symlink -> dir1

ご覧の通り、dir1_symlinkdir1ディレクトリを指すシンボリックリンクです。

シンボリックリンクは、ハードリンクよりも柔軟であり、ファイルシステムの境界を越えたファイルやディレクトリを指すことができます。ただし、ターゲットファイルまたはディレクトリが移動または削除されると、リンクが切れるため、より脆弱になる場合もあります。

まとめ

この実験では、Linuxにおけるlnコマンドの目的について学びました。このコマンドは、他のファイルやディレクトリを指すリンクを作成するために使用されます。また、2種類のリンク、つまりハードリンクとシンボリック(ソフト)リンクについても学びました。ハードリンクは、基本的に同じinodeと物理的な格納場所を共有する元のファイルのコピーであり、シンボリックリンクは元のファイルまたはディレクトリへのポインタであり、ファイルシステムの境界を越えることができます。さらに、lnコマンドを使ってハードリンクとシンボリックリンクを作成する方法も学びました。

Linux Commands Cheat Sheet