Comment utiliser la commande yes sous Linux

Contenu

La commande yes semble trop simple pour être d'une utilité pratique, mais dans ce tuto, Nous vous montrerons votre application et comment profiter de sa positivité cumulative sur Linux et macOS.

La commande oui

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

Mais ne l'excluez pas parce qu'il s'agit d'une simple commande. Peut être utilisé de manière intéressante et utile.

Qu'est-ce que le oui?

Utilisé sans aucun paramètre de ligne de commande, les 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.

Oui

En réalité, yes peut être utilisé pour générer à plusieurs reprises n'importe quel message que vous choisissez. 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îne “Oui” O “non”.

Oui oui

oui tout ce que vous aimez

Mais, A quoi bon?

La sortie de yes peut être redirigé vers d'autres programmes ou scripts.

Cela vous semble-t-il familier? Vous commencez une longue procédure et vous vous en éloignez, le laisser fonctionner. Lorsque vous retournez à votre ordinateur, la procédure n'est pas du tout terminée. En son absence, vous lui avez posé une question et attendez une réponse de “Oui” O “non”.

Si vous savez à l'avance que toutes vos réponses seront positives (“Oui” O “et”) Le négatif (“non” O “m”), Vous pouvez utiliser yes pour vous fournir ces réponses. Votre longue procédure se déroulera jusqu’à son achèvement sans supervision avec yes fournir les réponses aux questions de procédure.

Utiliser oui avec des scripts

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

#!/poubelle/bash

# ...
# au milieu d’un long script
# obtenir une réponse de l’utilisateur
# ...

écho "Êtes-vous heureux de continuer? [et,m]"
lire l’entrée

# avons-nous obtenu une valeur d’entrée ??
si [ "$entrée" == "" ]; then

   echo "Rien n’a été saisi par l’utilisateur"

# était-ce un y ou un oui?
elif [[ "$entrée" == "et" ]] || [[ "$entrée" == "Oui" ]]; then

   echo "Réponse positive: $entrée"

# treat anything else as a negative response
else

   echo "réponse négative: $entrée"

être

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” O “et” indique une réponse positive.
  • Toute autre entrée est considérée comme une réponse négative.
  • Appuyer sur Entrée sans entrer de texte ne fait rien.

Pour tester ceci, copier le script dans un fichier et l’enregistrer 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”, “et” et tout autre élément d’entrée, y compris en appuyant sur Entrée sans entrer de texte.

./long_script.sh

Arriver yes pour fournir notre réponse à la question du script, canaliser la sortie de yes au scénario.

Oui | ./long_script.sh

Certains scripts sont plus rigides dans leurs exigences et n'acceptent que le mot entier "oui" comme réponse positive.. Peut fournir “Oui” en tant que paramètre pour yes, comme suit:

Oui oui | ./long_script.sh

Ne dis pas oui sans y penser

Vous devez être sûr que l'entrée que vous allez entrer dans le script ou le programme vous donnera certainement le résultat que vous attendez.. Pour pouvoir prendre cette décision, vous devriez connaître les questions et quelles devraient être vos réponses.

Il est possible que la logique du script, la commande ou le programme ne correspond pas à vos attentes. Dans notre exemple de script, la question aurait pu être "Voulez-vous arrêter? [et,m]. ” Si tel avait été le cas, une réponse négative aurait permis au script de continuer.

tu devrait être familier avec le script, commande ou programme avant de canaliser joyeusement yes Dessus.

Utiliser yes avec les commandes

Dans son enfance, yes serait utilisé avec d'autres commandes Linux. Depuis, la plupart de ces autres commandes Linux ont leur propre façon de fonctionner sans interaction humaine. yes il n'est plus nécessaire d'y parvenir.

Prenons le gestionnaire de paquets Ubuntu apt-get exemple. Pour installer une application sans avoir à appuyer sur “et” à mi-chemin de l’installation, yes aurait été utilisé de la manière suivante:

Oui | sudo apt-get install fortune-mod

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

sudo apt-get -y installer fortune-mod

Tu verras ça apt-get il n'a même pas demandé à son habituel "Voulez-vous continuer? [O / n]” question. Il a simplement supposé que la solution serait “Oui”.

Sur d'autres distributions Linux, la situation est la même. Dans Fedora, J'aurais utilisé ce genre de commande du gestionnaire de paquets en même temps:

Oui | Miam installer fortune-mod

Les dnf le gestionnaire de paquets a remplacé yum et dnf Il a son propre -y (suppose que oui) option.

dnf -y installer fortune-mod

de même pour cp, fsck, et rm. Chacune de ces commandes a sa propre -f (force) O -y (suppose que oui) options.

Il semble donc que yes a été relégué à travailler avec des scripts uniquement? Pas exactement. Il y a encore quelques trucs sur le vieux chien.

Quelques autres astuces oui

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

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

Au lieu de simplement envoyer les chiffres à 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 du cycle.

Oui "$(seq 1 20)" | pendant la lecture du chiffre; faire écho chiffre; dormir 1; terminé

oui une ligne qui régule une boucle dans la fenêtre du terminal

Parfois, il est utile d'avoir un gros fichier à tester. Vous voudrez peut-être vous entraîner à utiliser la commande zip, ou vous souhaitez disposer d'une archive importante pour tester vos uploads 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 vers un fichier. Ne pas faire d'erreurs; ces fichiers vont croître rapidement. Soyez prêt à appuyer sur Ctrl + C en quelques secondes.

oui longue ligne de texte sans signification pour le remplissage de fichier > test.txt
ls -lh test.txt
wc test.txt

générer des fichiers de test avec une fenêtre de terminal oui ia

Le fichier généré ici a pris environ cinq secondes sur la machine de test utilisée pour enquêter sur ce post. ls rapporte qu'il a une taille de 557 Mo, et wc dis nous ce qu'il contient 12,4 millions de lignes.

Nous pouvons limiter la taille du fichier en incluant head dans notre chaîne de commande. Nous vous disons combien de lignes inclure dans le fichier. Les -50 demi head partira seul 50 lignes à travers le test.txt Record.

oui longue ligne de texte sans signification pour le remplissage de fichier | diriger -50 > test.txt

utiliser la tête 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 déposer, la procédure s'arrêtera. Pas besoin d'utiliser Ctrl + C. S'arrête gracieusement de lui-même.

wc informe qu'il y a exactement 50 lignes dans le fichier, 400 mots et a une taille de 2350 octets.


Toujours utile pour saisir des réponses dans des scripts de longue durée (et quelques autres trucs), les yes la commande ne fera pas partie de votre boîte à outils de commande quotidienne. Mais quand tu en as besoin, vous trouverez que c'est la simplicité même, et le tout en six lignes de code d'or.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.