目的
unix で ln をいまいち理解できていないので、調べてみました。
リンクについて
まず、リンクには2種類あります。
- ハードリンク
- シンボリックリンク
ハードリンクとは
(以下 man コマンドより引用)
By default, ln makes hard links. A hard link to a file is indistinguishable from the original direc-
tory entry; any changes to a file are effectively independent of the name used to reference the file.
Hard links may not normally refer to directories and may not span file systems.
シンボリックリンクとは
(以下 man コマンドより引用)
A symbolic link contains the name of the file to which it is linked. The referenced file is used when
an open(2) operation is performed on the link. A stat(2) on a symbolic link will return the linked-to
file; an lstat(2) must be done to obtain information about the link. The readlink(2) call may be used
to read the contents of a symbolic link. Symbolic links may span file systems and may refer to direc-
tories.
使ってみる
ハードリンク
$ ln test1.txt test1_to_hard.txt
$ ls -l
-rw-r--r-- 2 xxxxx staff 4 10 4 20:14 test1.txt
-rw-r--r-- 2 xxxxx staff 4 10 4 20:14 test1_to_hard.txt
シンボリックリンク
$ ln -s test2.txt test2_to_symbolic.txt
$ ls -l
-rw-r--r-- 1 xxxxx staff 5 10 4 20:14 test2.txt
lrwxr-xr-x 1 xxxxx staff 9 10 4 22:55 test2_to_symbolic.txt -> test2.txt
リンクを消す方法は下記です
$ unlink test1_to_hard.txt
$ unlink test2_to_symbolic.txt