シンボリックリンクの作成・削除方法(ターミナル)
シンボリックリンクってなんなのかよく分からなくて、調べた後もまどろっこしかったので忘れそうです。なので自分用にこれを書きます。
また同じようにシンボリックリンクがよくわからない、または忘れたかたの助けになれば良いなと思います。
きっとPC初心者でもわかるはず。かなり詳しく書いたつもりです。
では早速シンボリックリンクの解説へ。
※OSX(Mojave version 10.14.3)です。
シンボリックリンクの概要
シンボリックリンクとは、わかりやすく言うと外にあるファイルを呼び出し可能にするためのもの。
例えばカレントディレクトリが~/Desktop/symbolTest/
にあると、そこからカレントディレクトリを移動せずにホームディレクトリ直下にあるsample.txtを、
$cat sample.txt
というコマンドだけで呼び出すことはできません。(catコマンドは中身を表示するコマンドです。)
呼び出すにはカレントディレクトをホームディレクトリに移動してから、cat sample.txtとコマンドを入力する必要があります。
でもシンボリックリンクを利用すると、ホームディレクトリ以外の場所にいても、ホームディレクトリ直下にあるsample.txtを
$cat sample.txt
だけで呼び出すことができるようになります。
シンボリックリンクの作成方法
コマンドライン上で確認してみます。
$ cd ~/Desktop/
$ mkdir symbolTest
$ cd symbolTest/
$ touch stest.txt
$ mkdir dirX
これでDesktop配下に、stest.txtというテキストファイルとdirXというディレクトリが入ったsymbolTestディレクトリができました。
試しにlsコマンドで中身を確認してみます。
$ ls
dirX stest.txt
$ ls -l
total 0
drwxr-xr-x 2 ohmachi staff 64 3 12 16:33 dirX
-rw-r--r-- 1 ohmachi staff 0 3 12 16:33 stest.txt
ls -lコマンドの出力の一番右にあるのがそのディレクトリの名前です。
(そのほかの要素については後述。)
次にホームディレクトリ直下にsample.txtを作成します。
$ cd ~
$ cat > sample.txt
echo im god
echo hello
上記のように入力した後にCtrl + Dで保存すると、ホームディレクトリ直下にsample.txtが作成されました。
準備ができたので今からシンボリックリンクを作ります。
$ cd Desktop/symbolTest
Desktop直下のsymbolTestディレクトリに行き、
$ ln -s ~/sample.txt .
このようにコマンドを打つと、シンボリックリンクをカレントディレクトリ(.)に作成できます。
確認してみましょう
$ ls -l
total 0
drwxr-xr-x 2 ohmachi staff 64 3 12 16:33 dirX
lrwxr-xr-x 1 ohmachi staff 25 3 12 17:05 sample.txt -> /Users/ohmachi/sample.txt
-rw-r--r-- 1 ohmachi staff 0 3 12 16:33 stest.txt
このように間にlで始まるデータが真ん中に追加されました。
sample.txt -> /Users/ohmachi/sample.txtの部分は、このディレクトリにあるときにsample.txtを呼び出すと、/Users/ohmachi/sample.txtが呼び出されるようになった、ということです。
シンボリックリンクに別名をつけるには
呼び出すのはsample.txtなんだけど違う名前で呼び出したいと言うときは、
$ ln -s ~/sample.txt test.txt
こんな風にその呼び出したい名前を後につければOKです。
確認すると、
$ ls -l
total 0
drwxr-xr-x 2 ohmachi staff 64 3 12 16:33 dirX
lrwxr-xr-x 1 ohmachi staff 25 3 12 17:05 sample.txt -> /Users/ohmachi/sample.txt
-rw-r--r-- 1 ohmachi staff 0 3 12 16:33 stest.txt
lrwxr-xr-x 1 ohmachi staff 25 3 12 17:11 test.txt -> /Users/ohmachi/sample.txt
このように、一番下に新しく追加されました。
では実行してみましょう。
$ cat sample.txt
echo im god
$ cat test.txt
echo im god
うまく結びついてます。
ちなみに、
dirXディレクトリの一番左のdrwxr-xr-xはまずdとrwxr-xr-xに分かれていて、'd'はディレクトリであることを表します。これが'-'ならファイルであることを表し、'l'であればシンボリックリンクであることを表します。
rwxr-xr-xはさらに3文字ずつに分かれています(rwx、r-x、r-x)。それぞれ自分自身、グループ内の人、そのほかの人にできる権限がかかれてあります。
つまり、自分自身はr(読み込み)、w(書き込み)、x(実行)が可能であり、グループ(この出力結果だとstaff)の人はw(書き込み)以外は可能、そのほかの人もw(書き込み)以外は可能であるということを表します。
一つ右にある数字は要素の個数を表します。dirXディレクトリは'dirX'と' . 'があるので、2が表示されています。
そこから右に、順に所有者、グループ、データの大きさ、日時、と続きます。
手元にあるPCの所有者、グループの確認方法は、
$ id
uid=501(ohmachi) gid=20(staff) .....
uidの後の数字はユーザー識別子で、()内の文字列がユーザー名。gidも同様で、数字がグループ識別子で()内がグループ名。
id関連コマンドを使って、ユーザーやグループを追加・変更・削除することもできる。
シンボリックリンクの削除方法
削除方法は簡単。
$ unlink test.txt
とすればtest.txtのシンボリックリンクは消えます。
確認すると、
$ ls -l
total 0
drwxr-xr-x 2 ohmachi staff 64 3 12 16:33 dirX
lrwxr-xr-x 1 ohmachi staff 25 3 12 17:05 sample.txt -> /Users/ohmachi/sample.txt
-rw-r--r-- 1 ohmachi staff 0 3 12 16:33 stest.txt
ちゃんと消えてますね。
まとめ
シンボリックリンクを作成、削除する方法について解説してみましたが、いかがでしたでしょうか?
コマンドラインをいじることって全くPCを触ったことない人にとってはちょっと怖いと思うんです。実際自分は前のPCで環境変数を消してしまってちょっとした惨事になったことがあります。
でもプログラミングをやろうと思ったら絶対にコマンドラインを学ばないといけないし、うまくコマンドが動いてくれなかったりしてむしゃくしゃしたりもします。
なので、コマンドラインについての教科書を一冊は読んだ方が良いですね。実際読んでみると、PC自体の構造がわかってよかったです。
なのでコマンドラインが弱いと感じている人は本を一冊読むと段違いに学習コストが下がりますよ。
今回参考にした本はこちら
↓