Come Utilizzare Tubi di Linux

0
355
Fatmawati Achmad Zaenuri/Shutterstock.com

Uso Linux tubi per coreografare come utilità della riga di comando collaborare. Per semplificare la complessità dei processi e aumentare la vostra produttività sfruttando una raccolta di autonoma comandi e trasformandoli in un unico team. Vi mostriamo come.

I Tubi Sono Ovunque

I tubi sono uno dei più utili caratteristiche della riga di comando di Linux e sistemi operativi Unix-like sono. I tubi sono utilizzati in innumerevoli modi. Guarda a una qualsiasi riga di comando di Linux articolo—su qualsiasi sito web, non solo nostro—e vedrete che i tubi fanno la loro comparsa più spesso di quanto non. Ho rivisto alcuni How-To Geek Linux, articoli e tubi sono utilizzati in tutti loro, in un modo o in un altro.

Linux tubi consentono di eseguire azioni che non sono supportati out-of-the-box da shell. Ma perché Linux filosofia di design è quello di avere tante piccole utilità che svolgono la loro funzione dedicata molto bene, e senza inutili funzionalità—il “fare una cosa e farla bene” mantra si può piombo stringhe di comandi insieme con i tubi in modo che l’output di un comando diventa l’input di un altro. Ogni comando che si tubazione che porta il suo unico talento per la squadra, e presto troverete aver assemblato una squadra vincente.

Un Semplice Esempio

Supponiamo di avere una directory piena di molti diversi tipi di file. Vogliamo sapere quanti file di un certo tipo sono in quella directory. Ci sono altri modi per fare questo, ma l’oggetto di questo esercizio è quello di introdurre i tubi, quindi stiamo andando a fare con i tubi.

Siamo in grado di ottenere un elenco di file facilmente utilizzando ls:

ls

Per separare il tipo di file di interesse, utilizzeremo il comando grep. Vogliamo trovare i file che contengono la parola “pagina” nel nome o l’estensione di file.

Possiamo utilizzare la shell di carattere “|” per pipe l’output di ls in grep.

ls | grep “pagina”

grep stampa le linee che corrispondono il suo modello di ricerca. Quindi questo ci dà un elenco contenente solo “.pagina” file.

Anche questo banale esempio mostra la funzionalità dei tubi. L’output di ls non è stato inviato per la finestra del terminale. E ‘ stato inviato a grep come i dati per il comando grep per lavorare con. Uscita vediamo proviene da grep, che è l’ultimo comando in questa catena.

Estendendo La Nostra Catena

Cominciamo estendere la nostra catena di comando incanalato. Siamo in grado di contare i “.pagina” file aggiungendo il comando wc. Useremo l’opzione-l (conteggio) opzione con wc. Nota inoltre, abbiamo aggiunto la -l (formato lungo) opzione per ls . Lo useremo poco.

ls | grep “pagina” | wc-l

grep non è più l’ultimo comando a catena, quindi non vediamo l’output. L’output di grep è alimentato il comando wc. Uscita vediamo nella finestra del terminale è da wc. wc rapporti che ci sono 69 “.pagina” file nella directory.

Estendiamo le cose di nuovo. Prenderemo il comando wc fuori la riga di comando e sostituirlo con awk. Ci sono nove colonne in uscita da ls con l’opzione-l (formato lungo) opzione. Useremo awk per stampare le colonne di cinque, tre e nove. Queste sono le dimensioni, il proprietario e il nome del file.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’

Abbiamo una lista di quelle colonne, per ciascuno dei file corrispondenti.

Si passa ora che in uscita attraverso il comando sort. Useremo i -n (numerico) opzione per consentire sorta conoscere la prima colonna devono essere trattati come numeri.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’ | sort-n

L’uscita è ora ordinati in file in ordine di grandezza, con la nostra selezione personalizzata di tre colonne.

Aggiungendo Un Altro Comando

Concludiamo aggiungendo in coda al comando. Diremo per visualizzare l’elenco delle ultime cinque righe di output solo.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’ | sort-n | coda -5

Questo significa che il nostro comando si traduce in qualcosa come “mi mostra le cinque più grandi “.pagina” i file in questa directory, ordinate per dimensione.” Naturalmente, non non c’è nessun comando per fare questo, ma con l’uso di tubi, abbiamo creato la nostra. Si potrebbe aggiungere questo, o in qualsiasi altra lungo comando—come alias o funzione di shell per salvare tutta la digitazione.

Ecco l’output:

Si potrebbe invertire l’ordine di grandezza aggiungendo l’opzione-r (reverse) opzione per il tipo di comando, e di usare la testa invece di coda per prendere le linee di output.

Questa volta i cinque più grandi “.pagina” file sono elencati dal più grande al più piccolo:

Alcuni Esempi Recenti

Qui ci sono due esempi interessanti dal recente How-To geek articoli.

Alcuni comandi, come il xargscommand, sono progettati per avere un ingresso di sottofondo per loro. Ecco un modo in cui possiamo avere il wc contare le parole, i caratteri e le linee in più file, da tubazioni ls xargs che alimenta l’elenco dei nomi dei file wc come se fossero stati passati al wc come parametri della riga di comando.

ls *.pagina | xargs wc

Il numero totale di parole, caratteri e le linee sono elencati nella parte inferiore della finestra di terminale.

Ecco un modo per ottenere un elenco ordinato delle uniche estensioni di file nella directory corrente, con un conteggio di ogni tipo.

ls | ap | cut-d’.’ -f1 | rev | sort | uniq -c

