Eu queria mais do que você precisava, também precisava poder perguntar sobre arquivos em um diretório relativo, como ../../readme.md
, e o resultado deve ser algo como/Users/santi/readme.md
Então, criei um script (executável) em uma pasta que faz parte da $PATH
chamada lsf
com o seguinte conteúdo:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
Então você pode usá-lo assim:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
Nenhum parâmetro avisa
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
Diretório falso fornece aviso (por causa de dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
Arquivo falso, mas o diretório real não avisa (você pode adicionar a validação se precisar)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
-f
que não funcionaria em não-GNU e como fazê-lo funcionar. Isso funciona. Graças