perheps:
pwd -P
da ajuda:
"- P: O nome do caminho impresso não conterá links simbólicos."
Quando tento encontrar o diretório de trabalho atual em um prompt de comando do Linux (usando "pwd"), ele mostra o diretório com os links simbólicos incluídos. Por exemplo, se eu fizer um link simbólico e usá-lo para visitar esse diretório:
ln -s /mnt/backup /home/biotech/backup
cd /home/biotech/backup
pwd
Isto mostrará "/ home / biotech / backup" em vez de "/ mnt / backup". Isso acontece no Ubuntu e no Cygwin.
Qual comando posso usar para ver o último, o diretório "real"?
/bin/pwd
Ele não sabe onde você esteve ou como chegou lá, então funciona desde os primeiros princípios.
Para resolver este problema para o caso geral (ou seja, não apenas o diretório atual), use:
readlink -f PATH
Do shell
pwd -P
da userland.
/bin/pwd
Para obter um comando pwd -P
mais portátil (compatível com POSIX), poderíamos usar o shell interno normal command
:
# cf. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_06
command -p pwd -P
#builtin command -p pwd -P
#alias pwd=echo; PATH="$(command -p getconf PATH)" 'pwd' -P
No windows7, eu uso cmd com vários hardlinks NTFS para pastas, cygwin, bash e perl estão no meu caminho, mas pwd -P não funciona como sugerido acima. Este script percorre a árvore e desvia os links para realdir:
CHN=$(cygpath -wam .)
echo $CHN
while true ;do
OLD=$DIR
DIR=$(cygpath -wam .)
if [[ ( -n "$OLD" ) && !( $OLD =~ $DIR* )]] ;then
SYM=$DIR/${OLD##*/}
CHN=$(echo $CHN | perl -lpe "s,$OLD,$SYM,")
echo $CHN
fi
case $DIR in [A-Z]:/ | [A-Z]:/cyg* ) break ;; esac # TOPLEVEL
cd $DIR/..
done
Tags symbolic-link linux shell