Linuxコマンド ln(ファイルへリンクを作成する)
ファイルへのリンク(ハードリンク」と「シンボリックリンク」)を作成するlnコマンドについて解説。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL
使用方法
lnコマンドを使用してハードリンクやシンボリックリンクを作成します。リンクには実リンク(ハードリンク)とシンボリック(ソフトリンク)があります。
ハードリンクは、「ファイルの中身に対するリンク」であり、リンク元とリンクファイルの関係は対応であり、一方のファイルが削除された場合でも内容は保持されます。また、一般ユーザーアカウントでは、ディレクトリに対するハードリンクを作成することができません。
シンボリックは、リンク元とリンクファイルのお関係は「主従」の関係にあり、リンク元のファイルを削除するとリンクファイルは読み出すことができなくなります。Windowsのショートカットと同様です。
書式
$ ln [オプション・・・] リンク元ファイル名 リンクファイル名
$ ln [オプション・・・] リンク元ディレクトリ名 リンクディレクトリ名
オプション
-f, –force | 既にリンクファイルがあった場合は削除する |
-i, –interactive | すでにリンクファイルがあった場合は問合せして削除する |
-L, –logical | 対象ファイルがシンボリックリンクの場合はリンクをたどる |
-s | シンボリックリンクを作成する |
-r, –relative | 相対パスを使ったシンボリックリンクを作成する |
–backup[=フラグ] | 移動先に同じファイル名がある場合のバックアップ方法を指定する |
-S 文字列, –suffix=文字列 | 移動先に同じファイル名がある場合、 指定した文字列をバックアップファイル名に付加する。「.」などは勝手に付加されない |
フラグ | 説明 |
---|---|
none/off | バックアップを作成しない |
numbered/t | 常に数字の拡張子を持つバックアップを作成する |
existing/nil | 数字つきのバックアップファイルがある場合は加算、ない場合は「~」だけ付加する |
simple/never | 「~」をつけるだけのバックアップを行う |
.(ドット)や..(ドットドット)
lsコマンドに-aオプションを付けることにより、.(カレントディレクトリ)や..(親ディレクトリ)が表示されるが、これはカレントディレクトリや親ディレクトリを示すハードリンクである。
サンプル:シンボリックリンクを作成する
$ ln -s sample1/sample.txt ln_sample
実行結果
[centos@ work]$ tree
.
└── sample1
└── sample.txt
1 directory, 1 file
[centos@ work]$ ln -s sample1/sample.txt ln_sample
[centos@ work]$ tree
.
├── ln_sample -> sample1/sample.txt
└── sample1
└── sample.txt
1 directory, 2 files
[centos@ work]$ cat sample1
cat: sample1: Is a directory
[centos@ work]$ cat sample
cat: sample: No such file or directory
[centos@ work]$ cat ln_sample
sample test data
[centos@ work]$ rm sample1/sample.txt ←参照元を削除
[centos@ work]$ cat ln_sample
cat: ln_sample: No such file or directory ←参照元の実体がないためエラーとなる。
[centos@ work]$
サンプル:ハードリンクを作成する
$ ln sample1/sample.txt sample
実行結果
[centos@ work]$ ln sample1/sample.txt sample
[centos@ work]$ tree
.
├── sample
└── sample1
└── sample.txt
1 directory, 2 files
[centos@ work]$ rm sample1/sample.txt ←リンク元を削除する
[centos@ work]$ tree
.
├── sample
└── sample1
1 directory, 1 file
[centos@ work]$ cat sample ←リンク元が削除されても、ハードリンクはcatで表示できる。
sample test data
[centos@ work]$