Extensions du shell
Lorsque vous travaillez dans un shell, des ensembles ou des plages d'informations sont souvent répétés. L'expansion du shell permet de générer un grand nombre de jetons de shell à l'aide de syntaxes compactes. L'expansion est effectuée sur la ligne de commande après que la commande a été divisée en jetons. Parmi les nombreuses extensions disponibles, les extensions de nom de chemin, de nom de fichier et d'accolade sont expliquées ci-dessous.
Extension du nom de chemin
L'expansion du nom de chemin simplifie les changements d'emplacement dans la hiérarchie des répertoires. L'extension du nom de chemin comprend :
– Le tilde (~) caractère, qui représente le chemin absolu du répertoire personnel de l'utilisateur actuel
– Le caractère tilde (~) avec un nom d'utilisateur, qui représente le répertoire personnel de l'utilisateur spécifié
– Le tiret ( -) caractère, qui représente le répertoire de travail précédent
Considérez les exemples suivants pour chacun des caractères d'extension :
1. Remplacez les répertoires par dir1 en utilisant le caractère tilde (~).
$ cd ~/dir1 $ pwd /home/user/dir1/
2. Modifiez les répertoires vers le répertoire d'accueil de l'utilisateur en utilisant le caractère tilde (~) suivi d'un nom d'utilisateur.
$ cd ~user $ pwd /home/user
3. Basculez entre les répertoires user et tmp à l'aide du caractère d'extension –.
$ cd $ pwd /home/user
$ cd /tmp $ pwd /tmp
$ cd - /export/home/user1 $ cd - /tmp
Extension du nom de fichier
Les extensions de nom de fichier sont :
- Le caractère astérisque (*)
- Le point d'interrogation (?)
- Les caractères crochet ([])
1. Caractère astérisque (*)
Le caractère d'extension astérisque (*) est également appelé caractère générique et représente zéro ou plusieurs caractères, à l'exception du point (.) de début d'un fichier masqué. Par exemple, répertoriez tous les fichiers et répertoires commençant par la lettre f suivie de zéro ou de plusieurs autres caractères.
$ ls f* file.1 file.2 file.3 file4
Un autre exemple consiste à répertorier tous les fichiers et répertoires qui se terminent par le chiffre 3, précédés de zéro caractère ou plus.
$ ls *3 file.3 file3
2. Caractère point d'interrogation (?)
Le caractère point d'interrogation (?) est également appelé caractère générique et représente n'importe quel caractère unique à l'exception du point (.) de début d'un fichier masqué. Par exemple, répertoriez tous les fichiers et répertoires commençant par la chaîne dir et suivis d'un autre caractère.
$ ls dir? dir1: coffees fruit trees dir2: beans notes recipes
Si aucun fichier ne correspond à une entrée utilisant le caractère point d'interrogation (?), un message d'erreur s'affiche.
$ ls z? z?: No such file or directory
3. Caractères crochet ([])
Le crochet ([] ) représentent un ensemble ou une plage de caractères pour une position de caractère unique.
– Un ensemble de caractères est un nombre quelconque de caractères spécifiques, par exemple, [acb]. Les caractères d'un ensemble ne doivent pas nécessairement être dans n'importe quel ordre. Par exemple, [abc] est identique à [cab].
– Une plage de caractères est une série de caractères ordonnés.
- Une plage répertorie le premier caractère suivi d'un trait d'union (-), puis le dernier caractère, par exemple, [a–z] ou [0–9].
- Lorsque vous spécifiez une plage, organisez les caractères dans l'ordre dans lequel vous souhaitez qu'ils apparaissent dans la sortie.
- Par exemple, utilisez [A–Z] ou [a–z] pour rechercher respectivement un caractère alphabétique majuscule ou minuscule.
Par exemple, répertoriez tous les fichiers et répertoires commençant par les lettres a à f.
$ ls [a-f]* brands dante_1 file.1 file2 file4 celery feathers file1 file.3 fruit dante feathers_6 file.2 file3 fruit2
Par exemple, répertoriez tous les fichiers et répertoires commençant par les lettres f ou p.
$ ls [fp]* perm file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
L'extension Brace
L'expansion des accolades {} est un mécanisme par lequel des chaînes arbitraires peuvent être générées. Les modèles à développer par des accolades prennent la forme d'un préambule facultatif, suivi soit d'une série de chaînes séparées par des virgules, soit d'une expression de séquence entre une paire d'accolades, suivie d'un post-scriptum facultatif. Le préambule "a" est préfixé à chaque chaîne contenue dans les accolades, et le post-scriptum "e" est ensuite ajouté à chaque chaîne résultante, se développant de gauche à droite.
$ echo a{d,c,b}e ade ace abe