Tôi muốn nhiều hơn bạn cần, tôi cũng cần có thể hỏi về các tệp trong một thư mục tương đối ../../readme.md
, và kết quả sẽ giống như/Users/santi/readme.md
Vì vậy, tôi đã tạo một tập lệnh (thực thi) trong một thư mục là một phần của lệnh $PATH
được gọi lsf
với nội dung sau:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Vì vậy, bạn có thể sử dụng nó như thế này:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Không có thông số nào cho bạn cảnh báo
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Thư mục giả mạo cho bạn cảnh báo (vì dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Tệp giả nhưng thư mục thực không cảnh báo (bạn có thể thêm xác thực nếu bạn cần)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
sẽ không hoạt động trên non-GNU và làm thế nào để nó hoạt động. Những công việc này. Cảm ơn