L'expansion de BRACE est une technique utile pour générer des listes de chaînes pouvant être utilisées dans des scripts et des alias et sur la ligne de commande Linux. Gagnez du temps et évitez les erreurs en tapant moins.
Expansion de la corde
Avant la coquille bash Exécute une commande Dans une fenêtre de terminal ou une ligne dans un script, il vérifie s'il doit effectuer toutes les substitutions de la commande. Les noms de variables sont remplacés par leurs valeurs, les alias sont remplacés par les commandes qu'ils ont sténographique et toute expansion est effectuée. L'expansion de BRACE est une forme d'expansion soutenue par BASH.
L'expansion de la corde est disponible dans des coquilles modernes, mais il peut être manquant de certains vieux coquilles. Si vous allez utiliser l'expansion de Brace dans les scripts, assurez-vous d'invoquer une coquille qui prend en charge l'expansion de la corde, telle que Bash:
Nous utiliserons Bash pour nos exemples.
La génération de listes de chaînes peut sembler plus nouvelle que possible, mais elle offre certaines fonctionnalités pouvant économiser du temps et des frappes. Souvent, il peut fournir une solution simple et élégante à un problème ou à un besoin.
Expansions simples
Une expansion de la corde est contenue entre une paire d'accolades "{}". Il peut s'agir d'une liste d'articles séparés par des virgules ou d'un spécificateur de plage. Les espaces ne sont pas autorisés à l'intérieur des accolades sauf si vous avez enveloppé la chaîne de guillemets "
"
. "
Pour une liste séparée par des virgules, le processus d'expansion prend chaque élément à tour de rôle et le transmet à la commande appelante. Dans cet exemple, c'est
écho
que simplement
les imprime dans la fenêtre du terminal
. Notez que les virgules sont ignorées.
echo {un, deux, trois, quatre}
Une liste peut être des mots ou des chiffres.
Echo {1,2,3,4}
L'ordre des éléments de la liste est totalement arbitraire.
ECHO (4,2,3,1)
Une plage d'expansion a un démarrage et un caractère final connecté à deux périodes "
..
"Sans aucun espace. Tous les éléments de la liste manquante sont fournis automatiquement par l'extension de sorte que l'ensemble de la plage du caractère de démarrage du caractère final est créé.
Cela imprimera les chiffres de 1 à 10.
Echo {1..10}
La numérotation est arbitraire. Il n'est pas nécessaire de commencer à un.
echo {3..12}
Les gammes peuvent être spécifiées de manière à courir en arrière. Cela générera une liste de cinq à un.
echo {5..1}
Les gammes peuvent inclure des nombres négatifs.
echo {4 ..- 4}
Comme nous l'avons fait remarquer précédemment, une gamme a un début et une fin personnage . Ce n'est pas obligé d'être un nombre. Cela peut être une lettre.
echo {q..v}
Les lettres peuvent également courir en arrière.
echo {f..a}
Utilisation de l'expansion de la corde avec des boucles
Vous pouvez utiliser l'expansion de BRACE avec des gammes dans des boucles dans les scripts.
pour i in {3..7}
faire
echo $ i
fait
Les gammes d'expansion de BRACE vous permettent d'utiliser des caractères comme variable de boucle.
Car i à {m..q}
faire
echo $ i
fait
Les boucles sont généralement utilisées dans les scripts, mais rien ne vous empêche de les taper dans la ligne de commande pour voir ce qui va se passer.
pour i in {3..7}; faire écho $ i; fait
Car i à {m..q}; faire écho $ i; fait
Concaténation et nidification
Deux extensions adjacentes n'agissent pas indépendamment l'une après l'autre. Ils interagissent. Chaque élément de la première expansion est agi par chaque élément de la deuxième expansion.
echo {q..v} {1..3}
Les expansions peuvent également être imbriquées. Une expansion imbriquée agira sur l'élément précédant immédiatement.
Echo {Part-1, Part-2 {A, B, C, D}, Part-3}
Vous pouvez également nier les extensions en créant une liste des expansions de la plage délimitées par des virgules.
echo {{5..0}, {1..5}}
Préambule et PostScript
Vous pouvez placer du texte avant et après une expansion de la corde pour avoir ce texte inclus dans les résultats de l'expansion. Le texte mis en face d'une expansion est appelé le préambule, tandis que le texte placé derrière une expansion de Brace est appelé PostScript.
Cette commande utilise un préambule.
ECHO CHAPITRE {1..3}
Cet exemple utilise un PostScript:
Echo {Contenu, Papier, Bilbiographie} .MD
Et cette commande utilise les deux.
ECHO CHAPITRE- {1..4} .MD
Extension des noms de fichier et des annuaires
Comme vous l'avez probablement deviné maintenant, l'une des principales utilisations des expansions de Brace consiste à créer des noms de fichiers et de répertoires pouvant être transmis à d'autres commandes. Nous utilisons
écho
comme moyen commode de voir exactement ce qui se passe lorsqu'une expansion est déclenchée. Vous pouvez substituer une commande qui prend des noms de fichiers ou des noms de répertoires comme entrée et utilisez une expansion de Brace avec elle.
À rapidement
créer des fichiers
, utilisation
toucher
:
Fichier tactile- {1..4} .txt
ls * .txt
Si vous avez de nombreux fichiers avec le même nom de base, mais que différentes extensions de fichiers et que vous souhaitez effectuer une opération sur un sous-ensemble d'entre eux, les extensions de BRACE peuvent aider. Ici, nous compressons un sous-ensemble de fichiers qui ont un "programme" comme basename dans un fichier zip appelé "source-code.zip".
Les annuaires de développement contiennent de nombreux fichiers qui auront le même nom de base que votre programme principal. Habituellement, vous ne voulez pas sauvegarder ou distribuer des fichiers comme des fichiers d'objet ".o". Ceci est un moyen net de n'inclure que les types d'intérêt des fichiers.
Programme de code source zip {.c, .h, .cs}
Cette commande effectuera une copie d'un fichier et appendez ".bak" à celui-ci, en faisant une copie de sauvegarde du fichier d'origine. Un point intéressant à noter est que l'expansion de Brace contient une liste séparée par des virgules, mais le premier élément est vide. Si nous n'avions pas inclus la virgule, l'expansion n'aurait pas eu lieu.
CP BRACE / NEW / PROG-1.C {,. BAK}
LS BRACE / NEW / PROG-1.C.BAK
Pour effectuer une action sur deux fichiers dans différents répertoires, nous pouvons utiliser une expansion de BRACE dans le cheminement des fichiers.
Dans cet exemple, le répertoire "BRACE" contient deux sous-répertoires, l'un appelé "nouveau" et celui appelé "vieux". Ils contiennent différentes versions du même ensemble de fichiers de code source. Nous allons utiliser le
diffuser
Programme de voir les différences entre les deux versions de "PROG-1.C".
DIFF BRACE / {nouveau, ancien} /prog-1.c
Si vous avez un squelette standard de répertoires que vous devez créer au début d'un projet, vous pouvez les créer rapidement en utilisant l'expansion de Brace. Les
mkdir
-p
(Parent) Option
crée des annuaires parents manquants
quand un annuaire enfant est créé.
MKDIR -P {Source, Construire, Man, Aide {/ Pages, / Yelp, / Images}}
Arbre
Vous pouvez utiliser l'expansion de la corde avec
wget
à
Télécharger plusieurs fichiers
.
Dans cette commande, nous allons télécharger des fichiers à partir de deux répertoires, appelés "Test1" et "Test2". Chaque répertoire contient deux fichiers appelés "image1" et "image2".
wget https://www.url-of-your-choice.com/test (1,2}/picture{001,002}.jpg
Inscription Les fichiers vous indiquent les fichiers extraits et comment
wget
Renumez les fichiers pour éviter les affrontements de nom avec les fichiers existants.
LS PICHE *. *
Embrasser la corset
Il semble que l'expansion de la corde est une autre de Les secrets les mieux gardés de Linux . Beaucoup de gens me disent qu'ils n'ont jamais entendu parler de l'expansion de Brace, tandis que d'autres m'informent que c'est l'une de leurs astuces de ligne de commande préférées.
Donnez-lui un essai et cela pourrait simplement trouver son chemin dans votre ensemble de tours de ligne de commande.