Comment utiliser la commande read sous Linux avec des exemples

La commande read sous Linux est une commande shell intégrée utilisée pour lire une ligne d'entrée à partir de l'entrée standard (telle que le clavier) ou d'un fichier. Il est couramment utilisé dans les scripts shell pour capturer les entrées de l'utilisateur, créer des scripts interactifs et automatiser les tâches nécessitant une interaction de l'utilisateur. La commande read vous permet d'attribuer des entrées à des variables, de définir des limites de temps et de contrôler le comportement de lecture des entrées, ce qui en fait un outil polyvalent pour les scripts.

Ce guide montrera comment utiliser la commande read sous Linux avec des exemples pratiques. Ces exemples couvriront l'utilisation de base, la lecture de plusieurs variables, la définition de délais d'attente et l'utilisation de délimiteurs. En maîtrisant la commande read avec ces scénarios pratiques, vous pouvez créer des scripts shell plus interactifs et dynamiques pour améliorer vos tâches d'automatisation.

Syntaxe de la commande Read sous Linux

Comprendre la syntaxe de base et les options

Le read La commande sous Linux est structurée, mais sa flexibilité est essentielle pour divers scénarios d'entrée dans les scripts shell. La syntaxe fondamentale est :

read [options] [variable_name]

Ici, [options] modifient le comportement de la commande et [variable_name] stocke l'entrée. Si vous ne spécifiez aucune variable, l'entrée devient la variable REPLY par défaut.

Options communes dans la commande Lire

  • -p Invites personnalisées: Cette option vous permet de définir une chaîne d'invite, rendant le script interactif et guidant l'utilisateur.
  • -t Entrée chronométrée: Il introduit un délai d'attente pour l'opération de lecture, faisant avancer automatiquement le script si l'entrée n'est pas fournie dans le délai spécifié.
  • -s Pour le mode silencieux: Indispensable pour les données sensibles, ce mode masque la saisie sur l'écran du terminal.
  • -n Pour la limite de caractères: restreint la saisie à un nombre défini de caractères, idéal pour contrôler la longueur de saisie.
  • -r Désactiver l'échappement de la barre oblique inverse: Cela traite les barres obliques inverses comme des caractères littéraux plutôt que comme des caractères d'échappement.

Exemples pratiques de la commande read sous Linux

Cette section explorera des exemples pratiques d'utilisation de la commande read sous Linux. Cette commande est un outil essentiel pour les scénaristes et les administrateurs système, leur permettant de demander une saisie à un utilisateur ou de lire un fichier ligne par ligne. Grâce à ces exemples, vous apprendrez à utiliser efficacement la commande read dans divers scénarios.

Lecture des entrées utilisateur

La commande read sous Linux capture généralement les entrées de l'utilisateur, ce qui joue un rôle déterminant dans les scripts nécessitant des commentaires ou des choix de l'utilisateur. Examinons un exemple simple :

echo "Please enter your name: "
read name
echo "Welcome, $name!"

Dans cet exemple, le script invite l'utilisateur à saisir son nom. La commande read capture l'entrée et la stocke dans le nom de la variable. Enfin, le script accueille l'utilisateur avec sa contribution.

Lecture de plusieurs valeurs

La commande read La commande Linux cd est également capable de lire plusieurs entrées dans des variables distinctes. Ceci est utile lorsque vous devez collecter plusieurs éléments de données à la fois.

echo "Enter your first and last name: "
read firstname lastname
echo "Hello, $firstname $lastname!"

Le script attend des utilisateurs qu'ils saisissent leur prénom et leur nom, séparés par un espace. La commande read attribue ensuite la première entrée au prénom de la variable et la deuxième entrée au nom de famille.

Utiliser une invite personnalisée avec -p

Au lieu d'utiliser echo pour afficher un message avant de capturer l'entrée, vous pouvez utiliser l'option -p pour spécifier une invite directement dans la commande read :

read -p "Enter your age: " age
echo "You are $age years old."

Cette approche rationalise le code en combinant la lecture de l'invite et de l'entrée en une seule commande.

Masquer l'entrée avec -s

Pour les informations sensibles, telles que les mots de passe, la commande read sous Linux propose l'option -s pour masquer la saisie de l'utilisateur :

read -sp "Enter your password: " password
echo -e "\nPassword set."

L'option -s empêche le terminal d'afficher les caractères saisis. L'écho -e « \n » est utilisé pour passer à une nouvelle ligne après la saisie de l'entrée, car -s supprime également la nouvelle ligne généralement générée en appuyant sur Entrée.

Lecture à partir d'un fichier

Au-delà de la saisie utilisateur, la commande read peut lire les données des fichiers. Combiné avec une boucle, il peut traiter chaque ligne d'un fichier une par une :

while IFS= read -r line; do
  echo "Line: $line"
done < "/path/to/file.txt"

Dans cet exemple, IFS= (Internal Field Separator) garantit que les espaces de début et de fin sont préservés, et -r empêche les barres obliques inverses d'être interprétées comme des caractères d'échappement. Le script lit chaque ligne du fichier.txt et y fait écho.

Utilisations avancées de la commande read sous Linux

En nous appuyant sur les exemples fondamentaux de la commande read sous Linux, nous nous concentrons maintenant sur des scénarios plus sophistiqués. Ces exemples montreront l'adaptabilité de la commande dans les scripts pour les entrées limitées dans le temps, l'exécution conditionnelle et le traitement de formats de données complexes.

Implémentation d'un délai d'attente pour la saisie utilisateur

Dans les scripts interactifs, il peut être nécessaire de limiter la durée des entrées utilisateur. La commande read s'en charge via l'indicateur -t, qui spécifie un délai d'attente en secondes.

read -t 5 -p "Enter your preferred programming language (5 seconds): " language
if [ -z "$language" ]; then
  echo "Timeout reached. Defaulting to Python."
else
  echo "You chose $language."
fi

Cet exemple donne à l'utilisateur 5 secondes pour saisir son langage de programmation préféré. Si l'utilisateur ne saisit rien dans le délai imparti, le script est par défaut Python.

Lecture des entrées utilisateur en boucle

Parfois, vous devrez peut-être collecter une série d’entrées auprès de l’utilisateur jusqu’à ce que vous remplissiez une condition spécifique. L'utilisation de la commande read dans une boucle facilite ce processus.

while true; do
  read -p "Enter a number (or 'quit' to exit): " num
  case $num in
    [0-9]*) echo "Number $num recorded." ;;
    "quit") break ;;
    *) echo "Invalid input. Please enter a number or 'quit'." ;;
  esac
done

Ce script demande continuellement à l'utilisateur un numéro jusqu'à ce que l'utilisateur tape « quitter ». Il montre comment read peut être utilisé efficacement dans une boucle pour gérer des scénarios d'entrée variable.

Traitement des données délimitées

La commande read peut être combinée avec l'indicateur -a pour diviser l'entrée en un tableau basé sur un délimiteur spécifique. Ceci est particulièrement utile pour traiter des valeurs séparées par des virgules (CSV) ou des formats de données similaires.

echo "Enter three favorite fruits separated by commas: "
IFS=',' read -ra fruits
for fruit in "${fruits[@]}"; do
  echo "Fruit: $fruit"
done

Ici, l'entrée devrait être une liste de fruits séparés par des virgules. La commande read divise l'entrée en un tableau de fruits, puis itère pour afficher chaque fruit.

Lire les mots de passe en toute sécurité

Bien que nous ayons abordé l'option -s pour la saisie silencieuse, sa combinaison avec une invite et un délai d'attente peut améliorer la sécurité lors de la lecture d'informations sensibles.

read -t 10 -sp "Enter your password (10 seconds to type): " password && echo
echo "Password securely read."

Cette commande demande à l'utilisateur un mot de passe, masque sa saisie et impose une limite de 10 secondes pour la saisie du mot de passe. Après cela, il continue sans renvoyer le mot de passe.

Exécution conditionnelle basée sur l'entrée

L'exploitation de la commande read pour une exécution conditionnelle basée sur les entrées de l'utilisateur peut rationaliser les processus de prise de décision au sein d'un script.

read -p "Do you want to continue? [Y/n]: " answer
case "$answer" in
  [Yy]* ) echo "Proceeding...";;
  [Nn]* ) echo "Operation aborted."; exit;;
  * ) echo "Please answer yes or no.";;
esac

Ce script demande à l'utilisateur s'il doit continuer. En fonction de l'entrée, il poursuit l'opération, l'interrompt ou demande une réponse claire, démontrant une utilisation pratique de la lecture pour contrôler le flux de script en fonction des décisions de l'utilisateur.

Conclusion

Ce guide a couvert l'essentiel de la commande read sous Linux, de la syntaxe de base aux exemples pratiques et fonctionnalités avancées. Nous avons montré comment il peut lire les entrées des utilisateurs, traiter des fichiers et gérer efficacement les données. Mon dernier conseil est d'expérimenter la commande read dans vos scripts. C'est un outil polyvalent qui peut améliorer l'interactivité et le dynamisme de vos scripts. Continuez à pratiquer pour libérer tout son potentiel.

Joshua James
Suis-moi
Les derniers articles par Joshua James (tout voir)

Laissez un commentaire