筑波大学 システム情報系 情報工学域 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
https://www.coins.tsukuba.ac.jp/~syspro/2025/2025-05-14/symlink.html
あるいは、次のページから手繰っていくこともできます。
https://www.coins.tsukuba.ac.jp/~syspro/2025/
http://www.coins.tsukuba.ac.jp/~yas/
大量の情報を保存するには、木構造を使うしかない。 しかし、木構造だけではうまくいかない。
図13 こうもりの分類(1)
図14 こうもりの分類(2)
木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ けでは、ファイルを整理するには不都合が起きる。それを解消するために、次 のような名前で呼ばれる仕組みが用意されている。
注意:bash, csh の alias とファイル名の alias (Macintosh) は、まったくの別物。
図15 こうもりの分類(別名つき)
例:ruby コマンド
$ which ruby
/usr/local3/coins/linux/bin/ruby
$ ls -l /usr/local3/coins/linux/bin/ruby
lrwxrwxrwx 1 root root 55 3月 23 12:23 /usr/local3/coins/linux/bin/ruby -> /usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin/ruby
$
シンボリック・リンクは、ls -l で見ると、右端に l (小文字の L) と表示さ
れる。
ファイル /usr/local3/coins/linux/bin/ruby
を参照すると、
/usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin
にある
ruby
が使われる。
$ ls -l /usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin/ruby
-rwxr-xr-x 1 root root 214912 3月 23 12:00 /usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin/ruby
$ file /usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin/ruby
/usr/local3/coins/redhat/.rbenv/versions/3.2.1/bin/ruby: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5e2bcae78348e957ba39c26f5c2b6b693cc663f3, with debug_info, not stripped
$
シンボリック・リンクを作成するには、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 を使わない方が良い。