il cat
e tac
I comandi visualizzano il contenuto dei file di testo, ma c'è di più in loro di quanto sembri. Immergiti un po' più a fondo e impara alcuni trucchi produttivi della riga di comando di Linux.
Questi sono due semplici piccoli comandi, che sono spesso respinti per essere proprio questo: troppo semplice per essere di reale utilità. Ma una volta che conosci i diversi modi in cui puoi usarli, Vedrai che sono straordinariamente capaci di fare la loro giusta parte del lavoro pesante quando si tratta di lavorare con i file..
Il comando del gatto
cat
è usato per sfoglia il contenuto dei file di testoe unire parti di file per formare un file più grande.
In un momento, nell'era del dial-up modem: I file binari erano spesso divisi in diversi file più piccoli per un facile download. Invece di scaricare un file di grandi dimensioni, tirato ogni file più piccolo. Se un singolo file non è stato scaricato correttamente, Vorrei solo recuperare quel file.
Certo, quindi avevo bisogno di un modo per ricostituire la raccolta di file più piccoli in un singolo file binario funzionante. Quella procedura si chiamava concatenazione. Ed è lì che cat
è entrato e da dove prende il nome?.
Le connessioni a banda larga e in fibra hanno fatto svanire quella particolare esigenza, proprio come i suoni stridenti delle telefonate, così, Cosa resta? cat
da fare oggi? Molto in realtà.
Visualizzazione di un file di testo
Avere cat
elencare il contenuto di un file di testo in una finestra di terminale, usa il seguente comando.
Assicurati che il file sia un file di testo. Se provi a elencare il contenuto di un file binario nella finestra del terminale, i risultati saranno imprevedibili. Puoi finire con una sessione terminale bloccata o peggio.
gatto poesia1.txt
Il contenuto del file poem1.txt viene visualizzato nella finestra del terminale.
Questa è solo metà della famosa poesia. Dov'è il resto?? Ecco un altro file chiamato poem2.txt. possiamo fare cat
elenca il contenuto di più file con un comando. Tutto quello che faremo è elencare i file in ordine sulla riga di comando.
gatto poesia1.txt poesia2.txt
Sembra meglio; ora abbiamo la poesia completa.
Usa il gatto con meno
La poesia è tutta lì, Ma è passato dalla finestra troppo in fretta per leggere i primi versi. Possiamo incanalare l'output da cat
entro less
e scorri il testo al nostro ritmo.
gatto poesia1.txt poesia2.txt | meno
Ora possiamo andare avanti e indietro attraverso il testo in sequenza, anche se è in due file di testo separati.
Numerazione delle righe in un file
Possiamo avere il numero di gatto delle righe nel file così come viene visualizzato. Per fare questo, noi usiamo il -n
opzione (numero).
cat -n poesia1.txt
Le righe sono numerate così come vengono visualizzate nella finestra del terminale.
Non numerare le righe vuote
Siamo riusciti ad avere le righe numerate da cat
, ma si contano anche le righe vuote tra i versi. Per avere le righe di testo numerate ma ignorare le righe vuote, usa el -b
Opzione (numero non vuoto).
cat -b poesia1.txt
Ora le righe di testo sono numerate e le righe vuote vengono saltate.
Non visualizzare più righe vuote
Se ci sono sezioni di righe vuote consecutive in un file, possiamo chiedere cat
ignorare tutte le righe vuote tranne una. Guarda questo file.
Il seguente comando causerà cat
per visualizzare solo una riga vuota da ogni gruppo di righe vuote. L'opzione di cui abbiamo bisogno per raggiungere questo obiettivo è la -s
(spazio bianco).
cat -s poesia1.txt
Ciò non influisce in alcun modo sul contenuto del file; cambia solo la forma cat
mostra il file.
Schede di visualizzazione
Se vuoi sapere se gli spazi sono causati da spazi o tabulazioni, puoi scoprirlo usando il -T
opzione (mostra-schede).
cat -T poesia1.txt
Le schede sono rappresentate dai caratteri "^ I".
Visualizzazione della fine delle righe
Puoi controllare gli spazi vuoti finali usando il -E
Opzione (lo spettacolo finisce).
cat -E poesia1.txt
Los finales de las líneas están representados por el carácter “$”.
Concatena file
Non ha senso salvare una poesia in due file, con metà in ciascuno. Uniamoci a loro e creiamo un nuovo file con la poesia completa.
gatto poesia1.txt poesia2.txt > jabberwocky.txt
usiamo cat
per controllare il nostro nuovo file:
gatto jabberwocky.txt
Il nostro nuovo file contiene il contenuto degli altri due file.
Aggiungi testo a un file esistente
Quello è meglio, ma veramente, non è la poesia completa. Manca l'ultimo verso. L'ultimo verso di Jabberwocky è lo stesso del primo verso.
Se abbiamo il primo verso in un file, possiamo aggiungerlo alla fine del file jabberwocky.txt e avremo la poesia completa.
In questo prossimo comando, dobbiamo usare >>
, Non solo >
. Se ne usiamo solo uno >
Buona Sovrascrivi jabberwocky.txt. Non vogliamo farlo. Vogliamo allegare testo alla fine.
gatto primo_verso.txt >> jabberwocky.txt
Rivediamo il contenuto del file jabberwocky.txt:
gatto jabberwocky.txt
E per finire, tutte le parti della poesia sono insieme.
Ridirigi stdin
Puoi reindirizzare l'input della tastiera a un file usando cat
. Tutto ciò che digiti viene reindirizzato al file finché non premi Ctrl + D. Si prega di notare che ne usiamo solo uno >
perché vogliamo creare il file (o sovrascrivilo, se esiste).
gatto > mia_poesia.txt
Possiamo iniziare a digitare non appena diamo il comando. Premiamo Ctrl + D quando abbiamo finito. Successivamente possiamo verificare il contenuto del nuovo file con:
gatto mia-poesia.txt
Quel suono come una turbina lontana è probabilmente Lewis Carroll che gira nella sua tomba ad alta velocità.
Il comando tac
tac
è simile a cat
, ma elenca il contenuto dei file in ordine inverso.
Vediamo che:
tac mia_poesia.txt
E il file viene visualizzato nella finestra del terminale in ordine inverso. In questa circostanza, non ha alcun effetto sui tuoi meriti letterari.
Usare tac con stdin
Usando tac
senza un nome di file lo farà funzionare con l'input da tastiera. Premendo Ctrl + D fermerà lo stadio di ingresso, e tac elencherà in ordine inverso ciò che hai digitato.
tac
Quando si preme Ctrl + D, l'ingresso è invertito e visualizzato nella finestra del terminale.
Utilizzo di tac con i file di registro
A parte gli espedienti da salotto di bassa qualità, Maggio tac
fai qualcosa di utile? sì, può. Molti file di registro aggiungono le voci più recenti alla fine del file. Usando tac
(e, controintuitivamente, head
) possiamo mostrare l'ultima voce nella finestra del terminale.
Noi usiamo tac
per elencare il file syslog all'indietro e reindirizzarlo a head
. conteggio head
per stampare solo la prima riga che riceve (che grazie a tac
è l'ultima riga del file), vediamo l'ultima voce nel file syslog.
tac / var / log / syslog | testa -1
head
stampa l'ultima voce nel file syslog e poi esce.
Notare che head
sta stampando solo una riga, come richiediamo, ma la linea è così lunga che si avvolge due volte. Questo è il motivo per cui sembrano tre righe di output nella finestra del terminale.
Usa tac con i record di testo
L'ultimo trucco tac
ha un asso nella manica è una bellezza.
In genere, tac
operare su file di testo lavorandoci riga per riga, dal basso verso l'alto. Una riga è una sequenza di caratteri terminata da un nuovo carattere di riga. Ma possiamo dire tac
per lavorare con altri delimitatori. Esto nos posibilita tratar “frammenti” de datos dentro del archivo de texto como registros de datos.
Diciamo che abbiamo un file di registro di qualche programma che dobbiamo rivedere o analizzare.. Diamo un'occhiata al suo formato con less
.
meno logfile.dat
Come possiamo vedere, esiste un formato ripetuto per il file. Ci sono sequenze di tre righe di esadecimale valori. Ogni set di tre linee esadecimali ha uno slogan che inizia con "= SEQ", seguito da una sequenza di cifre.
Se scorriamo fino alla fine del file, possiamo vedere che ci sono molti di questi record. L'ultimo ha il numero 865.
Supponiamo, per qualsiasi ragione, dobbiamo lavorare con questo file in ordine inverso, registro dati per registro dati. L'ordine delle tre righe esadecimali di ogni record di dati deve essere mantenuto.
Noteremo che le ultime tre righe del file iniziano con i valori esadecimali 93, Mi7 e Si8, in questo ordine.
Usiamo tac
per invertire il file. È un file molto lungo, quindi lo canalizzeremo a less
.
tac logfile.dat | meno
Questo inverte il file, ma non è il risultato che vogliamo. Vogliamo che il file venga invertito, ma le righe di ogni record di dati devono essere nell'ordine originale.
Abbiamo precedentemente registrato che le ultime tre righe del file iniziano con i valori esadecimali 93, Mi7 e Si8, in questo ordine. L'ordine di quelle righe è stato invertito. Allo stesso tempo, las líneas “= SEQ” ahora son sotto ogni set di tre linee esagonali.
tac
Al salvataggio.
tac -b -r -s ^=SEQ.+[0-9]+*$ logfile.dat | meno
Analizziamolo.
il -s
L'opzione (separatore) informa tac
cosa vogliamo usare come delimitatore tra i nostri record. Dado tac
non usare il tuo frequente carattere di nuova riga, ma usa invece il nostro separatore.
il -r
(regex) opzione dice tac
trattare la catena di separazione come a frase normale.
il -b
(prima) cause di opzione tac
per elencare il separatore prima ogni record invece che dopo di esso (che è la posizione frequente del tuo separatore predefinito, il carattere di nuova riga).
il -s
(separatore) catena ^=SEQ.+[0-9]+*$
viene decifrato come segue:
il ^
il carattere rappresenta l'inizio della riga. Questo è seguito =SEQ.+[0-9]+*$
. Questo istruisce tac
para buscar cada aparición de “= SEQ”. all'inizio di una riga, seguito da qualsiasi sequenza di cifre (indicato da [0-9]
), e seguito da qualsiasi altro set di caratteri (indicato da *$
).
Stiamo canalizzando tutto in less
, come sempre.
Nuestro archivo ahora se presenta en orden inverso con cada línea de etiqueta “= SEQ” listada prima le tue tre righe di dati esadecimali. Le tre righe di valori esadecimali sono nella loro originale ordine all'interno di ogni record di dati.
Possiamo verificarlo semplicemente. Il primo valore delle prime tre linee di esadecimale (quali erano le ultime tre righe prima che il file fosse annullato) corrisponde ai valori da cui abbiamo preso un record precedente: 93, Mi7 e Si8, in questo ordine.
È un bel trucco per una finestra di terminale a riga singola.
Tutto ha uno scopo
Nel mondo di Linux, Anche i comandi e le utilità apparentemente semplici possono avere proprietà sorprendenti e potenti..
La filosofia del design di Simple Utilities fanno bene una cosa, e che interagiscono facilmente con altre utilità, ha portato ad alcuni strani piccoli comandi, Che cosa tac
. A prima vista, sembra un po' strano. Ma quando guardi sotto la superficie, c'è un potere inaspettato che puoi sfruttare a tuo vantaggio.
oh, come dice un'altra filosofia, “No desprecies a la serpiente por no tener cuernos, perché chi può dire che non si trasformerà in drago?”
impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);