Alcuni comandi utili di base
Ti abbiamo già fornito una ripartizione di base degli script di shell e una struttura di loop for di esempio, ma assicurati di controllare quegli articoli se hai perso la nostra guida agli script di shell fino ad ora.
La linea di comando è meravigliosa per molte ragioni, e il reindirizzamento è uno dei più importanti. Se dovessi prendere nota e riprodurre l'output di ogni comando per intraprendere ulteriori azioni o utilizzarlo per qualcos'altro, allora saremmo tutti impazziti molto tempo fa. Il reindirizzamento ci consente di utilizzare quell'output e salvarlo o utilizzarlo immediatamente come input per un altro comando. Possiamo anche usare i file come input per altri comandi.
Prima di andare avanti, copriamo alcuni comandi di base che possono essere utili in molti posti diversi.
eco - Questo comando stampa semplicemente (visualizza) la totalità del suo argomento sulla riga di comando come output
echo argument with spaces
gatto - Questo comando visualizza il contenuto dei file di testo come output.
cat file_to_be_read
Diciamo che creiamo questo file di testo in nano:
grep pattern file
Reindirizzamento delle uscite
Per reindirizzare l'output di un comando in un file, utilizziamo un carattere speciale, il simbolo maggiore di (>).
Cambiamo la nostra lista, dovremmo? Inserisci il seguente comando:
echo pepperoni > list
Si noti inoltre che i precedenti contenuti di "elenco" sono stati rimossi. Riprova:
echo yellow peppers >> list
Prendiamo l'output di un comando e inseritelo in un file:
ls –al / > ~/rootlist
Piping o Chaining
Piping è così chiamato perché usa la pipe, (|; condivisa con il tasto sulla maggior parte delle tastiere). Essenzialmente, prende l'output di un comando e lo alimenta direttamente ad un altro. È possibile creare lunghe catene di comandi per ottenere in questo modo un risultato specifico molto specifico, ed è molto conveniente per comandi come grep.
Come puoi vedere, grep è case-sensitive. Puoi usare il flag "-i" per farlo ignorare il caso.
Reindirizzamento degli input
È inoltre possibile prendere input dai file per i comandi utilizzando il simbolo minore di (<).
cat < list
Diciamo che vogliamo filtrare qualsiasi parola che abbia "pep" in esso dal nostro attuale file "lista" in un nuovo file chiamato "revisioni".
grep pep < list > revisions
grep pep < list | sort > revisions
Per illustrare il comando sort, diamo un'occhiata al seguente esempio:
Un semplice script
Creiamo uno script con il seguente formato:
script searchterm listfile
Prenderà il termine e userà grep per cercare attraverso un file di elenco, ordinare i risultati e quindi inviarli a un altro file.
Per quanto riguarda l'ordinamento, puoi fare di più che ordinare alfabeticamente. Dai un'occhiata alla pagina man per alcuni dei seguenti comandi:
- tsort: una funzione di ordinamento topologico più avanzata
- tr - ti consente di mappare caratteri specifici ad altri personaggi e di trascriverli tra loro.
- uniq - rimuove qualsiasi non univoco (leggi: duplicato)
- awk: una lingua / funzione di elaborazione del testo veramente avanzata che può essere utilizzata per separare i campi nei nomi dei file
- cut, paste / join - comandi utili per isolare i campi da file di testo e aggiungere nuovi dati in colonne
- look: ricerche come grep, ma utilizza un file dizionario (che può essere specificato dall'utente) per la ricerca
- wc: consente di ottenere il conteggio delle parole, il conteggio delle righe, il conteggio dei caratteri e altro
Oggi diamo un'occhiata ad alcune nozioni di base che possono essere utili sulla riga di comando come negli script. I dati basati su testo sono spesso al centro delle cose che usiamo quotidianamente, quindi essere in grado di lavorare con esso, ricercarli e manipolarli è la chiave.
Quali sono alcuni dei tuoi script preferiti? Hai degli script di uso speciale per i file di testo? Condividi quello che sai nei commenti!