私はレガシーシステムで作業しており、他のフォルダにあるイメージを参照しているファイルがたくさんあります。
lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t100x133.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x133.jpg
lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t125x150.jpg -> /home/www/virtual/categories/swm/24/m/00012/t125x150.jpg
lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t150x200.jpg -> /home/www/virtual/categories/swm/24/m/00012/t150x200.jpg
これらがシンボリックリンクなのかエイリアスなのか、どうしたらわかりますか?
_lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
^
` Here it is, l for symbolic link.
_
ファイルがハードリンクの場合、他のファイルと同じように表示されます。たとえば、すべてのディレクトリには、ハードリンクされた_.
_という名前のディレクトリがあります。
$ man find
_から:通常のUnixファイルシステムの各ディレクトリには、少なくとも2つのハードリンクがあります。その名前と、そのディレクトリにリンクされている
.' entry. Additionally, its subdirectories (if any) each have a
.. 'エントリです。
_-rw-r--r-- 3 root root 60 2012-06-25 12:17 File
-rw-r--r-- 3 root root 60 2012-06-25 12:17 HardLinkToFile
-rw-r--r-- 3 root root 60 2012-06-25 12:17 HardLinkToFile2
lrwxrwxrwx 1 user nobody 56 Feb 10 2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
^
` This number is hard link (reference) count.
_
file
またはstat
コマンドは、ファイルが何であるかを通知します。
$ ln -s /home this_is_a_link
$ touch this_is_not_a_link
$ file this_*
this_is_a_link: symbolic link to `/home'
this_is_not_a_link: empty
$ stat this_*
File: `this_is_a_link' -> `/home'
Size: 5 Blocks: 0 IO Block: 4096 symbolic link
Device: ca00h/51712d Inode: 106983 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ andy) Gid: ( 1000/ andy)
Access: 2012-07-29 23:28:17.000000000 +0000
Modify: 2012-07-29 23:28:17.000000000 +0000
Change: 2012-07-29 23:28:17.000000000 +0000
File: `this_is_not_a_link'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: ca00h/51712d Inode: 106992 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ andy) Gid: ( 1000/ andy)
Access: 2012-07-29 23:28:27.000000000 +0000
Modify: 2012-07-29 23:28:27.000000000 +0000
Change: 2012-07-29 23:28:27.000000000 +0000
スクリプティングの場合は、test
コマンドの方が役立つ場合があります。
-h FILE FILE exists and is a symbolic link (same as -L)
$ for f in this_*; do if test -h "$f"; then echo "$f is a symlink"; else echo "$f is not a symlink"; fi; done
this_is_a_link is a symlink
this_is_not_a_link is not a symlink