316 votes

Obtenir le parent d'un répertoire en Bash

Si j'ai un chemin de fichier tel que...

/home/smith/Desktop/Test
/home/smith/Desktop/Test/

Comment changer la chaîne de caractères pour que ce soit le répertoire parent ?

par exemple

/home/smith/Desktop
/home/smith/Desktop/

4 votes

Vous pouvez simplement utiliser ' .. mais ce n'est peut-être pas ce que vous aviez à l'esprit.

2 votes

' ne peut être utilisé que pour le chemin d'un répertoire et non pour le chemin d'un fichier.

0voto

kris Points 249

Partant de l'idée/commentaire Charles Duffy - 17 déc. 14 à 5:32 sur le sujet Obtenir le nom du répertoire courant (sans le chemin complet) dans un script de Bash.

#!/bin/bash
#INFO : https://stackoverflow.com/questions/1371261/get-current-directory-name-without-full-path-in-a-bash-script
# comment : by Charles Duffy - Dec 17 '14 at 5:32
# at the beginning :

declare -a dirName[]

function getDirNames(){
dirNr="$(  IFS=/ read -r -a dirs <<<"${dirTree}"; printf '%s\n' "$((${#dirs[@]} - 1))"  )"

for(( cnt=0 ; cnt < ${dirNr} ; cnt++))
  do
      dirName[$cnt]="$( IFS=/ read -r -a dirs <<<"$PWD"; printf '%s\n' "${dirs[${#dirs[@]} - $(( $cnt+1))]}"  )"
      #information – feedback
      echo "$cnt :  ${dirName[$cnt]}"
  done
}

dirTree=$PWD;
getDirNames;

0voto

ClimbingTheCurve Points 193

Si, pour une raison ou une autre, vous êtes intéressé par la navigation dans un nombre spécifique de répertoires, vous pouvez également le faire : nth_path=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd ../../../ && pwd) . Cela donnerait 3 répertoires de parents en haut

0 votes

Pourquoi ${BASH_SOURCE[0]} au lieu du plus simple $BASH_SOURCE

-4voto

AngJobs on Github Points 5111

Cela irait jusqu'au dossier parent

cd ../

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X