はじめに
前回の記事では、
ハードリンクとシンボリックリンクの違いを「仕組み」から解説しました。
今回はその続きとして、
ハードリンクとシンボリックリンクの違いを、実際の表示結果から確認していきます。
ポイントになるのが ls -la コマンドです。
ls は単なるファイル一覧表示のコマンドですが、
リンクの種類・数・参照関係といった情報もまとめて確認できます。
この記事では ls -la の出力結果を使って、
-
ハードリンクとシンボリックリンクはどこが違って見えるのか
-
表示結果から何が読み取れるのか
を、LinuC101で求められるレベルに絞って解説していきます。
今回使う ls の出力例
まずは、今回の題材となる実際の出力です。

この中には、
-
通常ファイル(test.txt)
-
通常ディレクトリ(フォルダ)
-
ハードリンク
-
シンボリックリンク(ディレクトリ,ファイル)
が含まれています。
この記事では、
これらを比較しながら違いを確認していきます。
特に注目するのは、次の2つです。
① 一番左の1文字で分かる「正体」
まず見るべきは、一番左の1文字です。
-
-で始まっている hardlink -
lで始まっている symlink
これだけで、
「これはシンボリックリンクだな」「これは普通のファイル(=ハードリンク)」
と判断できます。
しかし
ここで注意したいのが、
ハードリンクは見た目上「通常ファイル」と区別がつかないという点です。
どちらも先頭は - で表示されます。
なぜなら、ハードリンクは特別な種類のファイルではなく、
同じ inode を共有する「別名」だからです。
つまり、
- で始まっているだけでは
それが通常ファイルなのかハードリンクなのかは分かりません。
ハードリンクかどうかを判断するには、
次に説明する「リンク数」を確認する必要があります。
② リンク数を見るとハードリンクが分かる
次に注目するのが、パーミッションの次の数字です。
この数字は リンク数 を表しています。
-
hardlink →
2 -
symlink、通常ファイル →
1
ハードリンクの場合
ハードリンクは、
同じ inode を指しているファイル名の数が表示されます。
今回の場合、
-
元ファイル
-
hardlink
の2つが同じ inode を共有しているため、2 になっています。
シンボリックリンク、通常ファイルの場合
シンボリックリンクは inode を共有しないため、
基本的に 1 のままです。
リンク数が増えるのはハードリンクだけ
これは試験でも実務でも超重要です。
③ ファイルサイズの違いが意味するもの
次はサイズ部分を見てみましょう。
ここにも大きな違いがあります。
ハードリンクのサイズ
ハードリンクは実体そのものなので、
元ファイルと同じサイズになります。
シンボリックリンクのサイズ
一方、シンボリックリンクのサイズは、
という パス文字列の長さです。
つまり、
👉 シンボリックリンクの中身は
👉 「参照先パスを書いた文字列」
ということが、ls からも確認できます。
④ -> 表示は「参照先」を表している
この -> は、
-
このリンクが
-
どこを参照しているか
を示しています。
ここでは、
1つ上のディレクトリにある test.txt を参照している
という意味です。
この表示があるのは、シンボリックリンクだけです。
ハードリンクはディレクトリには作成できない
ここで押さえておきたい重要ポイントがあります。
ハードリンクは 通常、ディレクトリには作成できません。
つまり、
-
ハードリンク「ファイル」は存在する
-
ハードリンク「ディレクトリ」は作れない
ということです。
これは、
ディレクトリ構造が循環してしまうのを防ぐため
ファイルシステムの整合性を保つため
といった設計上の理由によるものです。
total 0 の意味もついでに理解しておく
これは、
このディレクトリ内のファイルが使用しているディスクブロックの合計
を表しています。
今回の例では、
-
小さいファイル
-
実体は別に存在しているリンク
しかないため、0 になっています。
「リンクだから 0」ではなく、
ディスク使用量がほぼない結果として 0
という点は押さえておきましょう。
LinuC101ではここまで分かればOK
試験対策としては、次の点を説明できれば十分です。
-
-とlの違い -
リンク数が増えるのはハードリンク
-
シンボリックリンクには
->が付く -
サイズが「実体」か「パス文字列」かの違い
これが分かっていれば、
ls の出力問題で詰まることはほぼありません。
LinuC101で実際に出た形式の問題例
LinuC101では、ls -l の表示を見て判断する問題が出ることがあります。
たとえば次のような表示。
lrwxrwxrwx 1 yoyamamoto yoyamamoto 11 Feb 8 16:10 symlink -> ../test.txt
Q:作成したコマンドはどれか?
正解は:
ln -s ../test.txt symlink
ポイントは、
リンク先 → リンク名 の順番で指定することです。
また、次のような問題もあります。
-rwxrwxrwx 2 yoyamamoto yoyamamoto 1 Aug 28 2025 hardlink
Q:ハードリンクはどれか?
この場合、リンク数が「2」になっている hardlink が該当します。
ハードリンクは リンク数が増える のが特徴です。
まとめ
-
ls の一番左でリンクの種類が分かる
-
リンク数はハードリンク理解のカギ
-
シンボリックリンクはパス文字列を持つ
-
ls は「リンクの正体」を見抜く最強のコマンド
前回の「仕組み編」と、
今回の「lsで確認編」をセットで理解できると、
ハードリンクとシンボリックリンクは一気にクリアになります。



コメント