Gostaria de uma maneira fácil de obter o caminho completo para um arquivo. Eu atualmente digito isso:
echo `pwd`/file.ext
Tentando reduzi-lo, criei um alias do bash:
alias fp='echo `pwd`/'
Mas agora, se eu digitar fp file.ext
, há um espaço que aparece entre o /
e o file.ext
.
Esse comando já existe e estou sentindo falta dele? Caso contrário, como eu criaria um apelido ou função no bash?
command-line
bash
Jens Erat
fonte
fonte
readlink -f
(ourealpath
, que é um utilitário antigo mantido para compatibilidade), expandirá adicionalmente todos os links simbólicos, o que não é necessariamente desejável.realpath
.Em vez do
pwd
comando, use aPWD
variável (também está no POSIX):Se você precisar dar suporte ao Windows, o reconhecimento de caminhos absolutos será mais complicado, pois cada porta das ferramentas unix possui suas próprias regras para converter caminhos de arquivos. Com Cygwin, use o
cygpath
utilitário.fonte
para responder sua pergunta com o que você usa agora:
o alias se expande na posição em que você está digitando no momento. você digitou:
isso se torna
você pode usar uma função para evitar isso:
você pode usar isso como de costume:
fonte
echo "`pwd`/$1"
*
em um diretório que contém outros arquivos).fp *
produz/tmp/4cc3ea0c1b34b
desde que esse é o primeiro parâmetro para a função. os outros parâmetros seriam os outros arquivos no diretório assim que eu tiver um arquivo chamado ' ', a função ainda funcionará conforme o esperado, chamando-o com "*" ou * ou *Você pode usar:
fonte
apt-cache search realpath
para revelar que os pacotes coreutils e plain ol ' realpath ambos contêm. Você pode digitarsudo apt-get install realpath
(oucoreutils
) para instalá-lo.De /programming//a/3915420/5795941
Esta é a única maneira que é aceitável para mim. Não expande links como realpath e readlink e é a maneira clássica de fazer isso que eu já vi por toda parte.
fonte