Eu não acho que haja um comando buildin que faça isso. Jesse Wilson escreveu um script bash para isso:
#!/bin/bash
cd -P -- "$(dirname -- "$1")" &&
printf '%s\n' "$(pwd -P)/$(basename -- "$1")"
No entanto, não funciona bem para caminhos diretamente abaixo de /
, como /etc
(impressão //etc
), bem como .
e ..
(impressão /cwd/.
em ambos os casos). Eu tentei modificá-lo, mas meu bash-fu insuficiente me falhou.
Esta é minha sugestão:
#!/usr/bin/env python
import os.path
import sys
for arg in sys.argv[1:]:
print os.path.abspath(arg)
Salvar como /usr/bin/abspath
ou algo parecido e torná-lo executável. Exemplo de saída:
Servus08:~ danielbeck$ abspath .
/Users/danielbeck
Servus08:~ danielbeck$ abspath /tmp
/tmp
Servus08:~ danielbeck$ abspath Documents
/Users/danielbeck/Documents
Servus08:~ danielbeck$ abspath . /tmp Documents
/Users/danielbeck
/tmp
/Users/danielbeck/Documents
Se você fizer quiser uma resolução de link simbólico, altere a linha print
desta forma:
print os.path.realpath(os.path.abspath(arg))
para obter isso:
Servus08:~ danielbeck$ abspath . /tmp Documents
/Users/danielbeck
/private/tmp
/Users/danielbeck/Documents