C’è un sacco di cose qui.

  • ls: Elenca i file nella directory
  • rev: Inverte il testo nei nomi di file.
  • taglio: Taglia la corda alla prima occorrenza di delimitatore specificato “.”. Testo dopo questo viene scartato.
  • rev: Inverte il resto del testo, che è l’estensione del nome file.
  • sort: Ordina l’elenco in ordine alfabetico.
  • uniq: Conta il numero di ogni singola voce dell’elenco.

L’output mostra l’elenco di estensioni di file, in ordine alfabetico, con un conteggio di ogni tipo unico.

Named Pipe

C’è un altro tipo di tubo disponibili per noi è chiamato named pipe. I tubi negli esempi precedenti vengono creati al volo dalla shell quando si elabora la riga di comando. I tubi sono creati, usati, e poi scartate. Essi sono transitori e non lasciare traccia di sé. Esistono solo finché il comando, il loro utilizzo è in esecuzione.

Named pipe vengono visualizzati come oggetti persistenti nel filesystem, così li si può vedere utilizzando ls. Sono persistenti, perché essi possano sopravvivere un riavvio del computer, anche se non letti i dati in loro, in quel momento sarà scartato.

Named pipe erano molto usato un tempo per consentire diversi processi di inviare e ricevere dati, ma non ho visto usato in questo modo per un lungo periodo di tempo. Senza dubbio ci sono persone che ne fanno ancora uso di grande effetto, ma io non l’ho incontrato di recente. Ma per completezza, o semplicemente per soddisfare la vostra curiosità, ecco come si possono utilizzare.

Named pipe vengono creati con il comando mkfifo. Questo comando crea una pipe con nome geek-pipe” nella directory corrente.

mkfifo geek-tubo

Siamo in grado di vedere i dettagli della named pipe se usiamo il comando ls-l (formato lungo) opzione:

ls -l geek-tubo

Il primo carattere della quotazione in borsa è una “p”, il che significa che è un tubo. Se fosse un “d”, vorrebbe dire che il file system object è una directory e un trattino “-” significherebbe che non è un file regolare.

Utilizza la Named Pipe

Usiamo il nostro tubo. Senza nome tubi che abbiamo usato negli esempi precedenti passati i dati immediatamente l’invio di comando per la ricezione di comando. I dati inviati tramite una named pipe rimarrà nel tubo fino alla lettura. I dati sono effettivamente tenuti in memoria, in modo che la dimensione della named pipe non varia ls seguente criterio: se i dati in esso o non.

Stiamo andando a utilizzare due finestre di terminale per questo esempio. Io uso l’etichetta:

# Terminal-1

in una finestra di terminale e

# Terminal-2

in altri, così è possibile distinguere tra di loro. Il carattere cancelletto “#” indica alla shell che ciò che segue è un commento, e di ignorarlo.

Prendiamo l’interezza del nostro esempio precedente e reindirizzamento che in named pipe. Quindi stiamo utilizzando sia senza nome e named pipe in un unico comando:

ls | ap | cut-d’.’ -f1 | rev | sort | uniq -c > geek-tubo

Niente accade. Si può notare che non è possibile ottenere restituito al prompt dei comandi, però, così sta succedendo qualcosa.

Nell’altra finestra di terminale, eseguire il comando:

gatto < geek-tubo

Stiamo reindirizzando il contenuto della named pipe in gatto, in modo che il gatto si mostra il contenuto della seconda finestra di terminale. Ecco l’output:

E vedrai che ti sono stati restituiti al prompt dei comandi nella prima finestra di terminale.

Così, quello che è appena accaduto.

  • Abbiamo reindirizzato qualche uscita in named pipe.
  • La prima finestra di terminale non tornare al prompt dei comandi.
  • I dati rimasta nel tubo fino a quando è stato letto dal tubo nel secondo terminale.
  • Siamo stati restituiti al prompt dei comandi nella prima finestra di terminale.

Si potrebbe pensare che si potrebbe eseguire il comando nella prima finestra di terminale, come un’attività in background, l’aggiunta di un & alla fine del comando. E avreste ragione. In quel caso, ci sarebbe stato restituito il prompt dei comandi immediatamente.

Il punto di non utilizzare l’elaborazione in background, era per evidenziare che una named pipe è un processo di blocco. Mettere qualcosa in una named pipe, si apre solo una estremità del tubo. L’altra estremità non è aperto fino a quando il programma di lettura di estratti i dati. Il kernel sospende il processo nella prima finestra di terminale fino a quando i dati vengono letti dall’altra estremità del tubo.

Il Potere di Tubi

Oggi, named pipe sono qualcosa di una novità atto.

Pianura vecchio Linux tubi, d’altra parte, sono uno degli strumenti più utili che si possono avere nella vostra finestra di terminale toolkit. La riga di comando di Linux comincia ad animarsi per voi, e si ottiene un nuovo power-up quando si può orchestrare una raccolta di comandi per produrre un’unica performance.

Divisione suggerimento: è meglio scrivere il comando incanalato aggiungendo un comando per volta e ottenere che parte per lavoro, quindi di tubazioni nel comando successivo.

CONTINUA A LEGGERE

  • “Perché Non USB deve Essere Così Complicato?
  • “Che cosa Si Deve Fare Se Si Riceve una e-Mail di Phishing?
  • “Perché devi Accedere al Tuo PC di Casa, Comunque?
  • “Le Migliori Nuove Funzionalità di Android 10, Ora Disponibile
  • “Come Utilizzare il Comando chown su Linux