in

Comment utiliser la commande yes sous Linux

Fatmawati Achmad Zaenuri / Shutterstock.com

La commande yes semble trop simple pour être d’une utilité pratique, mais dans ce tutoriel, nous allons vous montrer son application et comment tirer parti de sa positivité refoulée sous Linux et macOS.

La commande oui

Le yes command est l’une des commandes les plus simples de Linux et d’autres systèmes d’exploitation de type Unix comme macOS. Et par simple, nous entendons simple dans son utilisation et sa mise en œuvre initiale. Le code source de la version originale – publié dans System 7 Unix et créé par Ken Thompson– équivaut à un simple six lignes de code.

Mais ne l’écrivez pas pour être une simple petite commande. Il peut être utilisé de manière intéressante et utile.

Que fait oui?

Utilisé sans aucun paramètre de ligne de commande, le yes La commande se comporte comme si vous tapiez «y» et appuyez sur Entrée, encore et encore (et encore et encore). Très rapidement. Et il continuera à le faire jusqu’à ce que vous appuyiez sur Ctrl + C pour l’interrompre.

yes

En réalité, yes peut être utilisé pour générer à plusieurs reprises le message de votre choix. Tapez simplement yes, un espace, la chaîne que vous souhaitez utiliser, puis appuyez sur Entrée. Ceci est souvent utilisé pour provoquer yes pour générer un flux de sortie de chaînes «oui» ou «non».

yes yes

yes anything you like

Mais à quoi cela sert-il?

La sortie de yes peuvent être redirigés vers d’autres programmes ou scripts.

Cela vous semble-t-il familier? Vous démarrez un long processus en cours d’exécution et vous vous éloignez, le laissant s’exécuter. Lorsque vous revenez sur votre ordinateur, le processus n’est pas du tout terminé. En votre absence, il vous a posé une question et attend une réponse «oui» ou «non».

Si vous savez à l’avance que toutes vos réponses seront positives («oui» ou «y») ou négatives («non» ou «n»), vous pouvez utiliser yes pour vous fournir ces réponses. Votre long processus se terminera ensuite sans surveillance avec yes fournir les réponses à toutes les questions posées par le processus.

Utilisation de yes avec des scripts

Regardez le script shell Bash suivant. (Nous devons imaginer que cela fait partie d’un script beaucoup plus volumineux qui prendra un temps considérable à s’exécuter.)

#!/bin/bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

echo "Are you happy to proceed? [y,n]"
read input

# did we get an input value?
if [ "$input" == "" ]; then

   echo "Nothing was entered by the user"

# was it a y or a yes?
elif [[ "$input" == "y" ]] || [[ "$input" == "yes" ]]; then

   echo "Positive response: $input"

# treat anything else as a negative response
else

   echo "negative response: $input"

fi

Ce script pose une question et attend une réponse. Le flux logique dans le script est décidé par l’entrée de l’utilisateur.

  • Un «oui» ou un «y» indique une réponse positive.
  • Toute autre entrée est considérée comme une réponse négative.
  • Appuyer sur Entrée sans texte d’entrée ne fait rien.

Pour tester cela, copiez le script dans un fichier et enregistrez-le sous long_script.sh. Utilisation chmod pour le rendre exécutable.

chmod +x long_script.sh

Exécutez le script avec la commande suivante. Essayez de fournir «oui», «y» et tout autre élément comme entrée, notamment en appuyant sur Entrée sans texte d’entrée.

./long_script.sh

Pour obtenir yes pour fournir notre réponse à la question du script, dirigez la sortie de yes au script.

yes | ./long_script.sh

Certains scripts sont plus rigides dans leurs exigences et n’acceptent que le mot complet «oui» comme réponse positive. Vous pouvez indiquer «oui» comme paramètre pour yes, comme suit:

yes yes | ./long_script.sh

Ne dis pas oui sans y réfléchir

Vous devez être certain que l’entrée que vous allez alimenter dans le script ou le programme va certainement vous donner le résultat que vous attendez. Pour pouvoir prendre cette décision, vous devez connaître les questions et quelles devraient être vos réponses.

La logique du script, de la commande ou du programme peut ne pas correspondre à vos attentes. Dans notre exemple de script, la question aurait pu être «Voulez-vous arrêter? [y,n]. » Si tel avait été le cas, une réponse négative aurait permis au script de se poursuivre.

