The Beginner's Guide to Shell Scripting 3: Altri comandi e catene di base

Sommario:

The Beginner's Guide to Shell Scripting 3: Altri comandi e catene di base
The Beginner's Guide to Shell Scripting 3: Altri comandi e catene di base

Video: The Beginner's Guide to Shell Scripting 3: Altri comandi e catene di base

Video: The Beginner's Guide to Shell Scripting 3: Altri comandi e catene di base
Video: Tutorial - Come Velocizzare al massimo il proprio PC Gratis (XP - 7 - 8 - 8.1 - 10) [ITA] - YouTube 2024, Novembre
Anonim
Hai imparato come creare script, utilizzare argomenti e creare loop. Ora, diamo un'occhiata ad alcuni comandi di base, alla manipolazione dei file di testo e al reindirizzamento di input e output verso file e altri comandi.
Hai imparato come creare script, utilizzare argomenti e creare loop. Ora, diamo un'occhiata ad alcuni comandi di base, alla manipolazione dei file di testo e al reindirizzamento di input e output verso file e altri comandi.

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

Come puoi vedere, i caratteri speciali devono essere "sfuggiti" in modo che vengano trattati normalmente. Questo viene fatto usando una barra rovesciata () davanti al personaggio. È un'idea migliore usare le virgolette. Il comando echo funziona anche con le variabili.
Come puoi vedere, i caratteri speciali devono essere "sfuggiti" in modo che vengano trattati normalmente. Questo viene fatto usando una barra rovesciata () davanti al personaggio. È un'idea migliore usare le virgolette. Il comando echo funziona anche con le variabili.
Come puoi vedere, le virgolette singole e doppie si comportano diversamente. Per ulteriori informazioni, controlla Qual è la differenza tra virgolette singole e doppie nella shell Bash?
Come puoi vedere, le virgolette singole e doppie si comportano diversamente. Per ulteriori informazioni, controlla Qual è la differenza tra virgolette singole e doppie nella shell Bash?

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:

Quando usiamo il comando cat sul file, possiamo vederlo in output.
Quando usiamo il comando cat sul file, possiamo vederlo in output.
grep - Questo è uno dei comandi più potenti e utili disponibili in Linux. Rappresenta la stampa di espressioni globali / regolari. Guarda attraverso un file e stampa qualsiasi linea che corrisponda a un particolare modello. Poiché questo modello si basa su "espressione regolare", una linea concisa può produrre una moltitudine di modelli da abbinare. Per non, però, è possibile inserire una terna per la ricerca.
grep - Questo è uno dei comandi più potenti e utili disponibili in Linux. Rappresenta la stampa di espressioni globali / regolari. Guarda attraverso un file e stampa qualsiasi linea che corrisponda a un particolare modello. Poiché questo modello si basa su "espressione regolare", una linea concisa può produrre una moltitudine di modelli da abbinare. Per non, però, è possibile inserire una terna per la ricerca.

grep pattern file

Ti assicuro che grep può fare di più, ma per ora limitiamoci alle cose più facili.
Ti assicuro che grep può fare di più, ma per ora limitiamoci alle cose più facili.

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

Puoi vedere che l'eco non mostra più la linea, e quando guardiamo il contenuto del file "lista", vediamo ciò che abbiamo echeggiato lì.
Puoi vedere che l'eco non mostra più la linea, e quando guardiamo il contenuto del file "lista", vediamo ciò che abbiamo echeggiato lì.

Si noti inoltre che i precedenti contenuti di "elenco" sono stati rimossi. Riprova:

Questo può essere utile quando si desidera riutilizzare un file, ma spesso si desidera semplicemente aggiungerlo a un file esistente. Per questo, usiamo due simboli più grandi consecutivi:
Questo può essere utile quando si desidera riutilizzare un file, ma spesso si desidera semplicemente aggiungerlo a un file esistente. Per questo, usiamo due simboli più grandi consecutivi:

echo yellow peppers >> list

Facile! Usiamo questo comando per creare una lista più grande, dovremmo?
Facile! Usiamo questo comando per creare una lista più grande, dovremmo?
Eccoci. Penso che tu possa capire perché così tanti geek usano la linea di comando per creare elenchi di cose da fare e simili, ma migliora ancora.
Eccoci. Penso che tu possa capire perché così tanti geek usano la linea di comando per creare elenchi di cose da fare e simili, ma migliora ancora.

Prendiamo l'output di un comando e inseritelo in un file:

ls –al / > ~/rootlist

Creare elenchi di file, modificarli e quindi eseguire comandi su quelli che vuoi non è mai stato più semplice. E, mentre stiamo facendo queste funzioni di base nella riga di comando, anche queste funzionano bene negli script.
Creare elenchi di file, modificarli e quindi eseguire comandi su quelli che vuoi non è mai stato più semplice. E, mentre stiamo facendo queste funzioni di base nella riga di comando, anche queste funzionano bene negli script.

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.

Funziona molto come ">" tranne che può essere incatenato più volte e il suo effetto è più generale in quanto non ha bisogno di passare attraverso un file di testo.
Funziona molto come ">" tranne che può essere incatenato più volte e il suo effetto è più generale in quanto non ha bisogno di passare attraverso un file di testo.

Come puoi vedere, grep è case-sensitive. Puoi usare il flag "-i" per farlo ignorare il caso.

Image
Image

Reindirizzamento degli input

È inoltre possibile prendere input dai file per i comandi utilizzando il simbolo minore di (<).

cat < list

"Non è diverso dall'usare un argomento!" Si potrebbe dire. Bene, saresti corretto in questo caso. Dove il reindirizzamento degli input è davvero utile è nel concatenare i comandi insieme.
"Non è diverso dall'usare un argomento!" Si potrebbe dire. Bene, saresti corretto in questo caso. Dove il reindirizzamento degli input è davvero utile è nel concatenare i comandi insieme.

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

Ripetiamo questo comando e aggiungiamo qualche ordinamento.
Ripetiamo questo comando e aggiungiamo qualche ordinamento.

grep pep < list | sort > revisions

Questo utilizzerà "pep" come termine di ricerca dal file di input "elenco", ordinarlo in ordine alfabetico (tutti i termini maiuscoli seguiti da tutti i termini minuscoli), quindi inviarlo nel file "revisioni".
Questo utilizzerà "pep" come termine di ricerca dal file di input "elenco", ordinarlo in ordine alfabetico (tutti i termini maiuscoli seguiti da tutti i termini minuscoli), quindi inviarlo nel file "revisioni".

Per illustrare il comando sort, diamo un'occhiata al seguente esempio:

Come puoi vedere, l'aggiunta del flag "-f" al comando sort ti consente di ignorare case. In questo modo è facile per noi alfabetizzare le righe nei file di testo e ignorare le maiuscole quando non ha importanza.
Come puoi vedere, l'aggiunta del flag "-f" al comando sort ti consente di ignorare case. In questo modo è facile per noi alfabetizzare le righe nei file di testo e ignorare le maiuscole quando non ha importanza.

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.

Ecco la directory in cui testeremo lo script in:
Ecco la directory in cui testeremo lo script in:
E, possiamo creare un elenco di ciò che è qui dentro, quindi eseguire lo script.
E, possiamo creare un elenco di ciò che è qui dentro, quindi eseguire lo script.
Ecco qua! Più impari le regole delle espressioni regolari, più accuratamente puoi mettere insieme un comando di ricerca. E tutto ciò che è valido tra virgolette può essere sostituito dal tuo primo argomento!
Ecco qua! Più impari le regole delle espressioni regolari, più accuratamente puoi mettere insieme un comando di ricerca. E tutto ciò che è valido tra virgolette può essere sostituito dal tuo primo argomento!

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!

Consigliato: