ฉันต้องการมากกว่าที่คุณต้องการฉันต้องสามารถถามเกี่ยวกับไฟล์ในไดเรกทอรีญาติเช่น../../readme.md
และผลลัพธ์ควรเป็นเช่น/Users/santi/readme.md
ดังนั้นฉันจึงสร้างสคริปต์ (ปฏิบัติการ) ในโฟลเดอร์ที่เป็นส่วนหนึ่งของ$PATH
ชื่อที่lsf
มีเนื้อหาดังต่อไปนี้:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
ดังนั้นคุณสามารถใช้สิ่งนี้:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
ไม่มีพารามิเตอร์ให้คำเตือน
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
ไดเรกทอรีปลอมให้คำเตือนคุณ (เพราะdirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
ไฟล์ปลอม แต่ไดเรกทอรีจริงไม่ได้เตือน (คุณสามารถเพิ่มการตรวจสอบหากคุณต้องการ)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
ไม่ทำงานกับผู้ที่ไม่ใช่ GNU และทำอย่างไรถึงจะทำงานได้ วิธีนี้ใช้ได้ผล ขอบคุณ