unix のln について調べた
unix ln
Published: 2018-09-22

目的

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