C'è un yes
comando in unix / linux che praticamente stampa all'infinito y
su stdout
. Qual è il punto e come è utile?
C'è un yes
comando in unix / linux che praticamente stampa all'infinito y
su stdout
. Qual è il punto e come è utile?
Risposte:
yes può essere utilizzato per inviare una risposta affermativa (o negativa; ad esempio yes n) a qualsiasi comando che altrimenti richiederebbe uno, causando così l'esecuzione del comando in modo non interattivo.
Il comando yes in combinazione con il comando head può essere utilizzato per generare file di grandi volumi a scopo di test.
Può anche essere utilizzato per testare la capacità di un sistema di gestire carichi elevati, poiché l'utilizzo di yes comporta un utilizzo del processore del 100%, per i sistemi con un singolo processore (per un sistema multiprocessore, è necessario eseguire un processo per ciascun processore). Questo, ad esempio, può essere utile per verificare se il sistema di raffreddamento di un sistema sarà efficace quando il processore è in esecuzione al 100%.
Nel 2006, il comando yes ha ricevuto pubblicità per essere un mezzo per testare se il MacBook di un utente è interessato o meno dalla Sindrome da spegnimento intermittente. Eseguendo il comando yes due volte tramite Terminale in Mac OS X, gli utenti sono stati in grado di massimizzare la CPU del proprio computer e quindi vedere se l'errore era legato al calore
via wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)
yes `yes yes`
Questa potrebbe essere un'opinione controversa, ma a mio avviso è una brutta soluzione per una cattiva interfaccia utente negli strumenti da riga di comando .
Alcuni strumenti da riga di comando pongono domande all'utente con un prompt e non hanno un'opzione per l'esecuzione in modo non interattivo; immagina per esempio qualcosa come
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Poiché la risposta alla domanda è presa dall'input standard, una soluzione rapida a questo problema è avere un'applicazione che emette y\n
continuamente la stringa , che è esattamente ciò che yes
fa. Le pipe Unix possono essere utilizzate per inviare questo output come input per un dato comando.
$ yes | frobnicate
Uno dei problemi con questo approccio è che yes
non ha alcuna possibilità di verificare la domanda a cui sta rispondendo:
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y
Una soluzione migliore, quando è disponibile, è un'opzione specifica per l'esecuzione non interattiva, come rm -f
o apt-get -y
. Ciò consente di codificare comportamenti più sensibili nell'applicazione.
Mi sono appena imbattuto in un altro uso: mi è piaciuto cancellare un disco rigido con un modello diverso rispetto ai soli zero (come: dd if = / dev / zero of = / dev / sdd bs = 1M) e ha usato 'yes' per questo:
yes UUUUUUUUUUUUU > /dev/sdd
Un collega lo ha usato in un modo nuovo per inserire una password
yes password | passwd
passwd
chiederà prima la vecchia password, se l'utente non è root o un superutente e non continuerà se non viene inserita la password corretta. Quindi, l'utente è root o anche password
la vecchia password e nulla è cambiato.
ps
o top
al momento giusto).