Comment utiliser la commande read sous Linux
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 read
commande et ses différentes options.
Cet article vous enseignera les bases de read
la 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 read
commande 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 options
paramètre spécifie différents indicateurs qui sont utilisés pour modifier le comportement de la commande read. De plus, le name
paramè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 $REPLY
variable 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 :
Maintenant, après avoir fourni une entrée, affichons-la à l’aide de la commande echo :
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 read
commande suivie du nom de la variable :
Maintenant, pour afficher le résultat, vous devez utiliser la echo
commande avec la variable qui stocke votre valeur :
Lecture de plusieurs valeurs
Il n’existe aucun moyen direct de lire plusieurs valeurs à l’aide de la read
commande. 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 :
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 :
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 while
boucle, echo
la commande et read
la commande suivies d’un nom de variable spécifique :
Ici, la while
boucle lit chaque ligne du « samplefile.txt » et l’enregistre dans la variable line
. Après avoir lu toutes les lignes d’un fichier, la echo
commande 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 :
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’ -p
option avec la commande read.
Affichons une invite personnalisée et capturons également l’entrée :
Limiter la saisie de l’utilisateur pendant la lecture
Vous souhaitez contrôler ce que les utilisateurs peuvent saisir ? Utilisez l’ -n
option 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 :
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 :
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’ -t
option. 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’ -t
option :
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’ -s
option de la commande read :
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 echo
commande :
Ici, le -e
drapeau permet l’interprétation des séquences d’échappement, et \n
la 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