Extraire le nom de base du fichier dans Bash

Fumbani Banda 30 janvier 2023
  1. Utilisation de l’expansion des paramètres de sous-chaîne pour extraire le nom de base du fichier dans Bash
  2. Utilisation de la commande basename pour extraire le nom de base du fichier dans Bash
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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub