Sous-coquilles Linux pour les débutants avec des exemples
- 1720
- 495
- Noa Faure
L'utilisation de sous-coquilles dans Bash vous offre la capacité de générer des informations sensibles au contexte à partir de votre commande BASH. Par exemple, si vous souhaitez modifier une chaîne de texte juste à l'intérieur d'un écho
déclaration, alors cela peut être fait facilement avec des sous-coquilles.
Dans ce tutoriel, vous apprendrez:
- Comment utiliser l'emploi de l'utilisation des sous-coquilles en bash
- Comment utiliser des sous-coquilles pour obtenir des informations sensibles au contexte
- Exemples d'utilisation de bash de bash
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Indépendant de la distribution Linux |
Logiciel | Ligne de commande bash, système basé sur Linux |
Autre | Toute utilité qui n'est pas incluse dans le shell bash par défaut peut être installée en utilisant Sudo Apt-Get Install Utility-Name (ou Installation de miam pour les systèmes basés sur Redhat) |
Conventions | # - nécessite que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié |
Exemple 1: deux syntaxes différentes
Bash permet deux syntaxes de sous-coquilles différentes, à savoir $ ()
et des déclarations entourées de back-tick. Regardons quelques exemples faciles à démarrer:
$ echo '$ (echo' a ')' $ (echo a) $ echo "$ (echo 'a')" a $ echo "a $ (echo 'b') c" abc $ echo "a'echo 'b "C" ABC
Dans la première commande, par exemple, nous avons utilisé '
Guillemets simples. Cela a abouti à notre commande de sous-shell, à l'intérieur des citations simples, à être interprétée comme un texte littéral au lieu d'une commande. C'est un bash standard: '
indique le littéral, "
indique que la chaîne sera analysée pour les sous-coquilles et les variables.
Dans la deuxième commande, nous échangeons le '
pour "
et ainsi la chaîne est analysée pour les commandes et variables réelles. Le résultat est qu'une sous-coquille est lancée, grâce à notre syntaxe de sous-coquille ($ ()
), et la commande à l'intérieur de la sous-coquille (écho 'a'
) est exécuté littéralement, et donc un un
est produit, qui est alors inséré au niveau global / supérieur écho
. La commande à ce stade peut être lue comme écho "a"
Et donc la sortie est un
.
Dans la troisième commande, nous étendons cela pour indiquer à la façon dont les sous-coquilles fonctionnent dans le contexte. Nous faisons écho à la lettre b
à l'intérieur de la sous-coquille, et cela est joint à gauche et à droite par les lettres un
et c
donner la sortie globale à être abc
D'une manière similaire à la deuxième commande.
Dans la quatrième et dernière commande, nous illustons la syntaxe de sous-coque alternative $ ()
. Il est important de savoir que $ ()
est la syntaxe préférée, et que dans certains cas éloignés, la syntaxe basée sur le back-tick peut produire des erreurs d'analyse $ ()
ne fait pas. Je vous encourage donc fortement à toujours utiliser le $ ()
Syntaxe pour les sous-coquilles, et c'est aussi ce que nous utiliserons dans les exemples suivants.
Exemple 2: un peu plus complexe
$ touch a $ echo "- $ (ls [a-z])" -a $ echo "- = - || $ (ls [a-z] | xargs ls -l) || - = -" - = - || -rw -rw-r-- 1 Roel roel 0 sept 5 09:26 a || - =-
Ici, nous créons d'abord un fichier vide en utilisant le toucher un
commande. Par la suite, nous utilisons écho
Pour sortir quelque chose que notre sous-coque $ (ls [a-z])
générera. Bien sûr, nous pouvons exécuter le LS
directement et céder plus ou moins le même résultat, mais notez comment nous ajoutons -
à la sortie en tant que préfixe.
Dans la commande finale, nous insérons certains caractères à l'avant et à l'extrémité du écho
commande qui rend la sortie un peu plus agréable. Nous utilisons une sous-coquille pour trouver d'abord le un
fichier que nous avons créé plus tôt (LS [A-Z]
) puis - toujours à l'intérieur de la sous-coquille - passez les résultats de cette commande (qui ne serait que un
Littéralement - je.e. le fichier que nous avons créé dans la première commande) vers le ls -l
en utilisant le tuyau (|
) et le xargs
commande. Pour plus d'informations sur les xargs, veuillez consulter nos articles Xargs pour les débutants avec des exemples et des xargs multiples avec des exemples.
Exemple 3: Double Quotes à l'intérieur des sous-coquilles et des sous-sous-vaches!
echo "$ (echo" $ (echo "il fonctionne") "| SED'T | IT | Il sûrement | ')" Cela fonctionne sûrement
Cool, non? Ici, nous voyons que les citations doubles peuvent être utilisées à l'intérieur de la sous-coquille sans générer d'erreurs d'analyse. Nous voyons également comment une sous-coquille peut être imbriquée dans une autre sous-coquille. Pouvez-vous analyser la syntaxe? Le moyen le plus simple est de commencer «au milieu ou au noyau de toutes les sous-coquilles» qui est dans ce cas écho "ça marche"
.
Cette commande sortira Ça marche
À la suite de l'appel de sous-coquille $ (écho "ça marche")
. Image Ça marche
À la place de la sous-coquille, je.e.
echo "$ (echo" il fonctionne "| SED 'S | it | Il sûrement |')" Cela fonctionne sûrement
Cela semble déjà plus simple. Ensuite, il est utile de savoir que le sed
la commande fera un substitut (grâce au s
commande juste avant le |
Séparateur de commande) du texte il
pour c'est sûrement
. Vous pouvez lire le sed
commander comme remplacer __it__ par __it sûrement__. La sortie de la sous-coquille sera donc
ça marche sûrement ', je.e.
écho "cela fonctionne sûrement", il fonctionne sûrement
Conclusion
Dans cet article, nous avons vu que les sous-coquilles travailler sûrement (jeu de mots prévu), et qu'ils peuvent être utilisés dans une grande variété de circonstances, en raison de leur capacité à être insérée en ligne et dans le contexte de la commande globale. Les sous-coquilles sont très puissantes et une fois que vous commencerez à les utiliser, eh bien, il n'y aura probablement pas d'arrêt. Très bientôt, vous écrirez quelque chose comme:
$ Var = "Au revoir"; echo "Merci $ (echo" $ var "| SED 'S | ^ | et |')" | sed 'S | k | k vous |'
Celui-ci est pour vous d'essayer de jouer avec! Merci et au revoir
Tutoriels Linux connexes:
- Comment utiliser des sous-coquilles bash à l'intérieur des instructions IF
- Sous-sheells Linux avancés avec des exemples
- Choses à installer sur Ubuntu 20.04
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Une introduction à l'automatisation Linux, des outils et des techniques
- Gestion de scripts et de processus de bash multithread au…
- Masterring Bash Script Loops
- Commandes Linux de base
- Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
- Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
- « Tutoriel de débogage GDB pour les débutants
- Comment régler Crontab pour exécuter toutes les 5 minutes »