Ich wollte mehr als Sie brauchten, ich musste auch in der Lage sein, nach Dateien in einem relativen Verzeichnis zu fragen ../../readme.md
, und das Ergebnis sollte ungefähr so sein/Users/santi/readme.md
Also habe ich ein (ausführbares) Skript in einem Ordner erstellt, der Teil des $PATH
aufgerufenen ist, lsf
mit folgendem Inhalt:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Du kannst es also so benutzen:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Kein Parameter gibt Ihnen eine Warnung
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Gefälschtes Verzeichnis gibt Ihnen eine Warnung (wegen dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Gefälschte Datei, aber echtes Verzeichnis warnt nicht (Sie können bei Bedarf eine Validierung hinzufügen)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
nicht mit Nicht-GNU arbeiten würde und wie ich es zum Laufen bringen könnte. Das funktioniert. Vielen Dank