La scorsa settimana abbiamo dato il via alla nostra serie Linux Hands-On per creare una serie strutturata che informi ed educhi il lettore su cos'è Linux, come funziona e, allo stesso tempo, assicurandosi che si sporchino le mani provando i comandi del terminale.
Come accennato nella prima parte della serie, l'intera serie sarà una progressione logica ogni settimana. Ciò significa che questa parte avrà senso solo se hai seguito la prima parte e provato tutti i comandi o se hai le conoscenze di base su Linux e puoi aggirarlo. Se non hai familiarità con questi concetti, assicurati di leggi la prima parte, e poi puoi saltare dentro.
Nel post di questa settimana, costruiremo su ciò che abbiamo trattato nel post precedente e ti diremo come puoi fare alcune cose più complicate. Se hai domande su come modificare i file in Linux? Come visualizzare un processo in Linux ecc. Questo post risponderà a quelli. Quindi, senza perdere altro tempo, passiamo subito ai comandi.
Divideremo i comandi in sezioni in modo che abbia senso esaminarli uno per uno.
Cosa imparerai?
- Gestione dei file
- Pattern Matching
- Processo: vedere e uccidere
- Modifica di file di testo
Bene, ora che abbiamo una struttura di base, esaminiamole una per una.
Nel post precedente, hai imparato come creare file in Linux e come rimuoverli. Costruiamoci sopra e vediamo prima come visualizzare il contenuto di un file.
comando gatto
Per visualizzare il contenuto di un file, usiamo il comando cat. La definizione da manuale di questo comando è che: il comando cat legge in sequenza un file e stampa l'output sullo standard output. In parole povere, significa che il file stampa il contenuto di un file riga per riga.
Usiamo un esempio per vedere come funziona il comando cat, vero?
Ecco la sintassi:
gatto NOMEFILE
Sostituire il NOME DEL FILE con uno dei tuoi. Come puoi vedere sotto il comando ha appena stampato il contenuto dei file ghost.txt in un formato riga per riga:

Ora che sappiamo come visualizzare il contenuto di un file, impariamo come aggiungere effettivamente i contenuti a un file direttamente dal terminale, senza utilizzare alcun editor (non preoccuparti, arriverà molto presto).
Operatori di reindirizzamento in Linux
Uno dei modi in cui puoi aggiungere (sovrascrivi o aggiungi) contenuto in un file è utilizzando uno degli operatori di reindirizzamento. In parole povere, gli operatori di reindirizzamento consentono agli utenti di controllare l'input e l'output di un comando.
Di quello che ti è saltato in testa, ecco un esempio più riconoscibile. Ricordi cosa ha fatto il comando echo? Ha stampato una stringa sul terminale. La stringa era l'output del comando echo. Usando uno degli operatori di reindirizzamento puoi effettivamente usare quell'output e scriverlo su un file.
Basta parlare, vediamo come funziona l'operatore di reindirizzamento con un esempio.
Ecco la sintassi per l'operatore di reindirizzamento:
comando redirection_operator file
Qui, il comando è il comando del terminale che produrrà una stringa e il file è il file effettivo che accetterà quell'output. Sono disponibili diversi operatori di reindirizzamento, ma limitiamo il nostro ambito alla scrittura su file.
Per fare ciò possiamo usare uno dei due operatori di reindirizzamento, cioè, > e >>
Nello screenshot seguente, puoi vedere come funziona. Ho mostrato nel terminale che il file è inizialmente vuoto usando il comando cat, quindi ho aggiunto i contenuti al file usando il comando echo e infine ho stampato i contenuti usando il comando cat.
Il Sistema > L'operatore lavora in modalità di sovrascrittura. Questo significa che se usi il > operatore per scrivere contenuto in un file, il suo contenuto precedente verrà sovrascritto. Questo è mostrato nello screenshot qui sotto. Come puoi vedere i contenuti precedenti sono stati sostituiti da quelli nuovi.

Ora la domanda ovvia è cosa succede se non si desidera sostituire il contenuto esistente? Bene, esiste una versione dell'operatore di reindirizzamento che fa proprio questo.
Per aggiungere a un file, invece di usare > usiamo >>
Ecco la sintassi:
comando >> nome file
E puoi vedere un esempio di utilizzo nello screenshot qui sotto, il contenuto è stato aggiunto. Abbastanza pulito vero? D'accordo che non offre la stessa flessibilità di un editor di testo, ma per casi d'uso più piccoli fa il lavoro abbastanza bene.

