783 votes

Obtenez nom du répertoire courant (sans le chemin complet) dans le Script Bash

Comment aurais-je obtenir juste le répertoire de travail courant du nom de dans un script bash, ou encore mieux, juste un terminal de commande.

pwd donne le chemin complet du répertoire de travail en cours, par exemple, /opt/local/bin , mais je veux seulement bin

1055voto

Charles Duffy Points 34134

Pas besoin de basename, et surtout pas besoin d'un shell interne est exécuté running ddt (qui ajoute un supplément, et chère, fourchette de fonctionnement); le shell peut le faire à l'interne à l'aide du paramètre d'extension:

result=${PWD##*/}          # to assign to a variable

printf '%s\n' "${PWD##*/}" # to print to stdout
                           # ...more robust than echo for unusual names
                           #    (consider a directory named -e or -n)

printf '%q\n' "${PWD##*/}" # to print to stdout, quoted for use as shell input
                           # ...useful to make hidden characters readable.

305voto

Arkady Points 4015

Utiliser l' basename programme. Pour votre cas:

% basename "$PWD"
bin

135voto

DigitalRoss Points 80400
$ echo ${PWD##*/}

​​​​​

23voto

mbelos Points 88

Vous pouvez utiliser une combinaison de la dps et basename. E. g.

#!/bin/bash

CURRENT=`pwd`
BASENAME=`basename $CURRENT`

echo $BASENAME

exit;

8voto

FDS Points 583

J'aime la réponse choisie (Charles Duffy), mais attention, si vous êtes liés par un lien symbolique dir et que vous voulez le nom de la cible dir. Malheureusement, je ne pense pas que cela peut être fait en un seul paramètre de l'expansion de l'expression, peut-être que je me trompe. Cela devrait fonctionner:

target_PWD=$(readlink -f .)
echo ${target_PWD##*/}

Pour voir cela, une expérience:

cd foo
ln -s . bar
echo ${PWD##*/}

les rapports de "bar"

DIRNAME

Pour montrer les principaux répertoires du chemin d'accès (sans encourir une fourche-exec /usr/bin/dirname):

echo ${target_PWD%/*}

Cela permettra par exemple de transformer des foo/bar/baz -> foo/bar

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