ฉันจะทราบได้อย่างไรว่าไฟล์เป็นนามแฝงหรือลิงก์สัญลักษณ์?


13

ฉันกำลังทำงานกับระบบดั้งเดิมและฉันมีไฟล์จำนวนมากที่อ้างถึงรูปภาพที่อยู่ในโฟลเดอร์อื่น

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

ฉันจะรู้ได้อย่างไรว่าสิ่งเหล่านี้เป็นลิงก์สัญลักษณ์หรือชื่อแทน?


3
ลิงก์สัญลักษณ์คือรายการไฟล์ที่อ้างอิงไฟล์อื่น ใน Linux alias คือการแทนที่ไวยากรณ์คำสั่ง นามแฝงหมายถึงอะไร หรือคุณเพียงแค่ถามวิธีระบุไฟล์ที่เป็นลิงก์สัญลักษณ์? find folder -type lจะแสดงลิงค์สัญลักษณ์ทั้งหมดด้านล่าง 'โฟลเดอร์'
StarNamer

คุณกำลังถามเกี่ยวกับนามแฝงใน Mac OS X Finder หรือชื่อแทนคำสั่งเชลล์?
Daniel Beck

ฉันคิดว่าฉันสับสนเล็กน้อย ไฟล์ในคำถามเป็นเพียงลิงก์สัญลักษณ์และฉันคิดว่าฉันสับสนกับนามแฝง Os X Finder
Martin

คำตอบ:


16

ลิงก์สัญลักษณ์:

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.

หากไฟล์ของคุณเป็นลิงก์ที่แข็งแสดงว่าไฟล์นั้นปรากฏขึ้นเช่นเดียวกับไฟล์อื่น ๆ ตัวอย่างเช่นทุกไดเรกทอรีมีไดเรกทอรีชื่อ.hardlinked ไป

จาก$ 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.

11

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.