Làm thế nào tôi có thể tìm ra nếu tập tin là bí danh hoặc liên kết tượng trưng?


13

Tôi đang làm việc trên một hệ thống cũ và tôi có một loạt các tệp đang tham chiếu các hình ảnh được đặt trong các thư mục khác.

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

Làm thế nào tôi có thể biết nếu đây là các liên kết tượng trưng hoặc bí danh?


3
Một liên kết tượng trưng là một mục nhập tệp tham chiếu một tệp khác. Trong Linux, bí danh là một thay thế cú pháp lệnh. Bạn có ý nghĩa gì bởi một bí danh? Hay bạn chỉ đơn giản là hỏi làm thế nào để xác định tập tin nào là liên kết tượng trưng? find folder -type lsẽ liệt kê tất cả các liên kết tượng trưng bên dưới 'thư mục'.
StarNamer

Bạn đang hỏi về bí danh trong Mac OS X Finder, hay bí danh lệnh shell?
Daniel Beck

Tôi đoán tôi đã hơi bối rối. Các tập tin trong câu hỏi chỉ là liên kết tượng trưng và tôi đoán rằng tôi đã nhầm lẫn với bí danh Os X Finder.
Martin

Câu trả lời:


16

Liên kết tượng trưng:

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.

Nếu các tệp của bạn là các liên kết cứng thì chúng sẽ hiển thị giống như các tệp khác. Ví dụ, mỗi thư mục có thư mục có tên .hardlinked đến nó.

Từ $ man find:

Mỗi thư mục trên một hệ thống tệp Unix bình thường có ít nhất 2 liên kết cứng: tên của nó và mục .' entry. Additionally, its subdirectories (if any) each have a.. 'được liên kết với thư mục đó.

Liên kết cứng:

-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.

11

Các lệnh filehoặc statsẽ cho bạn biết một tập tin là gì:

$ 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

Nếu kịch bản, testlệnh có thể được sử dụng nhiều hơn:

   -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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.