Come usare il comando yes in Linux

Contenuti

Il comando yes sembra troppo semplice per essere di utilità pratica, ma in questo tutorial, Ti mostreremo la tua app e come trarre vantaggio dalla sua positività cumulativa su Linux e macOS.

Il comando sì

il yes command è uno dei comandi più semplici su Linux e altri sistemi operativi simili a Unix come macOS. E per semplice, intendiamo semplice nel suo utilizzo e nella sua implementazione iniziale. Il codice sorgente della versione originale, reso pubblico in System 7 Unix e creato da Ken Thompson– equivale a un semplice sei righe di codice.

Ma non escluderlo per essere un semplice comando. Può essere utilizzato in modi interessanti e utili.

Cosa significa il sì?

Utilizzato senza parametri della riga di comando, il yes Il comando si comporta come se stessi digitando "y" e premendo Invio, e di nuovo (e ancora e ancora). Molto velocemente. E continuerà a farlo finché non premi Ctrl + C per interromperlo.

In realtà, yes può essere usato per generare ripetutamente qualsiasi messaggio tu scelga. Basta digitare yes, Uno spazio, la stringa che vuoi usare e poi premi Invio. Questo è spesso usato per causare yes per generare un flusso di output di stringhe “sì” oh “no”.

si si

si tutto quello che ti piace

Ma, A che serve??

L'uscita di yes può essere reindirizzato ad altri programmi o script.

Ti suona familiare?? Inizi una lunga procedura e te ne vai, lasciarlo funzionare. Quando torni al tuo computer, la procedura non è affatto completata. In sua assenza, ti ha fatto una domanda e sei seduto in attesa di una risposta da “sì” oh “no”.

Se sai in anticipo che tutte le tue risposte saranno positive (“sì” oh “e”) il negativo (“no” oh “n”), Puoi usare yes per fornirti quelle risposte. La tua lunga procedura durerà fino al completamento incustodita yes fornendo risposte a quesiti procedurali.

Usa sì con gli script

Guarda il seguente script della shell Bash. (Dobbiamo immaginare che questo faccia parte di uno script molto più ampio che richiederà molto tempo per essere eseguito.).

#!/cestino/bash

# ...
# nel mezzo di un lungo copione
# ottenere una risposta dall'utente
# ...

eco "Sei felice di procedere? [e,n]"
leggere l'input

# abbiamo ottenuto un valore di input?
Se [ "$ingresso" == "" ]; then

   echo "Nulla è stato inserito dall'utente"

# era un y o un sì?
elifa [[ "$ingresso" == "e" ]] || [[ "$ingresso" == "sì" ]]; then

   echo "Risposta positiva: $ingresso"

# treat anything else as a negative response
else

   echo "risposta negativa: $ingresso"

essere

Questo script fa una domanda e si aspetta una risposta. Il flusso logico all'interno dello script è deciso dall'input dell'utente.

  • un “sì” oh “e” indica una risposta positiva.
  • Qualsiasi altro input è considerato una risposta negativa.
  • Premere Invio senza inserire il testo non fa nulla.

per testare questo, copia lo script in un file e salvalo come long_script.sh. Utilizzo chmod per renderlo eseguibile.

chmod +x script_lungo.sh

Esegui lo script con il seguente comando. prova a fornire “sì”, “e” e qualsiasi altra cosa come input, inclusa la pressione di Invio senza inserire il testo.

./long_script.sh

Ottenere yes per fornire la nostra risposta alla domanda di sceneggiatura, convogliare l'uscita di yes alla sceneggiatura.

sì | ./long_script.sh

Alcuni script sono più rigidi nei loro requisiti e accettano solo l'intera parola "sì" come risposta positiva.. Può fornire “sì” come parametro per yes, come segue:

si si | ./long_script.sh

Non dire di sì senza pensarci

Devi essere sicuro che l'input che stai per inserire nello script o nel programma ti darà sicuramente il risultato che ti aspetti.. Per essere in grado di prendere quella decisione, dovresti conoscere le domande e quali dovrebbero essere le tue risposte.

