Volevo più di quello che serve, avevo bisogno di poter chiedere anche dei file in una directory relativa, come ../../readme.md
, e il risultato dovrebbe essere qualcosa come /Users/santi/readme.md
Così ho creato uno script (eseguibile) in una cartella che fa parte del $PATH
chiamato lsf
con i seguenti contenuti:
#!/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
Quindi si può usare in questo modo:
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
``` ```
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Nessun parametro dà un avvertimento
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
Fake directory dà un avvertimento (a causa di dirname
)
&001 &001
Fake file ma la directory reale non avverte (si può aggiungere la validazione se necessario)
&001