この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。GNU coreutilsのln仕様を確認し、mktempの一時領域だけでリンクとinodeを観察する形に整理しています。検証ステータス:📘 GNU公式資料確認済み・実機未確認
名前だけ覚えるより、同じファイルへ2種類のリンクを作りls -liでinodeを見ると違いが分かります。
まず試す
d=$(mktemp -d); cd "$d" printf 'hello\n' > original.txt ln original.txt hard.txt ln -s original.txt sym.txt ls -li
ここを見る
original.txtとhard.txtはinode番号が同じです。sym.txtは別inodeで、表示には-> original.txtが出ます。
1か所変えてみる
rm original.txt cat hard.txt cat sym.txt
ハードリンク側から内容は読めても、シンボリックリンクは参照先名が消えたため失敗する点を観察します。
なぜそうなる
ハードリンクは同じinodeへ別名を追加します。シンボリックリンクは「参照先のpath」を内容として持つ別ファイルです。
graph LR A[original.txt] --> I[inode/data] H[hard.txt] --> I S[sym.txt] --> A
仕事で使うなら
設定切替などでsymlinkは便利ですが、リンク切れを考慮します。hard linkはfilesystem境界やdirectoryへの制約があるため、単なるコピーの代替と決めつけません。
後始末: cd / && rm -rf "$d"
GNU ln: https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html
