Comment utiliser la commande read sous Linux

Comment utiliser la commande read sous Linux
Lire l'image de la fonction de commande

Parfois, lorsque vous interagissez avec votre système Linux, vous pouvez avoir besoin d’inviter les utilisateurs à saisir des données ou à lire des données à partir de fichiers, ou même de définir des délais d’attente. Vous pouvez effectuer ces tâches et bien d’autres avec la readcommande et ses différentes options.

Cet article vous enseignera les bases de readla commande et ses options à l’aide de nombreux exemples de code.

Qu’est-ce que la commande de lecture

Sous Linux, vous pouvez utiliser la readcommande pour capturer une entrée utilisateur ou lire une ligne à partir de l’entrée standard (stdin). Cette commande lit le nombre total d’octets du descripteur de fichier donné et les stocke dans le tampon. Après cela, elle renvoie le nombre d’octets lus, zéro ou une erreur.

Par exemple, si le nombre ou le nombre est zéro, cela fait référence à la fin du fichier. Mais en cas de succès, cela renvoie le nombre d’octets lus. Si la commande read détecte des erreurs, elle renvoie -1.

Avant d’explorer les options de la commande de lecture, examinons d’abord la syntaxe de la commande de lecture :

Ici, le optionsparamètre spécifie différents indicateurs qui sont utilisés pour modifier le comportement de la commande read. De plus, le nameparamètre spécifie le nom de plusieurs variables qui sont utilisées pour stocker l’entrée. Si aucun nom n’est fourni, l’entrée est conservée dans la $REPLYvariable bash.

Lire les options de commande

La commande Bash read propose de nombreuses options permettant de contrôler la saisie utilisateur. Certaines options ne nécessitent pas de paramètres supplémentaires, tandis que d’autres en ont besoin.

Explorons quelques options que nous pouvons utiliser avec la commande read :

Options Descriptions
-a <tableau> Il stocke l’entrée sous forme de tableau au lieu de variables séparées.
-s S’exécute en silence, ce qui signifie que l’entrée n’est pas affichée sur le terminal
-C’est active la prise en charge de la bibliothèque readline, permettant la lecture de la ligne d’entrée
-i <préfixe> fournit une valeur d’entrée initiale qui apparaît à l’invite lors de l’utilisation de readline
-p <invite> affiche l’invite spécifiée avant de lire l’entrée
-u <descripteur de fichier> lit à partir d’un descripteur de fichier spécifié plutôt que de l’entrée standard (stdin)
-d <délimiteur> vous permet de spécifier un délimiteur de ligne d’entrée au lieu du caractère de nouvelle ligne par défaut
-t <heure> définit un délai d’expiration pour l’entrée ; si l’entrée n’est pas reçue dans ce délai, la lecture renvoie un échec
-r lorsqu’elles sont définies, les barres obliques inverses ne sont pas traitées comme des caractères d’échappement
-n <nombre> lit uniquement le nombre de caractères spécifié

Tapez la commande suivante pour afficher le menu d’aide de la commande de lecture :

Comment lire une entrée à l’aide de la commande Read

La manière la plus simple d’utiliser la commande read est de l’utiliser sans aucun argument ni option. Lorsque vous exécutez la commande read seule, elle vous demandera de fournir l’entrée que vous souhaitez lire. Après avoir fourni l’entrée, elle se fermera et la stockera dans sa variable par défaut nommée REPLY.

Prenons ceci comme exemple :

utiliser la commande read pour capturer les entrées de l'utilisateur

Maintenant, après avoir fourni une entrée, affichons-la à l’aide de la commande echo :

utiliser la commande echo pour afficher la sortie de la variable REPLY

Lors de la lecture de la valeur d’entrée, vous pouvez également la stocker dans d’autres variables spécifiques. Par exemple, pour stocker le résultat dans une variable, saisissez la readcommande suivie du nom de la variable :

lecture de la valeur saisie par l'utilisateur et stockage dans une variable spécifique

Maintenant, pour afficher le résultat, vous devez utiliser la echocommande avec la variable qui stocke votre valeur :

affichage de la valeur capturée de la variable à l'aide de la commande echo

Lecture de plusieurs valeurs

Il n’existe aucun moyen direct de lire plusieurs valeurs à l’aide de la readcommande. Cependant, vous pouvez diviser la phrase d’entrée unique en plusieurs mots et les stocker dans différentes variables.

Considérons l’exemple suivant :

lire plusieurs valeurs et les stocker dans plusieurs variables

Ici, vous stockez le premier mot de la phrase dans la première variable, le deuxième mot dans la deuxième variable et tous les mots restants dans la dernière variable fournie.

