Je voudrais un moyen facile d'obtenir le chemin d'accès complet à un fichier. Je tape actuellement ceci:
echo `pwd`/file.ext
En essayant de le raccourcir, j'ai fait un alias bash:
alias fp='echo `pwd`/'
Mais maintenant, si je tape fp file.ext
, il y a un espace qui apparaît entre le /
et le file.ext
.
Une telle commande existe-t-elle déjà et je la manque? Sinon, comment pourrais-je créer un tel alias ou une telle fonction dans bash?
command-line
bash
Jens Erat
la source
la source
readlink -f
(ourealpath
, qui est un ancien utilitaire conservé à des fins de compatibilité) étendra également tous les liens symboliques, ce qui n'est pas nécessairement souhaitable.realpath
.Au lieu de la
pwd
commande, utilisez laPWD
variable (c'est aussi dans POSIX):Si vous devez prendre en charge Windows, la reconnaissance des chemins absolus sera plus compliquée car chaque port d'outils Unix a ses propres règles de traduction des chemins de fichiers. Avec Cygwin, utilisez l'
cygpath
utilitaire.la source
pour répondre à votre question avec ce que vous utilisez actuellement:
l'alias se développe à la position où vous tapez en ce moment. vous avez tapé:
cela devient
vous pouvez utiliser une fonction pour éviter cela:
vous pouvez l'utiliser comme d'habitude:
la source
echo "`pwd`/$1"
*
dans un répertoire contenant d'autres fichiers).fp *
donne/tmp/4cc3ea0c1b34b
puisque c'est le premier paramètre pour la fonction. les autres paramètres seraient les autres fichiers du répertoire. dès que j'ai un fichier appelé ' ', la fonction fonctionne toujours comme prévu, en l'appelant avec "*" ou * ou *Vous pouvez utiliser:
la source
apt-cache search realpath
pour révéler que les paquets coreutils et plain ol ' realpath les deux le contiennent. Vous pouvez ensuite tapersudo apt-get install realpath
(oucoreutils
) pour l'installer.Depuis /programming//a/3915420/5795941
C'est la seule façon qui m'est acceptable. N'étend pas les liens comme realpath et readlink et est la façon classique de le faire que j'ai vue partout.
la source