筑波大学 システム情報系 情報工学域 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2022/2022-05-11/symlink.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2022/
http://www.coins.tsukuba.ac.jp/~yas/
大量の情報を保存するには、木構造を使うしかない。 しかし、木構造だけではうまくいかない。
図13 こうもりの分類(1)
図14 こうもりの分類(2)
木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ けでは、ファイルを整理するには不都合が起きる。それを解消するために、次 のような名前で呼ばれる仕組みが用意されている。
注意:bash, csh の alias とファイル名の alias (Macintosh) は、まったくの別物。
図15 こうもりの分類(別名つき)
例:java コマンド
$ ls -l /usr/bin/java
lrwxr-xr-x 1 root wheel 74 10 7 2015 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
$
シンボリック・リンクは、ls -l で見ると、右端に l (小文字の L) と表示さ
れる。
ファイル /usr/bin/java
を参照すると、
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
にある
java
が使われる。
$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
-rwxr-xr-x 1 root wheel 54624 2 7 2014 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
$
シンボリック・リンクを作成するには、ln -s コマンドを使う。
$ ln -s oldname newname
この結果、newname
でファイルを参照すると、
oldname
というファイルが使われる。(このファイルは、
newname
と oldname
の2つの名前を持つ。)
$ cat file1
cat: file1: No such file or directory
$ echo file1 > file1
$ cat file1
file1
$ ln -s file1 slink1
$ cat slink1
file1
$ ls -l file1 slink1
-rw-r--r-- 1 yas prof 6 6 17 14:20 file1
lrwxr-xr-x 1 yas prof 5 6 17 14:20 slink1 -> file1
$ cp slink1 file2
$ ls -l file2
-rw-r--r-- 1 yas prof 6 6 17 2015 file2
$ cat file2
file1
$
cp -r や cp -R でファイルをコピーする時に、シンボリック・リンクが含まれ
ていると、問題が生じることがある。システム(MacOS, Linux, BSD)によって
cp コマンドの挙動が異なる。シンボリック・リンクをシンボリック・リンクと
してコピーするには、tar コマンド等を使い、cp を使わない方が良い。