Extraire le nom de base du fichier dans Bash
- Utilisation de l’expansion des paramètres de sous-chaîne pour extraire le nom de base du fichier dans Bash
-
Utilisation de la commande
basename
pour extraire le nom de base du fichier dans Bash
Ce didacticiel montre différentes manières d’extraire le nom de base du fichier à l’aide de l’expansion des paramètres de sous-chaîne et de la commande basename
.
Utilisation de l’expansion des paramètres de sous-chaîne pour extraire le nom de base du fichier dans Bash
Les paramètres dans Bash sont des éléments qui stockent des valeurs. L’expansion remplace une référence de paramètre par sa valeur.
Pour effectuer une expansion de paramètre dans Bash, faites précéder le nom du paramètre d’un caractère $
. Mettre le nom du paramètre entre accolades est facultatif.
Les deux notations pour l’expansion des paramètres sont présentées ci-dessous.
$parameter
${parameter}
À l’intérieur des accolades de l’expansion des paramètres, certains opérateurs peuvent être ajoutés avec leurs arguments. Les opérateurs sont placés après le nom du paramètre et avant l’accolade fermante.
Nous pouvons utiliser ces opérateurs pour le conditionnel, la sous-chaîne, le sous-ensemble, la liste des préfixes, le comptage des éléments et l’expansion de la modification de la casse. Ces opérateurs modifient uniquement le paramètre sans modifier la valeur du paramètre.
Le script ci-dessous utilise l’expansion des paramètres de sous-chaîne pour extraire une sous-chaîne par correspondance de modèle de chaîne. La syntaxe utilisée est ${parameter##pattern}
.
Le ##
spécifie que le modèle doit correspondre à partir du côté gauche de la chaîne et le */
est le modèle dans notre cas. Le ${path##*/}
correspond au dernier /
de la variable path
et renvoie la sous-chaîne restante, file1.txt
, dans ce cas.
path=/home/delftstack/test/file1.txt
echo "${path##*/}"
L’exécution du script imprime le nom du fichier sur la sortie standard.
file1.txt
Utilisation de la commande basename
pour extraire le nom de base du fichier dans Bash
Le basename
est une commande sous Linux qui renvoie le dernier élément donné un chemin de fichier comme argument. Dans le script ci-dessous, la commande basename
reçoit la variable path
qui a le chemin du fichier comme argument. Le script exécute la commande basename
en utilisant la substitution de commande.
La substitution de commande est une fonctionnalité de Bash qui nous permet d’exécuter des commandes Linux et de stocker la sortie de la commande dans une variable. Une fois qu’une commande est exécutée à l’aide de cette fonctionnalité, la sortie standard de la commande remplace la commande, toutes les nouvelles lignes de fin étant supprimées.
La sortie de la commande basename
remplace la commande elle-même et est affectée à la variable fname
. La commande printf
est utilisée pour afficher le contenu de la variable fname
sur la sortie standard.
path=/home/delftstack/test/file1.txt
fname=$(basename "$path")
printf $fname
printf "\n"
Le script affiche la sortie suivante après son exécution.
file1.txt