Quería más de lo que necesitabas, necesitaba poder preguntar también sobre los archivos en un directorio relativo, como ../../readme.md
, y el resultado debería ser algo como/Users/santi/readme.md
Entonces creé un script (ejecutable) en una carpeta que es parte de la $PATH
llamada lsf
con los siguientes contenidos:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Entonces puedes usarlo así:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Ningún parámetro te avisa
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Directorio falso le da advertencia (debido a dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Archivo falso pero el directorio real no advierte (puede agregar validación si lo necesita)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
qué no funcionaría en un sistema que no sea GNU y cómo hacerlo funcionar. Esto funciona. Gracias