Я хотів більше, ніж вам потрібно, мені потрібно було також мати можливість запитати про файли у відносному каталозі, наприклад ../../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 і як змусити його працювати. Це працює. Дякую