Va bene in movimento!
Ora che sappiamo come aggiungere contenuti a un file e come visualizzarli, che ne dici di imparare a trovare i file nel file system?
trova comando
Per cercare i file all'interno del tuo filesystem, usiamo il comando find. Il comando fa fondamentalmente ciò che afferma di fare. Trova un dato nome di file o un modello regex.
La sintassi di base per lo stesso sarebbe la seguente:
trova l'espressione del nome del percorso
Come sempre sostituisci i segnaposto con i tuoi valori.
Il Sistema sentiero dice al comando find in quale directory cercare il file dato. Il Nome L'opzione specifica un modello con cui la ricerca deve essere confrontata.
Vediamo come funziona il comando find in un esempio di utilizzo.

Come mostrato di seguito nell'output di esempio, il comando cerca any .exe file all'interno del mio filesystem e li invia alla console. Ora che abbiamo alcuni dei comandi di manipolazione più complessi sotto la nostra cintura, facciamo un ulteriore passo avanti.
Ora daremo un'occhiata a come possiamo cercare cose all'interno di un file.
comando grep
grep sta per Espressione regolare globale e mentre lo tratteremo in un post futuro, la spiegazione di base di ciò che significa è che è solo un modello che grep usa per controllare le stringhe per trovare una corrispondenza. Non preoccuparti se non ha molto senso. Ne parleremo ampiamente nella terza parte.
Va bene, allora proviamo grep. Ecco la sintassi del nostro test:
grep -i "stringa da abbinare" nomefile.estensione
Il Sistema - io opzione dirà a grep di ignorare le maiuscole, quindi "HO" "ho" e "hO" saranno considerati uguali. La stringa da confrontare è specificata tra virgolette che sono poi seguite dal nome del file.

Va bene, vediamo come il comando grep in una demo. Come visto sopra, il mio esempio mostra l'uso di grep in entrambe le modalità con distinzione tra maiuscole e minuscole e in modalità non con distinzione tra maiuscole e minuscole.
Vale la pena notare a questo punto che esistono n diverse combinazioni per un comando e diverse opzioni per utilizzarlo. Quello che sto facendo qui è fornirti un caso d'uso generale arrotondato che funzionerà per la maggior parte dei casi semplici, ma nel caso tu voglia andare all-in puoi sicuramente fare un uomo sul comando per capire tutte le opzioni disponibili da usare con il comando.
Successivamente, vediamo come possiamo effettivamente confrontare 2 file diversi in modo riga per riga.
comando diff
Per vedere come differiscono 2 file (capito?) usiamo il comando diff. È meglio vederlo in azione per capire come funziona effettivamente, quindi entriamo subito.
Ecco la sintassi per il comando diff:
differenze file1 file2
Ed ecco un esempio di utilizzo del comando diff Linux:

A prima vista potrebbe non avere completamente senso, quindi analizziamo l'output.
La prima riga dell'output diff conterrà:
- numeri di riga corrispondenti al primo file
- una lettera (a per aggiungere, c per modificare o d per eliminare)
- numeri di riga corrispondenti al secondo file.
Nel nostro output sopra, “1,3c1” significa: "Le righe da 1 a 3 nel primo file devono essere modificate in modo che corrispondano alle righe 1 nel secondo file." Quindi ci dice quali sono quelle linee in ogni file:
- Le righe precedute da < sono righe del primo file
- Le righe precedute da > sono righe del secondo file.
Andando avanti, vedremo come possiamo scoprire le righe ripetute in un dato file.
comando uniq
Il comando uniq viene utilizzato per scoprire le righe ripetute insieme al loro conteggio e altri dettagli simili. Se lo usi, dice che è usato per filtrare o riportare righe ripetute in un file. Come con quasi tutti i comandi, anche il comando uniq ha un sacco di opzioni per accompagnarlo.
Ma per ragioni di brevità e per assicurarci di imparare un numero maggiore di comandi invece di imparare troppo su un singolo comando, disegneremo solo un esempio minimo e puoi approfondire usando il comando man.
Bene, ecco la sintassi per il comando uniq:
uniq -options nomefile
Ora vediamo un esempio per imparare come funziona il comando uniq in Linux.

