Ik wilde meer dan je nodig had, ik moest ook kunnen vragen naar bestanden in een relatieve directory, zoals ../../readme.md
, en het resultaat zou iets moeten zijn als /Users/santi/readme.md
Dus heb ik een (uitvoerbaar) script gemaakt in een map die deel uitmaakt van de $PATH
genaamd lsf
met de volgende inhoud:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
zodat je het zo kunt gebruiken:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Geen parameters geeft je een waarschuwing
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Fake directory geeft je een waarschuwing (vanwege dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Fake file maar echte directory waarschuwt niet (je kunt validatie toevoegen als je dat nodig hebt)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md