Chciałem więcej niż potrzebowałeś, musiałem też móc pytać o pliki w katalogu względnym, jak ../../readme.md
, a wynikiem powinno być coś w rodzaju /Users/santi/readme.md
Więc stworzyłem (wykonywalny) skrypt w katalogu, który jest częścią $PATH
o nazwie lsf
z następującą zawartością:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Więc możesz użyć go w ten sposób:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Żaden z parametrów nie daje ostrzeżenia
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Fałszywy katalog daje ostrzeżenie (z powodu dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Fałszywy plik, ale prawdziwy katalog nie daje ostrzeżenia (możesz dodać walidację, jeśli chcesz)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md