Я хотел больше, чем вам нужно, мне нужно было также иметь возможность спрашивать о файлах в относительном каталоге, например ../../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 и как заставить его работать. Это работает. Спасибо