GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir le répertoire absolu d'un fichier dans bash ?

Jetez un œil à realpath qui est disponible sur GNU/Linux, FreeBSD et NetBSD, mais pas sur OpenBSD 6.8. J'utilise quelque chose comme :

CONTAININGDIR=$(realpath ${FILEPATH%/*})

pour faire ce que vous semblez essayer de faire.


Pour obtenir le chemin complet, utilisez :

readlink -f relative/path/to/file

Pour obtenir le répertoire d'un fichier :

dirname relative/path/to/file

Vous pouvez également combiner les deux :

dirname $(readlink -f relative/path/to/file)

Si readlink -f n'est pas disponible sur votre système, vous pouvez utiliser ceci :

function myreadlink() {
  (
  cd "$(dirname $1)"         # or  cd "${1%/*}"
  echo "$PWD/$(basename $1)" # or  echo "$PWD/${1##*/}"
  )
}

Notez que si vous avez seulement besoin de vous déplacer vers un répertoire d'un fichier spécifié comme chemin relatif, vous n'avez pas besoin de connaître le chemin absolu, un chemin relatif est parfaitement légal, alors utilisez simplement :

cd $(dirname relative/path/to/file)

si vous souhaitez revenir (pendant l'exécution du script) au chemin d'origine, utilisez pushd au lieu de cd , et popd lorsque vous avez terminé.

* Alors que myreadlink ci-dessus est assez bon dans le contexte de cette question, il a une certaine limitation par rapport au readlink outil suggéré ci-dessus. Par exemple, il ne suit pas correctement un lien vers un fichier avec un basename différent .


Cela fonctionnera à la fois pour le fichier et le dossier :

absPath(){
    if [[ -d "$1" ]]; then
        cd "$1"
        echo "$(pwd -P)"
    else 
        cd "$(dirname "$1")"
        echo "$(pwd -P)/$(basename "$1")"
    fi
}

Linux
  1. Comment trouver le fichier le plus ancien dans une arborescence de répertoires sous Linux

  2. La fête ?

  3. Comment obtenir le Tty dans lequel Bash est en cours d'exécution ?

  4. comment trouver le propriétaire d'un fichier ou d'un répertoire en python

  5. Comment obtenir la taille de tar.gz dans le fichier (Mo) en python

Comment obtenir la taille d'un répertoire sous Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment obtenir la taille d'un répertoire sous Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment obtenir la taille physique d'un fichier sous Linux ?