Leggere e Cercare nei File

Bentornato.
Nella lezione precedente hai imparato a creare, copiare, spostare, rinominare ed eliminare file.
Ora è il momento di guardarci dentro.
Perché i file non sono decorazioni. Sono contenitori di informazioni.
A volte informazioni utili.
A volte log.
A volte un file di configurazione che sembra scritto da un mago durante un temporale.
Cosa Imparerai
In questa lezione imparerai a:
- stampare il contenuto di un file con
cat; - leggere file lunghi con
less; - vedere l’inizio di un file con
head; - vedere la fine di un file con
tail; - cercare dentro i file con
grep; - evitare di aprire file enormi come un guerriero coraggioso ma confuso.
La Missione
La tua missione è semplice:
Creare alcuni file di testo, leggerli, controllarli e cercare informazioni al loro interno.
Trasformiamo il terminale in uno strumento da detective.
Non serve la lente d’ingrandimento.
Il cappello drammatico è opzionale.
Creare un File di Pratica
Prima vai nella cartella di pratica:
cd ~/terminal-practice
Se la cartella non esiste, creala:
mkdir -p ~/terminal-practice
cd ~/terminal-practice
Ora crea un file chiamato story.txt:
touch story.txt
Puoi aprirlo con un editor di testo, oppure crearlo velocemente dal terminale:
echo "Linux is powerful." > story.txt
echo "The terminal is direct." >> story.txt
echo "Practice makes everything easier." >> story.txt
echo "Errors are messages, not monsters." >> story.txt
Ora hai un file con alcune righe di testo.
Leggere un File con cat
Per stampare tutto il file nel terminale, usa:
cat story.txt
Dovresti vedere:
Linux is powerful.
The terminal is direct.
Practice makes everything easier.
Errors are messages, not monsters.
cat è utile per file piccoli.
Con file grandi può riempire il terminale come se qualcuno avesse aperto una fabbrica di pasta dentro lo schermo.
Usalo con saggezza.
Leggere File Lunghi con less
Per file più lunghi, usa:
less story.txt
Dentro less puoi muoverti così:
- premi
Spaceper scendere; - premi
bper tornare indietro; - premi
/per cercare; - premi
qper uscire.
Sì, q significa quit.
Questo è importante.
Molte persone sono rimaste intrappolate dentro less più a lungo di quanto vogliano ammettere.
Vedere l’Inizio con head
Per vedere le prime righe di un file, usa:
head story.txt
Di default, head mostra le prime 10 righe.
Per mostrare solo le prime 2 righe:
head -n 2 story.txt
È utile quando vuoi capire velocemente di cosa parla un file.
Come leggere la prima pagina di un manuale prima di decidere di ignorarlo completamente.
Vedere la Fine con tail
Per vedere le ultime righe di un file, usa:
tail story.txt
Per mostrare solo le ultime 2 righe:
tail -n 2 story.txt
tail è molto utile per i file di log, perché le informazioni nuove di solito arrivano alla fine.
Per esempio:
tail -f app.log
L’opzione -f segue il file dal vivo.
Continua a mostrare le nuove righe mentre appaiono.
Molto utile.
Anche leggermente ipnotico.
Cercare Dentro un File con grep
Per cercare testo dentro un file, usa grep.
Cerca la parola terminal:
grep "terminal" story.txt
Dovresti vedere:
The terminal is direct.
Cerca Errors:
grep "Errors" story.txt
Dovresti vedere:
Errors are messages, not monsters.
grep è uno dei comandi più utili del terminale.
Trova testo velocemente.
Come Ctrl+F, ma con un caffè più forte.
Ricerca Senza Distinguere Maiuscole e Minuscole
Di default, grep distingue maiuscole e minuscole.
Questo significa che errors e Errors sono diversi.
Prova:
grep "errors" story.txt
Potresti non vedere nulla.
Ora prova:
grep -i "errors" story.txt
L’opzione -i ignora maiuscole e minuscole.
Molto meglio.
Linux è severo, ma a volte possiamo chiedergli di rilassarsi.
Mostrare i Numeri di Riga
Per mostrare i numeri di riga, usa:
grep -n "terminal" story.txt
Potresti vedere:
2:The terminal is direct.
Questo è utile quando vuoi trovare dove appare qualcosa.
Specialmente in file di configurazione, log o codice.
Cercare in Più File
Crea un altro file:
echo "The terminal can search many files." > notes.txt
echo "Learning Linux step by step is smart." >> notes.txt
Ora cerca in tutti i file .txt:
grep "terminal" *.txt
Potresti vedere risultati da più di un file.
Qui grep inizia a sembrare un superpotere.
Non un superpotere appariscente.
Più come un bibliotecario silenzioso che trova qualsiasi cosa in tre secondi.
Errori Comuni
Usare cat su file enormi
Questo può diventare fastidioso:
cat very-large-file.log
Se il file è enorme, il terminale può riempirsi di testo infinito.
Usa:
less very-large-file.log
oppure:
tail very-large-file.log
Sii furbo. Non combattere il drago dei log con un cucchiaio.
Dimenticare le virgolette
Questo va bene:
grep "terminal" story.txt
Per parole semplici, può funzionare anche:
grep terminal story.txt
Ma se la ricerca contiene spazi, usa le virgolette:
grep "Practice makes" story.txt
Le virgolette tengono insieme le parole.
Senza virgolette, la shell può capirti male.
La shell è potente, non telepatica.
Cercare con maiuscole/minuscole sbagliate
Se questo non trova nulla:
grep "errors" story.txt
prova:
grep -i "errors" story.txt
Le maiuscole contano, a meno che tu non dica a grep di ignorarle.
Pratica
Prova questo:
cd ~/terminal-practice
cat story.txt
less story.txt
head -n 2 story.txt
tail -n 2 story.txt
grep "terminal" story.txt
grep -i "errors" story.txt
grep -n "Practice" story.txt
Poi rispondi:
- Quale comando stampa tutto il file?
- Quale comando è migliore per file lunghi?
- Quale comando mostra le prime righe?
- Quale comando mostra le ultime righe?
- Quale comando cerca testo nei file?
Mini Sfida
Crea un file chiamato linux-notes.txt con queste righe:
Linux is stable.
The terminal is useful.
Commands can be combined.
Practice every day.
Do not fear errors.
Poi:
- Mostra tutto il file.
- Mostra solo le prime 2 righe.
- Mostra solo le ultime 2 righe.
- Cerca la parola
terminal. - Cerca la parola
errorsignorando maiuscole e minuscole. - Mostra il numero di riga in cui appare
Practice.
Usa solo comandi del terminale.
Niente mouse.
Il mouse inizia a sentirsi disoccupato.
Riassunto
Oggi hai imparato che:
catstampa il contenuto di un file;lessapre file in un visualizzatore scorrevole;headmostra l’inizio di un file;tailmostra la fine di un file;tail -fsegue un file dal vivo;grepcerca testo nei file;grep -iignora maiuscole e minuscole;grep -nmostra i numeri di riga.
Ora puoi leggere e cercare nei file dal terminale.
Questo è un grande passo.
Perché quando sai cercare, smetti di essere perso e inizi a diventare pericoloso.
In senso buono.
Più o meno.
Prossima Lezione
Nella prossima lezione parleremo di permessi e sudo.
È lì che Linux inizia a dire:
“No.”
E noi impariamo perché.