LoginSignup
2
1

More than 5 years have passed since last update.

lnのオプション

Posted at

lnのオプションがわからなかったので、調べてみた

結論

ln -snfを使いましょう

やってみる

環境

OS X El Captain
バージョン 10.11.4

準備

yoan@wolverine [13時46分57秒] [/tmp/test]
-> % ls
file-2016-04-16_13:46:51
yoan@wolverine [13時46分58秒] [/tmp/test]
-> % cat file-2016-04-16_13:46:51
hogehoge

-sオプション

通常の用途としては問題なく利用できる

yoan@wolverine [13時47分08秒] [/tmp/test]
-> % ln -s file-2016-04-16_13:46:51 symlink
yoan@wolverine [13時47分24秒] [/tmp/test]
-> % cat symlink
hogehoge

しかし、リンク元が変わった場合にリンクを再度作成することができない。
(ログファイルがローテートされたタイミング等)

yoan@wolverine [13時47分27秒] [/tmp/test]
-> % mv file-2016-04-16_* file-`date "+%Y-%m-%d_%H:%M:%S"`
yoan@wolverine [13時47分50秒] [/tmp/test]
-> % cat symlink
cat: symlink: No such file or directory
yoan@wolverine [13時48分01秒] [/tmp/test]
-> % ln -s file-2016-04-16_13:47:50 symlink
ln: symlink: File exists

-fオプション

いわゆるforceオプション

リンクがすでに存在している場合に、そのリンクを削除してから、新しく作る

yoan@wolverine [13時48分10秒] [/tmp/test]
-> % ln -sf file-2016-04-16_13:47:50 symlink
yoan@wolverine [13時48分14秒] [/tmp/test]
-> % cat symlink
hogehoge
yoan@wolverine [13時48分16秒] [/tmp/test]
-> %

-n(-h)オプション

-h    If the target_file or target_dir is a symbolic link, do not follow it.  This is most useful with the -f option, to replace a symlink which may point to a directory.

-n    Same as -h, for compatibility with other ln implementations.
  • リンク対象となるファイル/ディレクトリがシンボリックリンクの場合、なにも行わない
  • -fオプションと共に利用すると、シンボリックリンクがディレクトリを指している時に有用である

意味がわからんのでやってみる。
ディレクトリ2つとfooディレクトリへのシンボリックリンクを準備

yoan@wolverine [14時09分04秒] [/tmp/test]
-> % ls
bar     foo
yoan@wolverine [14時11分05秒] [/tmp/test]
-> % cat bar/file
bar
yoan@wolverine [14時11分13秒] [/tmp/test]
-> % cat foo/file
foo
yoan@wolverine [14時09分16秒] [/tmp/test]
-> % ln -sf foo symlink
yoan@wolverine [14時09分04秒] [/tmp/test]
-> % ls
bar     foo     symlink

symlinkをbarディレクトリに変更する

-sfだとディレクトリが変わっていない。

yoan@wolverine [14時09分16秒] [/tmp/test]
-> % ln -sf bar symlink
yoan@wolverine [14時09分22秒] [/tmp/test]
-> % cat symlink/file
foo

-nオプションを利用すると、ディレクトリが変わっている。

yoan@wolverine [14時09分27秒] [/tmp/test]
-> % ln -snf bar symlink
yoan@wolverine [14時10分08秒] [/tmp/test]
-> % cat symlink/file
bar
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1