Lから始まるLinux

2章26話
パーミッション操作
2章27話 リンク
もくじ
2章28話
ワイルドカード
リンク
若木 みどり
お兄ちゃん! Windows の「ショートカット」 のようなものって作れるのかな?
若木 しげる
もちろん作れるよ! 今回は「リンク(link)」について学ぼう!
ln コマンド
若木 しげる
ln はリンクを作成するんだ link の略なんだよ
ln [オプション]... リンク先 リンク
オプション役割
-s, --symbolicシンボリックリンクを作成
-f, --forceリンク が存在していればそれを削除してからリンクを作成
-n, --no-dereferenceリンク が存在していればそれをシンボリックリンクとして扱わないようにしてリンクを作成
-v, --verbose動作内容を表示
若木 みどり
さっそく作ってみようよ!
若木 しげる
まずはリンク先のファイルoriginal を作成しよう
touch original
若木 みどり
うん!作ったよ!
若木 しげる
そうしたら ln-s オプションを指定してリンクを作成しよう
ln -s original link
若木 みどり
確認は ls だね
link  original
若木 みどり
originallink2つのファイルがある!リンクができたね!
若木 しげる
このリンクは「シンボリックリンク(symbolic link)」と呼ばれるよ
若木 しげる
シンボリックリンクはリンク先の情報を保持していているよlink へのアクセスは代わりに original へのアクセスになるんだ
若木 みどり
まさに Windows のショートカットと同じだね!
リンクの確認
若木 しげる
リンクの詳細はls -l で確認できるよ
ls -l link
若木 みどり
へぇ…
lrwxrwxrwx 1 midori midori 8 Jan  1 17:17 link -> original
若木 みどり
link -> originalリンク情報が表示されるんだね!
readlink コマンド
若木 しげる
readlinkシンボリックリンクの情報を読むよこれでもリンクの情報が確認できるんだ
readlink [オプション]... シンボリックリンク...
オプション役割
-f, --canonicalize最終リンク先を表示
若木 しげる
readlink も試してみよう!
readlink link
若木 みどり
やってみるね!
original
若木 みどり
リンク先の original が表示されたよこれでもリンク先を確認できるんだね!
若木 しげる
また、リンク先がシンボリックリンク…とリンクが連鎖している場合もあるんだこういうときは -f オプションを使うと最終的なリンク先を表示してくれるよ
readlink -f link
若木 みどり(驚き)
へぇ…これは便利だね!
ハードリンク
若木 みどり(驚き)
お兄ちゃん!ln-s オプションを忘れちゃった!そうしたらリンクじゃなくてファイルができちゃったんだけど!
ln original link
若木 しげる
ln-s オプションなしで作成されたのもリンクなんだこのリンクを「ハードリンク(hard link)」というよ
若木 みどり
それはどういうものなのかな?
若木 しげる
ハードリンクは指定されたリンク先と同じのデータを指しているんだ
若木 みどり(驚き)
ストレージ上には1個のデータしかないけどそのデータを指し示すファイルは2個あるということ?!
若木 しげる
そういうことになるね同じデータに対してハードリンクが何個あっても使用する容量は1ファイル分だしどのハードリンクを変更しても他のハードリンクを開けば変更が反映されているよ
若木 みどり
じゃあ…間違って作成したハードリンクは削除しても問題ないんだ?
若木 しげる
うん、大丈夫だよ!普通にファイルを作った時もそれはハードリンクなんだハードリンクが0個になったらそのデータは使われないと判断されるんよ
若木 しげる
使う機会は少ないけど概念は覚えておこう!
unlink コマンド
若木 みどり
リンクの削除はrm でいいのかな?
若木 しげる
うん普通は rm削除するね
若木 しげる
他にも unlink というリンクを切るコマンドがあるんだ
unlink リンク
若木 しげる
unlinkrm同じように使えるけど「リンクを切る」という意図を明確にしたい場合に使うこともあるよ
若木 みどり
「シンボリックリンクを切る」「ハードリンクを切る」どちらも対象のリンクを消す動作になるものね
まとめ
若木 みどり
今回は「シンボリックリンク」「ハードリンク」というリンクの種類とln, readlink, unlink といった関連コマンドを扱ったね!
若木 しげる
リンクはファイル名の差異を吸収したり簡単にアクセスできる場所にリンクを作ったりとシステムの操作性や柔軟性を支えてくれているんだ普段の作業やシステム操作で使う機会が多いから活用してみてね!