Analizziamo rapidamente il campione. Il -c opzione dice al comando uniq di stampare a contare insieme all'output e l'opzione successiva è il Nome del file che viene fornito a uniq.
Come puoi vedere nell'esempio sopra, ha stampato il conteggio delle righe ripetute che nel nostro caso era 2.
Questo dovrebbe farlo per tutti i comandi che devi sapere per assicurarti di essere in grado di aggirare i file, ma c'è una parte molto importante che non abbiamo trattato fino ad ora e riguarda i diritti di accesso.
Vedi nel mondo reale, non vuoi che tutti i tuoi file abbiano un accesso globale in lettura-scrittura, il che significa che chiunque può semplicemente camminare e apportare modifiche a un file. Alcuni file devono essere protetti da manomissioni. È qui che entra in gioco il controllo degli accessi, e Linux e Unix lo gestiscono entrambi sorprendentemente bene con questo comando successivo.
Comando chmod
Il comando chmod sta per change mode e fondamentalmente ti consente di modificare il modo in cui è possibile accedere a un file e da chi è possibile accedervi.
La sintassi per chmod è abbastanza semplice e si presenta così:
chmod -options permessi nomefile
Sebbene le opzioni e il nome del file non necessitino di elaborazione, il permessi parte ha bisogno di qualche spiegazione.
I permessi dei file in Linux ruotano intorno a 3 ambiti, utente, gruppo, e altri. I permessi sono a loro volta di 3 tipi Leggi, Scrivi, e eseguire. Ciò significa che ogni ambito ha 3 autorizzazioni per un totale di 3 set di ambiti con 3 autorizzazioni in ciascuno.
Tenendo questo in mente, ecco un esempio di utilizzo per mostrarti come funziona chmod:
chmod u=rwx, g=rx, o=r nomefile.txt
Qui u sta per Utente, g per gruppo e o per altri. E il = il segno viene utilizzato per assegnare il permesso leggi (r), scrivi (w), e eseguire (x) a ciascun ambito. La virgola separa ogni compito.

C'è una scorciatoia per assegnare i permessi e sta usando la notazione ottale. Nella notazione ottale:
- 4 sta per leggere
- 2 sta per scrivere
- 1 sta per eseguire
- 0 sta per nessun permesso
Quindi secondo la notazione di cui sopra il numero 7 concederà il permesso di lettura, scrittura ed esecuzione (4 + 2 + 1). Puoi mescolarlo e abbinarlo di conseguenza ed ecco un esempio di caso d'uso usando la notazione ottale:
chmod 755 starwars.txt

In questo esempio, il file starwars ha:
- permessi di lettura, scrittura ed esecuzione per l'utente.
- leggere ed eseguire per il gruppo.
- eseguire altri.
Bene! ci stiamo avvicinando alla fine della parte del post relativa alla gestione dei file. Questo comando finale ti permetterà di archiviare un file/comprimere un file. L'archiviazione di un file è utile quando si desidera spostare un gruppo di file tra i sistemi assicurandosi di evitare di corromperli.
comando tar
Il comando tar sta per tape archive e permette di creare manipolare ed estrarre i file archiviati.
Ecco la sintassi di base del comando per vedere come funziona:
tar -options nomefile1 nomefile1 …. nomefileN
Vediamo un esempio di utilizzo con un paio di opzioni. È altamente incoraggiato giocare con il campione e poi esplorarlo da soli per scoprire casi d'uso più interessanti.
tar -c -f compresso.zip ghost.txt starwars.txt

Rompiamolo. Il -c e -f i comandi sono solo alcuni in un elenco di molti, ma ecco cosa fanno. Il -c opzione dice al comando di creare un nuovo archivio e -f è utilizzato per specificare il nome del file per l'archivio che in questo caso è compresso.zip, il comando tar può creare archivi in .zip, .tar, .rar e altri formati, quindi assicurati di sceglierne uno che si adatti alle tue esigenze
Ora che sai come comprimere i file, vediamo come estrarli. Noi usiamo il -x e -f opzioni sul comando tar per estrarre un file, il -x opzione dice a tar di estrarre il file e -f è utilizzato per specificare il nome del file come mostrato nell'esempio seguente:

Bene, abbiamo finalmente superato la parte del post relativa alla gestione dei file. Evviva! Hai fatto un ottimo lavoro arrivando fin qui. Parleremo ora di processi.
Nella terminologia Linux, un processo è un programma attualmente in esecuzione, che esegue un compito specifico. I processi sono dinamici e cambiano costantemente quando l'utente passa da un'applicazione all'altra.
Il Sistema Documentazione Linux parla dei processi in modo molto dettagliato e ti incoraggio a leggere una volta che hai finito con questo post.
Ora che sappiamo cos'è un processo, vediamo come visualizzarli.
comando ps
Il comando ps ci consente di vedere quali processi sono attualmente in esecuzione su una macchina. Viene fornito con una varietà di opzioni, ma ecco un utilizzo minimo che mostra tutti i processi attualmente in esecuzione come root.
La sintassi è la seguente
ps -opzione
Nel nostro caso, useremo il -u opzione che mostrerà il processi in esecuzione come root.