Vous connaissez le script, la commande ou le programme avant de lancer allègrement yes dans ça.

Utilisation de yes avec des commandes

À ses débuts, yes serait utilisé avec d’autres commandes Linux. Depuis lors, la plupart de ces autres commandes Linux ont leur propre mode de fonctionnement sans interaction humaine. yes n’est plus nécessaire pour y parvenir.

Prenons le gestionnaire de paquets Ubuntu apt-get par exemple. Pour installer une application sans avoir à appuyer sur «y» à mi-chemin de l’installation, yes aurait été utilisé comme suit:

yes | sudo apt-get install fortune-mod

Le même résultat peut être obtenu en utilisant le -y (supposer oui) option dans apt-get:

sudo apt-get -y install fortune-mod

Tu verras ça apt-get n’a même pas demandé son habituel «Voulez-vous continuer? [Y/n] » question. Il supposait simplement que la réponse serait «oui».

Sur les autres distributions Linux, la situation est la même. Sur Fedora, vous auriez utilisé ce type de commande de gestionnaire de paquets à un moment donné:

yes | yum install fortune-mod

Le dnf le gestionnaire de paquets a été remplacé yum et dnf a sa propre -y (supposons que oui) option.

dnf -y install fortune-mod

de même pour cp, fsck, et rm. Ces commandes ont chacune leur propre -f (forcer) ou -y (supposons que oui) options.

Alors semble-t-il que yes a été relégué à travailler uniquement avec des scripts? Pas assez. Il y a encore quelques astuces dans le vieux chien.

Quelques autres trucs oui

Vous pouvez utiliser yes avec une séquence de chiffres générée par seq pour contrôler une boucle d’actions répétées.

Cette ligne unique fait écho aux chiffres générés dans la fenêtre du terminal, puis appelle sleep pendant une seconde.

Au lieu de simplement faire écho aux chiffres dans la fenêtre du terminal, vous pouvez appeler une autre commande ou un autre script. Cette commande ou ce script n’a même pas besoin d’utiliser les chiffres, et ils ne sont là que pour démarrer chaque cycle de la boucle.

yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done

oui one-liner régulant une boucle dans la fenêtre du terminal

Parfois, il est utile d’avoir un gros fichier à tester. Peut-être voulez-vous vous entraîner à utiliser la commande zip, ou vous voulez avoir un fichier volumineux avec lequel tester les téléchargements FTP.

Vous pouvez générer rapidement des fichiers volumineux avec yes. Tout ce que vous avez à faire est de lui donner une longue chaîne de texte avec laquelle travailler et de rediriger la sortie dans un fichier. Ne fais pas d’erreur; ces fichiers se développeront rapidement. Soyez prêt à appuyer sur Ctrl + C en quelques secondes.

yes long line of meaningless text for file padding > test.txt
ls -lh test.txt
wc test.txt

génération de fichiers de test avec yes ia terminal window

Le fichier généré ici a pris environ cinq secondes sur la machine de test utilisée pour rechercher cet article. ls indique que sa taille est de 557 Mo, et wc dites-nous qu’il contient 12,4 millions de lignes.

On peut limiter la taille du fichier en incluant head dans notre chaîne de commande. Nous lui indiquons le nombre de lignes à inclure dans le fichier. Le -50 moyens head laissera seulement 50 lignes jusqu’au test.txt déposer.

yes long line of meaningless text for file padding | head -50 > test.txt

utiliser head pour limiter la taille d'un fichier dans une fenêtre de terminal

Dès qu’il y a 50 lignes dans le test.txt fichier, le processus s’arrêtera. Vous n’avez pas besoin d’utiliser Ctrl + C. Il s’arrête gracieusement de sa propre initiative.

wc signale qu’il y a exactement 50 lignes dans le fichier, 400 mots et sa taille est de 2350 octets.

Même s’il est toujours utile pour alimenter les réponses dans des scripts de longue durée (et quelques autres astuces), le yes La commande ne fera pas partie de votre boîte à outils quotidienne de commandes. Mais lorsque vous en avez besoin, vous constaterez que c’est la simplicité même – et le tout en six lignes de code d’or.

Laisser un commentaire

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

Installez WordPress sur votre propre serveur avec Softaculous

Installez WordPress sur votre propre serveur avec Softaculous

Quelle est la différence entre HDMI et DVI?  Ce qui est mieux?

Quelle est la différence entre HDMI et DVI? Ce qui est mieux?