Linux ln(シンボリックリンク)コマンドの使い方(作成、変更、削除)

いつもどっちがどっちか忘れるので書いておきます。 どっちがどっちか分かるように書いたつもりです。 日本語力のない私では、他のサイトではどっちがどっちか分からなかった...

リンク作成

  • リンク参照先:実体があるところ
  • シンボリックリンク:aliasのように実体は無く、実体のあるディレクトリやファイル等のリンク参照先にリンクされるので、リンク参照先のデータにアクセスできる。
  • リンク参照先はファイルでもディレクトリでもOK。
$ ln -s リンク参照先 シンボリックリンク
$ ls -l
lrwxrwxrwx 1 ichiri ichiri        15  7月  3 12:23  シンボリックリンク -> リンク参照先

リンク削除

  • ls -l』で確認して、『lrwxrwxrwx』の様に先頭にlが付いているシンボリックリンクのみ削除できる。
$ ls -l
lrwxrwxrwx 1 ichiri ichiri        15  7月  3 12:23  シンボリックリンク -> リンク参照先

$ unlink シンボリックリンク

リンク変更

上記の様に既にシンボリックリンクがある現リンク参照先1にリンクされていたら、その参照先を変更する時に使用する。 シンボリックリンクを一旦削除して、新たに作成しても同じことができます。

$ ls -l
lrwxrwxrwx 1 ichiri ichiri        15  7月  3 12:23  シンボリックリンク名 -> 現リンク参照先1

$ ln -nfs シンボリックリンク 新リンク参照先2

$ ls -l
lrwxrwxrwx 1 ichiri ichiri        15  7月  3 12:23  シンボリックリンク -> 新リンク参照先2

オプション

  • -s:シンボリックリンク作成(なしの場合はハードリンク)
  • -f:上書き(確認問い合わせなし)
  • -i:上書き(確認問い合わせ有り)
  • -v:リンク登録際に、シンボリックリンク名とリンク参照先名を表示
  • -b:既に存在するシンボリックリンク名と同じシンボリックリンク名でリンクを作成する時にリンク関係バックアップを、リンク参照先ディレクトリ内に作る。
  • -S:-bオプション時バックアップするリンク関係のシンボリックリンク名の末尾に指定する文字列を付け加える
  • -P:ハードリンク作成(-sを省略するとハードリンクになる)。 ハードリンクなのでシンボリックリンクの部分が実在するディレクトかファイルでなければならない。
  • -d:スーパーユーザーでもディレクトリのハードリンクの設定が出来ない時に使うopション。

ハードリンクとシンボリック(ソフト)リンク

  • ハードリンクは、homeはhomeと『.』の2つのハードリンクを持っている。
  • シンボリックリンクは実体がなくても作れるが、ハードリンクは実体(ファイルやディレクトリ)が必要。
  • ハードリンクは別名として作成することもできる。
  • ハードリンクは『-s』なしのlnで作成できる。
  • 以下の例では、存在するtest.txtの別名リンクとしてichiri.bbbとしている。test.txtもichiri.bbbも同じ実体を指すハードリンクなので優劣はない。 
  • viなどでどちらのファイルをしてしても編集ができる。 chmod等で一方の権限を変更すると、もう一方も変更される。
  • test.txtを削除してもichiri.bbbのハードリンクがあるので実体は残る。
$ ln test.txt ichiri.bbb

コメント