Je voudrais un moyen facile d'obtenir le chemin complet d'un fichier. Je tape actuellement ceci:
echo `pwd`/file.ext
En essayant de le raccourcir, j'ai créé un alias bash:
alias fp='echo `pwd`/'
Mais maintenant, si je tape fp file.ext
, un espace apparaît entre le /
et le file.ext
.
Une telle commande existe-t-elle déjà et me manque-t-elle? Sinon, comment pourrais-je créer un tel alias ou une telle fonction dans bash?
Sur les systèmes Linux, vous devez avoir readlink
du projet GNU coreutils installé et vous pouvez le faire:
readlink -f file.ext
L’utilitaire realpath installé dans les systèmes Debian/ubuntu peut "fournir principalement les mêmes fonctionnalités que /bin/readlink -f
dans le paquet coreutils".
Au lieu de la commande pwd
, utilisez la variable PWD
(elle existe également dans POSIX):
fp () {
case "$1" in
/*) printf '%s\n' "$1";;
*) printf '%s\n' "$PWD/$1";;
esac
}
Si vous devez prendre en charge Windows, la reconnaissance des chemins absolus sera plus compliquée, car chaque port des outils Unix a ses propres règles pour la traduction des chemins de fichiers. Avec Cygwin, utilisez l'utilitaire cygpath
.
pour répondre à votre question avec ce que vous utilisez en ce moment:
l'alias se développe à la position où vous tapez en ce moment. vous avez tapé:
% fp<SPACE>file.ext
cela devient
% echo `pwd`<SPACE>file.exe
vous pouvez utiliser une fonction pour éviter cela:
function fp() {
echo `pwd`/"$1"
}
vous pouvez l'utiliser comme d'habitude:
% fp file.ext
Vous pouvez utiliser:
realpath file.ext