GNU/Linux >> Tutoriels Linux >  >> Linux

Commandes Bash utiles que vous ne connaissez peut-être pas

Bash est un langage de programmation assez puissant et il est également assez facile de démarrer avec.

Après tout, c'est presque universellement le shell que vous verrez lorsque vous ouvrirez votre terminal. Il est donc extrêmement utile de s'y habituer.

Il y a quelques commandes puissantes dans Bash que vous ne connaissez peut-être pas, même si vous êtes assez habitué à utiliser le langage. Toutes ces commandes peuvent cependant servir à des fins très utiles et peuvent rendre les scripts shell que vous écrivez plus propres, plus faciles à gérer et tout simplement plus puissants qu'ils n'auraient pu l'être auparavant.

Lire :Demander une entrée à l'utilisateur

La commande de lecture vous permet de prendre l'entrée d'un utilisateur et de la stocker dans une variable.

#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"

Cela attendra une entrée de votre part, l'utilisateur, puis définira la valeur pour le name variable à la chaîne que vous saisissez.

Par exemple, si vous avez spécifié votre nom en tant que Linux Handbook lors de l'exécution du script ci-dessus, il afficherait Your name is Linux Handbook! .

Vous pouvez également rendre l'exemple ci-dessus plus compact en spécifiant le -p l'option read commande, qui imprimera la chaîne spécifiée après -p , puis demandez à l'utilisateur de saisir :

#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"

Vous remarquerez également que j'ai ajouté un espace après What is your name? . Si nous ne l'ajoutions pas, cela afficherait littéralement What is your name? sans espace, ce qui le rendrait un peu plus bizarre lorsque l'utilisateur saisit sa saisie :

Mapfile :Attribuer à une variable les valeurs des lignes d'un fichier

Vous pouvez utiliser le mapfile pour lire le contenu d'un fichier, puis affecter cette sortie à un tableau Bash, chaque élément du tableau étant créé chaque fois qu'une nouvelle ligne est rencontrée dans le fichier.

Par exemple, créons un fichier appelé file.txt qui contient le texte suivant :

Line 1
Line 2
Line 3
Line 4
Line 5

Vous pouvez convertir ce fichier en un tableau Bash en exécutant ce qui suit, qui attribue le contenu du fichier au file_var variables :

#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Vous remarquerez que ce qui précède produit également une sortie étrangement espacée qui ne correspond pas à ce qui se trouve à l'intérieur du fichier, ce qui peut être résolu en ajoutant le -t option au mapfile commande :

#!/usr/bin/env bash
mapfile -t file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Enfin, vous remarquerez peut-être que ce qui suit ne fonctionne pas :

#!/usr/bin/env bash
cat file.txt | mapfile -t file_var

C'est parce que le mapfile La commande sur le côté droit du tube est exécutée dans un sous-shell (ou en d'autres termes, une nouvelle instance de Bash), qui ne peut pas affecter votre shell actuel.

Source :placez les variables d'un fichier dans l'environnement de votre shell

Disons que vous avez le fichier imaginaire suivant, config.sh , avec le contenu suivant :

username=linuxhandbook
domain=linuxhandbook.com

Et si vous vouliez prendre le contenu de ce fichier et le mettre dans l'environnement de votre shell actuel ?

Cela peut être fait très simplement en utilisant simplement la commande source :

source config.sh

Vous pouvez ensuite vérifier que les variables ont été affectées comme prévu :

Sous le capot, le source La commande exécute en fait le fichier spécifié dans l'environnement de votre shell actuel, donc la saisie de toutes les commandes dans ce fichier entraînerait leur exécution lors de l'exécution de source .

Par exemple, mettons ce qui suit dans config.sh :

name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"

Si nous exécutons ensuite soure config.sh , vous verrez que les deux echo les commandes sont exécutées, ainsi que le name variable en cours d'attribution :

Vous pouvez également utiliser . à la place de source , qui agit de la même manière que source le ferait.

Conclusion

Et juste comme ça, vous êtes sur la bonne voie pour effectuer des tâches plus puissantes et utiles, tout en étant capable de rester à l'intérieur de Bash.

Y a-t-il d'autres commandes que vous utilisez fréquemment dans Bash ? N'hésitez pas à laisser l'un d'entre eux dans les commentaires ci-dessous.


Linux
  1. 30 choses que vous ne saviez pas sur le noyau Linux

  2. Ce que vous ne saviez probablement pas sur sudo

  3. 4 façons utiles de connaître le nom du périphérique USB branché sous Linux

  4. Ce que les administrateurs système doivent savoir sur l'utilisation de Bash

  5. Comment normaliser un chemin de fichier dans Bash ?

Déclarations Bash If-Else - Tout ce que vous devez savoir sur

3 commandes Linux que vous avez oubliées

Tout ce que vous devez savoir sur le système de fichiers Linux

Tout ce que vous devez savoir sur la commande Linux Chmod

Tout ce que vous devez savoir sur le système d'exploitation Linux Zorin

Tout ce que vous devez savoir sur le système d'exploitation Peppermint Linux