お兄ちゃん!
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
original と link の2つのファイルがある!リンクができたね!このリンクは「シンボリックリンク(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 オプションなしで作成されたのもリンクなんだこのリンクをそれはどういうものなのかな?
ハードリンクは指定されたリンク先と同じのデータを指しているんだ
つまりストレージ上には1個のデータしかないけどそのデータを指し示すファイルは2個あるということ?!
そういうことになるね同じデータに対してハードリンクが何個あっても使用する容量は1ファイル分だしどのハードリンクを変更しても他のハードリンクを開けば変更が反映されているよ
じゃあ…間違って作成したハードリンクは削除しても問題ないんだ?
うん、大丈夫だよ! 普通にファイルを作った時もそれはハードリンクなんだハードリンクが0個になったらそのデータは使われないと判断されるよ
使う機会は少ないけど概念は覚えておこう!
unlink コマンドリンクの削除は
rm でいいのかな?うん普通は
rm で削除するね他にも
unlink というリンクを切るコマンドがあるんだunlink リンク
unlink は rm と同じように使えるけど今回は「シンボリックリンク」 「ハードリンク」というリンクの種類と
ln, readlink, unlink といった関連コマンドを扱ったね!リンクはファイル名の差異を吸収したり簡単にアクセスできる場所にリンクを作ったりとシステムの操作性や柔軟性を支えてくれているんだ普段の作業やシステム操作で使う機会が多いから活用してみてね!