Ora che sai come visualizzare i processi, che ne dici di imparare a ucciderli?
comando kill
Il comando kill viene utilizzato per uccidere o terminare un determinato processo senza disconnettersi o riavviare il computer. Vale la pena notare che il comando kill in realtà non uccide un processo, invia solo un segnale a un processo e il segnale dice al processo cosa deve essere fatto. Per impostazione predefinita, quando non viene specificato alcun segnale, un segnale 15 detto TERMINE viene inviato al processo e se questo fallisce un segnale più forte 9 SIGILLO viene inviato al processo, tuttavia per la maggior parte dei casi d'uso normali tutto ciò che devi specificare per terminare un processo è che è PID.
Ecco la sintassi per il comando kill:
kill [segnale o opzioni] PID
Ed ecco una demo:

Fai molta attenzione mentre uccidi un processo. L'interruzione di un processo critico del sistema può comportare un comportamento anomalo della macchina. Se, tuttavia, riesci ancora a farlo, assicurati di riavviare il sistema una volta per ripristinare la sua normale esecuzione.
Bene, ora che abbiamo coperto alcuni motivi con i comandi del terminale, parliamo di un modo semplice per apportare modifiche/aggiungere contenuti a un file. Utilizziamo tutti editor di testo come Visual Studio Code o Atom, ma poiché lo scopo di questa serie è di farti sentire a tuo agio con il terminale, perché non esplorare un editor di base all'interno del terminale stesso?
comando nano
Nano (fidati di me) sta per Nano's ANNOther editor ed è un editor gratuito, leggero e open source che ti consente di modificare i file all'interno del terminale è un editor di testo nativo come l'ambiente con i soliti comandi con cui hai familiarità.
Per invocare nano/aprire un file in nano si digita il comando nella seguente sintassi:
nano NOMEFILE
Se il file esiste, nano lo aprirebbe e in caso contrario creerebbe un nuovo file con quel nome e lo aprirebbe. L'editor in sé è abbastanza minimale ea differenza del suo fratello maggiore (e odiato) Vim/Vi non ti fa impazzire con i comandi notoriamente difficili. Per navigare all'interno del file si utilizzano i consueti tasti freccia. Per rimuovere il contenuto usi ancora il tasto Canc/Backspace e per gestire gli appunti usi i familiari Ctrl+C, Ctrl+V ecc.

L'editor presenta le operazioni più utilizzate come uscire dall'editor per te nella metà inferiore dello schermo. Prima di uscire da Ctrl+X ti verrà chiesto di salvare le modifiche apportate. Sicuramente Vim è in circolazione da più tempo, ma secondo la mia opinione personale, non è altro che un passaggio alla cultura hippy. Il massimo che puoi ottenere dall'essere un professionista in Vim sarebbe tirare fuori un vanto, e finisce lì stesso. Non c'è assolutamente motivo per cui uno dovrebbe perdere tempo prezioso imparando a usare Vim. Detto questo, siamo finalmente giunti alla fine della Parte 2.
Comandi Linux per utenti intermedi: riepilogo
Nella parte 2 della serie Linux Hands On, abbiamo costruito sulle fondamenta su cui abbiamo gettato Parte 1. Andavamo in giro a maneggiare file ea manipolarli. Abbiamo anche imparato un concetto completamente nuovo chiamato processi e come ucciderli. E abbiamo chiuso questa parte con una panoramica dell'editor di testo Nano. Sarebbe tutto per questa settimana. Fino al nostro ritorno la prossima settimana con la Parte 3, assicurati di avere abbastanza tempo per giocare con il comando condiviso in questo post. Non essere sopraffatto dal numero di comandi là fuori, ci vuole molto tempo perché queste cose diventino memoria muscolare. Fino a quando ciò non accade, l'esperienza pratica è la tua migliore amica.
Manas Chaudhary
Grazie per queste serie Linux. L'ho esaminato completamente e l'ho trovato davvero utile. Soprattutto video. A volte è difficile seguire l'articolo, quindi ho scaricato il video e l'ho imparato. Ora sento di conoscere una buona quantità di Linux per iniziare a fare qualcosa al suo interno. Grazie per questi post mi hanno aiutato molto.