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.
sì
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
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
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
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.