È possibile che la logica dello script, comando o programma non corrisponde alle tue aspettative. Nel nostro script di esempio, la domanda potrebbe essere stata "Vuoi smettere?? [e,n]. ” se fosse stato così, una risposta negativa avrebbe permesso allo script di continuare.

tu deve avere familiarità con la sceneggiatura, comando o programma prima di canalizzare felicemente yes Su di esso.

Usa sì con i comandi

Nella sua infanzia, yes verrebbe usato con altri comandi Linux. Da allora, la maggior parte di quegli altri comandi Linux ha il proprio modo di funzionare senza interazione umana. yes non è più necessario raggiungerlo.

Prendiamo il gestore di pacchetti di Ubuntu apt-get come esempio. Per installare un'app senza dover premere “e” a metà installazione, yes sarebbe stato usato nel modo seguente:

sì | sudo apt-get install fortune-mod

Lo stesso risultato può essere ottenuto utilizzando il -y (supponiamo di sì) opzione in apt-get:

sudo apt-get -y install fortune-mod

Vedrai che apt-get non ha nemmeno chiesto il suo solito "Vuoi continuare?? [Sì / no]” domanda. Ha semplicemente pensato che la soluzione sarebbe stata “sì”.

Su altre distribuzioni Linux, la situazione è la stessa. In Fedora, Avrei usato questo tipo di comando del gestore di pacchetti allo stesso tempo:

sì | yum installare fortuna-mod

il dnf il gestore pacchetti è stato sostituito yum e dnf Ha il suo -y (supponiamo di sì) opzione.

dnf -y installare fortuna-mod

Lo stesso vale per cp, fsck, e rm. Ognuno di questi comandi ha il suo -f (forza) oh -y (supponiamo di sì) opzioni.

Quindi sembra che yes è stato relegato a lavorare solo con gli script? Non proprio. Ci sono ancora alcuni trucchi per il vecchio cane.

Qualche altro trucco sì

Puoi usare yes con una sequenza di cifre generata da seq per controllare un ciclo di azioni ripetute.

Questa singola riga fa eco alle cifre generate nella finestra del terminale e poi chiama sleep per un secondo.

Invece di inviare semplicemente le cifre alla finestra del terminale, puoi chiamare un altro comando o script. Quel comando o script non ha nemmeno bisogno di usare le cifre, e sono lì solo per iniziare ogni ciclo del ciclo.

sì "$(seguito 1 20)" | mentre leggi la cifra; fai eco cifra; dormire 1; fatto

sì one-liner che regola un loop nella finestra del terminale

A volte è utile avere un file di grandi dimensioni da testare. Potresti voler fare pratica usando il comando zip, o vuoi avere un archivio considerevole per testare i tuoi caricamenti FTP.

Puoi generare rapidamente file di grandi dimensioni con yes. Tutto quello che devi fare è dargli una lunga stringa di testo con cui lavorare e reindirizzare l'output su un file. Non commettere errori; quei file cresceranno rapidamente. Preparati a premere Ctrl + C in pochi secondi.

sì lunga riga di testo senza significato per il riempimento dei file > test.txt
ls -lh test.txt
wc test.txt

generazione di file di test con una finestra di terminale sì ia

Il file generato qui ha impiegato circa cinque secondi sulla macchina di prova utilizzata per indagare su questo post. ls riporta che ha una dimensione di 557 Mb, e wc dicci cosa contiene 12,4 milioni di righe.

Possiamo limitare la dimensione del file includendo head nella nostra stringa di comando. Ti diciamo quante righe includere nel file. il -50 metà head partirò da solo 50 linee attraverso il test.txt procedimento.

sì lunga riga di testo senza significato per il riempimento dei file | testa -50 > test.txt

usare la testa per limitare la dimensione di un file in una finestra di terminale

Appena c'è 50 linee in test.txt file, la procedura si fermerà. Non c'è bisogno di usare Ctrl + C. Si ferma con grazia da sola.

wc informa che c'è esattamente 50 righe nel file, 400 parole e ha una dimensione di 2350 byte.


Ancora utile per inserire risposte in script di lunga durata (e qualche altro trucco), il yes comando non farà parte del tuo toolkit di comando quotidiano. Ma quando ne hai bisogno, scoprirai che è la semplicità stessa, e tutto in sei righe di codice aureo.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.