Molte persone conoscono il comando cat che è utile per visualizzare l’intero contenuto del file. Ma in alcuni casi dobbiamo stampare parte del file. Nel post di oggi parleremo dei comandi head e tail, che sono molto utili quando si desidera visualizzare una certa parte all’inizio o alla fine di un file, specialmente quando si è sicuri di voler ignorare il resto del contenuto del file.,
iniziamo con il comando tail ed esploriamo tutte le funzionalità che questo pratico comando può fornire e vediamo come usarlo al meglio in base alle tue esigenze. Dopodiché mostreremo alcune opzioni che puoi fare e non puoi fare con il comando head.
Sintassi del comando Linux tail
tail ... ...
Tail è un comando che stampa l’ultimo numero di righe (10 righe per impostazione predefinita) di un determinato file, quindi termina.
Esempio 1: Per impostazione predefinita” tail ” stampa le ultime 10 righe di un file, quindi esce.,
tail/path/to/file
Esempio:
come puoi vedere, questo stampa le ultime 10 righe di/var/log / messages.
Esempio 2: Ora che dire che sei interessato solo alle ultime 3 righe di un file, o forse interessato alle ultime 15 righe di un file. questo è quando l’opzione-n è utile, per scegliere il numero specifico di linee invece del 10 predefinito.,
tail -n <number_of_lines> /path/to/file
Example :
# tail -n 4 /etc/groupvboxusers:x:491:avahi:x:70:mailnull:x:47:smmsp:x:51:
Example 3: We can even open multiple files using tail command with out need to execute multiple tail commands to view multiple files., Suppose if you want to see first two lines of a
tail -n <number of lines> <file1> <file2> <file3>
Example:
surendra@sanne-taggle:~/code/sh$ tail -n 2 99abc.txt startup_script.sh wifiactivate.sh ==> 99abc.,txt <==
==> startup_script.sh <==sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/g' /etc/ssh/sshd_configservice sshd reload
==> wifiactivate.sh <==modprobe -rv iwlwifimodprobe -v iwlwifi 11n_disable=8
Example 4: Now this might be by far the most useful and commonly used option for tail command., A differenza del comportamento predefinito che deve terminare dopo la stampa di un certo numero di righe, l’opzione-f “che sta per follow” manterrà il flusso in corso. Inizierà a stampare righe aggiuntive sulla console aggiunta al file dopo l’apertura. Questo comando manterrà il file aperto per visualizzare le modifiche aggiornate alla console fino a quando l’utente non interrompe il comando.,
tail-f/path/to/file
Esempio:
Come puoi vedere in questo esempio, volevo avviare il servizio crond, quindi guardare il file di registro/var/log / cron all’avvio del servizio. Ho usato; che una sorta di concatenamento di comandi in Linux inorder per eseguire due comandi in una singola riga. Non mi interessa solo un numero di righe per poi uscire, ma inoltre sono interessato a continuare a guardare l’intero file di registro fino all’avvio del servizio, quindi romperlo con CTRL+C.,
Esempio 5: Lo stesso comando tail-f può essere replicato usando bene less command. Una volta che si apre un file con meno
meno /percorso/nomefile
una Volta aperto il file, quindi premere maiusc+f
Esempio:
per comeout dalla modalità di aggiornamento in meno, devi premere ctrl+c e poi premere q per uscire.,c89d637cf1″>Esempio 6: non Abbiamo altra opzione -s, che devono essere sempre utilizzati con -f” a determinare l’intervallo di sospensione, mentre tail-f terrà guardando il file, la velocità di aggiornamento è ogni 1 secondo, se si desidera controllare questo, quindi sarà necessario utilizzare l’opzione-s “sonno” e specificare l’intervallo di sospensione
tail-f -s <sonno intervallo in secondi> /path/to/file
Esempio :
Esempio 7: Come abbiamo visto nell’esempio 3, Siamo in grado di aprire più file utilizzando il comando di coda., Anche noi possiamo visualizzare 2 file allo stesso tempo in crescita utilizzando l’opzione-f pure. Stamperà anche un’intestazione che visualizza il file che mostra questo output. la riga di intestazione sarà che iniziano con “==>”
coda /path/to/file1 /path/to/file2
Esempio:
Esempio 8: Se si desidera rimuovere questa intestazione, utilizzare l’opzione-q per la modalità silenziosa.,
Esempio:
Esempio 9: Ora cosa succede se ho un enorme /var/log/messages e sono interessato solo all’ultimo certo numero di byte di dati, l’opzione-c può farlo facilmente., osservare il seguente esempio in cui voglio visualizzare solo gli ultimi 500 byte di dati da /var/log/messages
coda -c <numero di byte> /path/to/file
Esempio :
Ora, dato che abbiamo parlato per un po ‘ su di coda, permette di parlare di “testa” di comando.
Il comando Head ovviamente, al contrario di tail, stamperà le prime 10 righe del file., Fino a questa parte del post, il comando head farà più o meno lo stesso di tail in tutti gli esempi precedenti, ad eccezione dell’opzione-f, non c’è l’opzione-f in head, che è molto naturale poiché i file cresceranno sempre dal basso.
sintassi del comando head in Linux
head ... ...
Esempio 10: Come accennato in precedenza stampa le prime 10 righe.
Esempio 11: Stampa le prime due righe di un file.,
# head -n 2 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin
Esempio 12: questa opzione consente di stampare tutte le righe a partire da un numero di riga specificato, a differenza dell’Esempio 11 che vi mostrerà il primo numero di righe che hai fornito.,
head-n <numero di linee preceduti con "-"> /path/to/file
Esempio :
Come si può notare, in questo esempio, stampare tutte le righe che iniziano dopo la riga 27.
Combina comando head e tail in Linux
Esempio 13: Poiché i comandi tail e head stampano diverse parti di file in modo efficace, possiamo combinare questi due per stampare un filtraggio avanzato del contenuto del file., Per stampare dalla 15a alla 20a riga nel file/etc / passwd, utilizzare l’esempio seguente.
head-n 20/etc | passwd/tail-n 5
Output:
Esempio 14: Molte persone non suggeriscono sopra il metodo per stampare da una riga all’altra. L’esempio sopra è quello di mostrare come possiamo combinare queste cose. Se vuoi veramente stampare una riga particolare, usa il comando sed come mostrato di seguito.
Esempio:
$ sed-n ' 5p ' / etc / passwdsync: x: 4: 65534: sync:/bin:/bin/sync