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