Renvoyons la sortie en utilisant la commande suivante :

afficher plusieurs valeurs à l'aide de la commande echo

Lecture d’un fichier

Bien que read soit principalement destiné à la saisie utilisateur, vous pouvez également l’utiliser pour lire des lignes d’un fichier. Pour ce faire, utilisez simplement la whileboucle, echola commande et readla commande suivies d’un nom de variable spécifique :

lecture d'un fichier à l'aide de la commande read

Ici, la whileboucle lit chaque ligne du « samplefile.txt » et l’enregistre dans la variable line. Après avoir lu toutes les lignes d’un fichier, la echocommande affiche la valeur de la ligne.

Lecture d’une entrée dans une boucle

Vous pouvez également capturer les entrées utilisateur dans une séquence répétée en utilisant une lecture avec une boucle while. Cela est utile lorsque vous souhaitez collecter plusieurs entrées ou continuer jusqu’à ce qu’une condition spécifique soit remplie.

Par exemple, lisons plusieurs entrées et affichons-les également sur le terminal :

lecture de la valeur d'entrée de l'utilisateur en boucle continue

De plus, la boucle continue jusqu’à ce qu’elle reçoive un signal de fin de fichier (EOF), généralement en appuyant sur Ctrl+ D.

Comment demander une saisie à l’aide de la commande de lecture

Vous pouvez également créer des invites interactives qui s’afficheront avant la saisie de l’utilisateur. Vous pouvez y parvenir en utilisant l’ -poption avec la commande read.

Affichons une invite personnalisée et capturons également l’entrée :

création d'une invite avant de lire l'entrée de l'utilisateur

Limiter la saisie de l’utilisateur pendant la lecture

Vous souhaitez contrôler ce que les utilisateurs peuvent saisir ? Utilisez l’ -noption avec lecture pour spécifier la longueur de caractères souhaitée. Par exemple, si vous souhaitez capturer les 4 premiers caractères de la saisie utilisateur, utilisez la commande ci-dessous :

lecture d'entrée basée sur la valeur de caractère spécifiée

Après avoir exécuté la commande ci-dessus, vous ne pouvez saisir que neuf caractères. La limitation de la saisie utilisateur lors de la lecture éliminera le besoin d’un délimiteur et ne divisera pas non plus la saisie en mots.

Séparation des champs de sortie à l’aide d’IFS

Vous pouvez utiliser la variable Séparateur de champs interne (IFS) avec la commande read pour déterminer comment diviser l’entrée en champs distincts. Par défaut, IFS utilise des caractères d’espacement (tabulation, nouvelle ligne et espace) comme séparateurs de champs. Cependant, vous pouvez personnaliser l’IFS en fonction de vos besoins.

Par exemple, vous pouvez spécifier la valeur deux points (:) comme délimiteur :

lecture et division de la valeur en fonction de la valeur du délimiteur donné

Avec la variable IFS, vous pouvez capturer plusieurs entrées de ligne de l’utilisateur et les séparer en fonction de la valeur du séparateur.

Définition du délai d’expiration lors de la lecture

Vous pouvez également configurer un délai d’expiration pour la commande de lecture à l’aide de l’ -toption. Cela est utile si vous souhaitez vous assurer que le script ne dépend pas de la saisie de l’utilisateur pendant une longue période.

Définissons un délai d’attente de 10 secondes à l’aide de l’ -toption :

lecture de la valeur d'entrée dans le délai imparti

Si l’utilisateur ne tape rien dans les 10 secondes, le script continue son exécution.

Comment masquer la saisie utilisateur

Parfois, vous souhaiterez peut-être masquer la saisie de l’utilisateur, par exemple lors de la saisie d’informations sensibles telles que des mots de passe. Vous pouvez y parvenir en utilisant l’ -soption de la commande read :

utiliser l'option -s avec la commande read pour masquer les informations

Après avoir stocké le mot de passe dans la variable spécifiée, vous pouvez l’afficher dans le terminal à l’aide de la echocommande :

affichage du mot de passe capturé à l'aide de l'option -e et de la commande echo

Ici, le -edrapeau permet l’interprétation des séquences d’échappement, et \nla séquence d’échappement ajoute une nouvelle ligne avant la sortie.

Emballer

Lorsque vous aurez fini de lire cet article et de travailler sur les exemples, vous serez familiarisé avec l’utilisation de la commande read dans le terminal Linux. Cependant, il existe plusieurs autres commandes à explorer. Continuez à lire pour découvrir les commandes de base pour les nouveaux arrivants.

Crédit photo : Gabriel Heinzer via Unsplash . Toutes les captures d’écran par Haroon Javed.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *