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é
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
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
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.