Come Utilizzare il Comando yes su Linux

0
711

Il comando yes sembra troppo semplice per essere di uso pratico, ma in questo tutorial, vi mostreremo la sua applicazione e come beneficiare della sua pent-up di positività in Linux e macOS.

Il Comando yes

Il comando yes è uno dei comandi più semplici in Linux e altri sistemi operativi Unix-like come macOS. E semplice, si intende semplice nel suo utilizzo e la sua implementazione iniziale. Il codice sorgente per la versione originale uscito nel Sistema 7 Unix e scritto da Ken Thompson—ammonta a solo sei righe di codice.

Ma non scrivere off per essere un piccolo, semplice comando. Può essere utilizzato in alcune utili ed interessanti modi.

Che cosa Fa sì?

Utilizzato senza parametri della riga di comando, il comando yes si comporta come se si fosse a digitare “y” e premere Invio, al di là e oltre (e oltre). Molto rapidamente. E continueranno a farlo fino a quando si preme Ctrl+C per interrompere.

In effetti, sì, può essere utilizzato più e più volte generare qualsiasi messaggio che si sceglie. Semplicemente digitare sì, lo spazio, la stringa che si desidera utilizzare, quindi premere Invio. Questo è spesso utilizzato per causare sì per generare un flusso di output di “sì” o “no” stringhe.

sì sì

sì qualcosa che ti piace

Ma A Che Cosa È Che?

L’output sì può essere convogliato in altri programmi o script.

Se questo suona familiare? Si avvia un lungo processo in esecuzione e un passo di distanza, lasciando correre. Quando si torna al tuo computer, il processo non è completato. In tua assenza, ha chiesto una domanda e si sedette in attesa di un “sì” o “no” risposta.

Se sapete in anticipo che tutte le vostre risposte stanno per essere positivo (“sì” o “y”) o negativo (“n” o “n”), è possibile utilizzare sì per fornire le risposte per voi. Il lungo processo sarà quindi eseguire attraverso il completamento del backup automatico con sì fornendo le risposte a tutte le domande che il processo chiede.

Sì Con gli Script

Guardate il seguente Bash script di shell. (Abbiamo bisogno di immaginare che questo fa parte di una più ampia script che richiederà un lungo tempo per l’esecuzione.)

#!/bin/bash

# …
# nel centro di alcuni script lungo
# ottenere una risposta dall’utente
# …

echo “Sono felice per procedere? [s,n]”
read input

# abbiamo ottenuto un valore di input?
if [ “$input” == “” ]; then

echo “non è stato immesso dall’utente”

# era una y o sì?
elif [[ “$input” == “s” ]] || [[ “$input” == “yes” ]]; then

echo “risposta Positiva: $input”

# trattare l’altro come una risposta negativa
altro

echo “la risposta è negativa: $input”

fi

Questo script fa una domanda e attende una risposta. La logica di flusso all’interno dello script è deciso dall’input dell’utente.

  • Un “sì” o “y” indica una risposta positiva.
  • Un altro ingresso è considerata una risposta negativa.
  • Premendo Invio con nessun input di testo non fa nulla.

Per eseguire questo test, copiare lo script in un file e salvarlo come long_script.sh. Utilizzare il comando chmod per renderlo eseguibile.

chmod +x long_script.sh

Eseguire lo script con il comando seguente. Provare a fornire “sì”, “y”, e qualsiasi altra cosa come input, tra cui premendo Invio senza inserire il testo.

./long_script.sh

Per ottenere il sì di fornire la nostra risposta allo script domanda di pipe l’output sì per lo script.

sì | ./long_script.sh

Alcuni script sono più rigidi i requisiti e solo accettare l’intera parola “sì” come risposta positiva. È possibile fornire un “sì” come parametro di sì, come segue:

sì sì | ./long_script.sh

Non Dire sì Senza Pensare Attraverso

È necessario essere certi che l’ingresso si desidera inserire nel programma o script è sicuramente andando a darvi i risultati che si aspettano. Per essere in grado di prendere questa decisione, è necessario conoscere le domande e che le risposte dovrebbero essere.

La logica dello script, il comando o il programma potrebbe non corrispondere alle vostre aspettative. Nel nostro script di esempio, la questione potrebbe essere stata “vuoi smettere? [s,n].” Se questo fosse il caso, una risposta negativa avrebbe consentito lo script per procedere.

È necessario avere familiarità con lo script, un comando o un programma prima di allegramente tubo di sì.

Sì, Con Comandi

Nella sua infanzia, sì potrebbe essere utilizzato anche con altri comandi di Linux. Da allora, la maggior parte di questi comandi di Linux hanno il loro modo di funzionare senza interazione umana. sì, non è più necessaria per raggiungere questo obiettivo.

Prendiamo l’Ubuntu gestore di pacchetti apt-get come un esempio. Per installare un’applicazione, senza dover premere il tasto “y” a metà strada attraverso il processo di installazione, sì che sarebbe stato utilizzato come segue:

sì | sudo apt-get install fortune-mod

Lo stesso risultato può essere ottenuto utilizzando la -y (suppongo di sì) opzione apt-get:

sudo apt-get-y install fortune-mod

Vedrai che apt-get non anche chiedere ai suoi soliti “vuoi continuare? [Y/n]” domanda. Appena assunta la risposta sarebbe “sì”.

Su altre distribuzioni Linux, la situazione è la stessa. Su Fedora si sarebbe usato questo tipo di pacchetto di comando di gestione in una sola volta:

sì | yum install fortune-mod

Dnf package manager ha sostituito yum e dnf ha il suo -y (suppongo di sì).

dnf -y install fortune-mod

Lo stesso vale per le cp, fsck, e rm. Questi comandi hanno i loro propri -f (forza) o -y (suppongo di sì).

Così sembra che sì è stato relegato al solo lavorare con gli script? Non del tutto. Ci sono un paio di trucchi in il vecchio cane di sicurezza.

Ulteriori sì Trucchi

È possibile utilizzare sì con una sequenza di cifre generate da seq per il controllo di un ciclo di azioni ripetute.

Questa one-liner echi generati cifre per la finestra del terminale e quindi chiama il sonno per un secondo.

Invece di semplicemente riecheggiando le cifre per la finestra del terminale, che si potrebbe chiamare un altro comando o uno script. Che comando o script non ha nemmeno bisogno di usare le cifre, e sono lì solo per dare l’avvio a ogni ciclo del loop.

sì “$(seq 1 20)” | while read cifre; do echo cifre; sleep 1; fatto

A volte è utile avere un file di grandi dimensioni per i test. Forse si vuole fare pratica con la zip comando, o se si vuole avere un consistente file per il test di upload FTP.

È possibile generare rapidamente file di grandi dimensioni con un sì. Tutto quello che dovete fare è dare una lunga stringa di testo per lavorare con e reindirizzare l’output in un file. Non commettere errori; questi file crescere rapidamente. Essere pronti a premere Ctrl+C in pochi secondi.

sì lunga fila di senso del testo per il file imbottitura > test.txt
ls -lh test.txt
wc test.txt

Il file generato da qui ha preso circa cinque secondi sulla macchina di test utilizzato per la ricerca di questo articolo. ls relazioni che si 557 Mb di dimensione, e wc dire che ci sono 12,4 milioni di linee.

Siamo in grado di limitare la dimensione del file da capo nella nostra stringa di comando. Diciamo che il numero di linee da includere nel file. Il -50 significa capo, permetterà a soli 50 linee attraverso la test.txt file.

sì lunga fila di senso del testo per il file imbottitura | testa -50 > test.txt

Non appena ci sono le 50 linee in test.txt file, il processo si ferma. Non è necessario utilizzare i tasti Ctrl+C. Si tratta di un grazioso sosta sulla sua volontà.

wc segnalato che non sono esattamente il 50 righe del file, 400 parole e 2350 dimensione di byte.

Anche se è ancora utile per l’alimentazione delle risposte in lungo-esecuzione di script (e alcuni altri trucchi), il comando yes non sta per essere una parte del vostro quotidiano toolkit di comandi. Ma quando si ha bisogno di esso, troverete che è la quintessenza della semplicità e in sei linee di codice d’oro.