Care este rostul comenzii `yes`? [duplicat] (Unix, Utilități)

Jaryd Malbin a intrebat.
a intrebat.

Această întrebare se referă la yes comandă care se găsește în mașinile UNIX și Linux: Practic, care este rostul (dacă există) și istoricul acestui instrument? Există aplicații practice pentru el? Se poate arăta un exemplu în care este util într-un script sau înlănțuit (prin pipe sau redirecționare) cu un alt instrument?

Pagina de manual este mai jos:

YES(1)                    BSD General Commands Manual                   YES(1)

NAME
     yes -- be repetitively affirmative

SYNOPSIS
     yes [expletive]

DESCRIPTION
     yes outputs expletive, or, by default, ``y'', forever.

HISTORY
     The yes command appeared in 4.0BSD.

4th Berkeley Distribution        June 6, 1993        4th Berkeley Distribution

Exemplu de ieșire:

$ yes why
why
why
why
why
^Cwhy

Comentarii

  • Am dat peste asta când am crezut că am primit un dialog „da”, dar de fapt fusesem dat afară din prompt. Surpriză! yes yes yes yes yes yes yes … –  > Por Jacksonkr.
3 răspunsuri
Joseph R.

De obicei, este folosit ca o modalitate rapidă și murdară de a oferi răspunsuri la un script interactiv:

yes | rm -r large_directory

nu vă va solicita informații despre niciun fișier care a fost eliminat. Desigur, în cazul rm, , puteți oricând să furnizați -f pentru a face ca acesta să se ocupe de eliminarea directorului, dar nu toate instrumentele sunt atât de iertătoare.

Actualizare

Un exemplu mai relevant pe care l-am întâlnit de curând este cel în care sunteți fsckun sistem de fișiere și nu doriți să vă deranjați să răspundeți la y atunci când vi se cere înainte de a remedia fiecare eroare:

yes | fsck /dev/foo

Comentarii

  • Înseamnă asta că yes va înceta odată ce rm este finalizată? –  > Por Jaryd Malbin.
  • 20

  • @JarydMalbin, da, deoarece acesta este comportamentul implicit al SIGPIPE. –  > Por cjm.
  • @JarydMalbin Da, așa este. Când rm se oprește citirea de pe țeavă (a se citi: se finalizează), yes primește un SIGPIPE ca în comentariul lui cjm –  > Por Joseph R..
  • În conformitate cu manualul, fsck -y /dev/foo ar trebui să facă același lucru pe unele sisteme de fișiere. Cele mai multe aș spune: manualul notează excepții pentru minix și cramfs. –  > Por Rolazaro Azeveires.
coffeMug

În afară de punctul principal menționat în răspunsul anterior, se poate spune că yes comanda poate fi folosită și pentru a testa sarcinile mari ale CPU-ului pe un sistem. yes creează un proces care acționează ca un încărcător de CPU fictiv și are ca rezultat o utilizare a procesorului de 100%. http://en.wikipedia.org/wiki/Yes_(Unix)

nbari

La actualizarea porturilor pe o stație de lucru FreeBSD, utilizarea portmaster + yes devine foarte utilă:

yes | portmaster -da

În acest fel puteți lăsa mașina să se actualizeze în timp ce luați masa de prânz și toate întrebările se completează implicit cu „y,yes

Când reconstruirea lumii pentru ‘make delete-old’ și ‘make delete-old-libs’.

aceasta este o mare economie de timp:

yes | make delete-old

și

yes | make delete-old-libs

practic vă ajută să evitați să tastați / confirmați anumite operații care cer un „y” sau „yes