Saya ingin lebih dari yang Anda butuhkan, saya harus dapat juga bertanya tentang file dalam direktori relatif, seperti ../../readme.md
, dan hasilnya harus seperti/Users/santi/readme.md
Jadi saya membuat skrip (yang dapat dieksekusi) dalam folder yang merupakan bagian dari yang $PATH
dipanggil lsf
dengan konten berikut:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Jadi Anda bisa menggunakannya seperti ini:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Tidak ada parameter yang memberi Anda peringatan
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Direktori palsu memberi Anda peringatan (karena dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
File palsu tetapi direktori sebenarnya tidak memperingatkan (Anda dapat menambahkan validasi jika perlu)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
tidak bekerja pada non-GNU dan bagaimana membuatnya bekerja. Ini bekerja. Terima kasih