お兄ちゃん!
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
といった関連コマンドを扱ったね!リンクはファイル名の差異を吸収したり簡単にアクセスできる場所にリンクを作ったりとシステムの操作性や柔軟性を支えてくれているんだ普段の作業やシステム操作で使う機会が多いから活用してみてね!