シンボリックリンク先のパスを取得

シェルスクリプトでシンボリックリンクの参照先パスを取得したい場合に利用するコマンド。

readlink で絶対パスがほしい場合 -f (–canonicalize)オプションを利用。
実際は basename や dirname と組み合わせてゴニョゴニョする。

Python では次の2つがある

  • os.readlink
  • os.path.realpath

++++++++++
応用

上記コマンドを利用して、シンボリックリンクの参照先のファイルに対して、 「.orig」の拡張子を付けてバックアップファイルを作成するには次のようにする。

$ echo test >  /tmp/foo
$ ln -s /tmp/foo /tmp/bar
$ ls -l /tmp/
lrwxrwxrwx  1 smith smith    8 Apr 12 22:04 bar -> /tmp/foo
-rw-rw-r--  1 smith smith    0 Apr 12 22:04 foo

$ readlink /tmp/bar
/tmp/foo

$ echo `readlink /tmp/bar`.orig
/tmp/foo.orig
$ cp /tmp/bar  `readlink /tmp/bar`.orig
$ ll /tmp/
total 44
lrwxrwxrwx  1 smith smith    8 Apr 12 22:04 bar -> /tmp/foo
-rw-rw-r--  1 smith smith    5 Apr 12 22:05 foo
-rw-rw-r--  1 smith smith    5 Apr 12 22:06 foo.orig

$ md5sum  /tmp/foo*
d8e8fca2dc0f896fd7cb4cb0031ba249  /tmp/foo
d8e8fca2dc0f896fd7cb4cb0031ba249  /tmp/foo.orig

もっと単純にいくなら

$ FILE=`readlink /tmp/bar`
$ cp $FILE $FILE.orig
Tagged with: , ,
Posted in linux, tip

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 1 week ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 3 weeks ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 3 weeks ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 6 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 9 months ago
%d bloggers like this: