Score:3

ฉันจะทดสอบเส้นทางใน bash อย่างรวดเร็วเพื่อตรวจสอบว่าส่วนใดของมันเป็น symlink ได้อย่างไร

ธง us

หากฉันมีเส้นทางเช่นนี้พร้อม symlink:

/นี่/หนึ่ง/สอง/สาม

มี one-liner ที่รวดเร็วสำหรับการพิจารณาว่าอีกหนึ่งส่วนในเส้นทางนั้นเป็น symlink หรือไม่? ตัวอย่างเช่น ฉันต้องการตรวจหาว่า นี้, หนึ่ง, สอง, หรือ สาม ในตัวอย่างด้านบนคือ symlink

วิธีหนึ่งคือการเปรียบเทียบเส้นทางที่มี symlink กับผลลัพธ์ของ readlink -f <เส้นทาง>. สงสัยว่ามีวิธีที่เร็วกว่านี้ไหม

Score:6
ธง cn

ฉันจะใช้:

ถ้า [[ "$my_path" != "$(realpath --canonicalize-existing $my_path)" ]];แล้ว
  echo เส้นทาง $my_path เป็นเส้นทางสัมพัทธ์หรือมี symlink
อื่น
  echo เส้นทาง $my_path เป็นค่าสัมบูรณ์
ไฟ
Score:0
ธง eg

คุณสามารถใช้ได้ อึดอัด และ พิมพ์ สำหรับใช้ในกรณีนี้หรือกรณีอื่น ๆ มันง่ายและมีประโยชน์มาก ในกรณีนี้ คุณสามารถทำตามขั้นตอนดังต่อไปนี้: 1 = open ~/.bashrc และเพิ่มคำสั่งด้านล่างของไฟล์นี้

นามแฝง issymlink="sh /bin/issymlink.sh $1"

2 = สร้างไฟล์ที่มีเนื้อหาร้องใน /bin/issymlink.sh

#!/bin/bash
เส้นทาง = $1
พิมพ์=`สถิติ $1 | awk 'FNR == 2 {พิมพ์ $8;}'`

ถ้า [ $type != " symbolic " ]
แล้ว
  echo เส้นทาง $1 เป็นแบบสัมบูรณ์และประเภทของเส้นทางนี้คือ $type
อื่น
  echo เส้นทาง $1 คือ symlinks
ไฟ

3 - ออกจากระบบและเข้าสู่ระบบหรือพิมพ์ สุ ในเทอร์มินัลและป้อน ในที่สุดคุณก็พิมพ์ได้ issymlink PATH/TO/FILE/OR/DIRECTORY ในเทอร์มินัลแล้วป้อนเพื่อตรวจสอบประเภทของไฟล์

ตัวอย่างการใช้งานและเอาต์พุต:

issymlink /lib
เส้นทาง /lib เป็นแบบสัมบูรณ์และประเภทของเส้นทางนี้คือไดเร็กทอรี

issymlink /etc/nginx/sites-enabled/default
เส้นทาง /etc/nginx/sites-enabled/default คือ symlinks
Score:-1
ธง in

จาก: https://unix.stackexchange.com/questions/96907/how-do-i-check-if-a-file-is-a- symbolic-link-to-a-directory

สิ่งที่เราเห็น? [[ -L ]] - ทำงานนี้เพื่อเรา ไชโย

# cat script.sh 
#!/bin/bash

/bin/rm -vfr สิ่งนี้
/bin/mkdir -vp นี่/หนึ่ง/สอง/สาม

/bin/mv -v นี่/หนึ่ง/สอง/สามสิ่งนี้/หนึ่ง/สอง/real_three
/bin/ln -vfs real_three นี่/หนึ่ง/สอง/สาม
/bin/ls -altr นี่/หนึ่ง/สอง/

/bin/mv -v นี่/หนึ่ง/สองสิ่งนี้/หนึ่ง/real_two
/bin/ln -vfs real_two นี่/หนึ่ง/สอง
/bin/ls -altr นี่/หนึ่ง/สอง/
/bin/ls -altr นี่/หนึ่ง/

tmp="นี่/หนึ่ง/สอง/สาม"

ในขณะที่ [ "$tmp" != "." ]; ทำ
        ถ้า [ -L "$tmp" ]; แล้ว
                /bin/echo "$tmp - เป็น symlink"
        อื่น
                /bin/echo "$tmp - ไม่ใช่ symlink"
        ไฟ
        tmp=$(/bin/dirname $tmp)
เสร็จแล้ว

การใช้งาน:

# ทุบตี script.sh 
ลบ 'นี้/หนึ่ง/สอง'
ลบไดเร็กทอรี 'this/one/real_two/real_three'
ลบ 'นี้/หนึ่ง/จริง_สอง/สาม'
ลบไดเร็กทอรี 'this/one/real_two'
ลบไดเร็กทอรี 'this/one'
ลบไดเรกทอรี 'นี้'
/bin/mkdir: สร้างไดเรกทอรี 'นี้'
/bin/mkdir: สร้างไดเรกทอรี 'นี้/หนึ่ง'
/bin/mkdir: สร้างไดเรกทอรี 'นี้/หนึ่ง/สอง'
/bin/mkdir: สร้างไดเรกทอรี 'นี้/หนึ่ง/สอง/สาม'
เปลี่ยนชื่อ 'นี่/หนึ่ง/สอง/สาม' -> 'นี่/หนึ่ง/สอง/real_three'
'นี่/หนึ่ง/สอง/สาม' -> 'real_three'
รวม 12
drwxr-xr-x 2 รูท 4096 8 ส.ค. 20:08 real_three
drwxr-xr-x 3 รูท 4096 8 ส.ค. 20:08 ..
lrwxrwxrwx 1 รูท 10 ส.ค. 8 20:08 สาม -> real_three
drwxr-xr-x 3 รูทรูท 4096 8 ส.ค. 20:08 น.
เปลี่ยนชื่อ 'นี้/หนึ่ง/สอง' -> 'นี้/หนึ่ง/real_two'
'นี้/หนึ่ง/สอง' -> 'real_two'
รวม 12
drwxr-xr-x 2 รูท 4096 8 ส.ค. 20:08 real_three
lrwxrwxrwx 1 รูท 10 ส.ค. 8 20:08 สาม -> real_three
drwxr-xr-x 3 รูทรูท 4096 8 ส.ค. 20:08 น.
drwxr-xr-x 3 รูท 4096 8 ส.ค. 20:08 ..
รวม 12
drwxr-xr-x 3 รูท 4096 8 ส.ค. 20:08 ..
drwxr-xr-x 3 รูทรูท 4096 8 ส.ค. 20:08 real_two
lrwxrwxrwx 1 รูทรูท 8 ส.ค. 8 20:08 สอง -> real_two
drwxr-xr-x 3 รูทรูท 4096 8 ส.ค. 20:08 น.
นี่/หนึ่ง/สอง/สาม - เป็น symlink
นี่/หนึ่ง/สอง - เป็น symlink
this/one - ไม่ใช่ symlink
นี่ - ไม่ใช่ symlink
in flag
แม้ว่านี่จะไม่ใช่คำตอบที่แย่ แต่น้ำเสียงก็คือ โปรดเขียนคำตอบของคุณใหม่เพื่อให้ตรงประเด็นมากขึ้น
us flag
มันไม่ใช่คำตอบที่ดี มันไม่ใช่สิ่งที่ฉันถามด้วยซ้ำ
Michael Hampton avatar
cz flag
@StevieD คุณขอวิธีตรวจสอบว่าเส้นทางมีส่วนประกอบที่เป็น symlink หรือไม่ สิ่งนี้ทำอย่างนั้นและดูเหมือนจะแม่นยำ 100% มันเป็นวิธีที่ละเอียดเกินไปในตัวอย่าง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา