Informatica di base

Comandi base per usare il terminale Unix

Autore

Manuel Ricci

Attorno al terminale aleggia sempre una certo non so che di mistero. Si tratta di uno strumento molto potente, il quale permette di fare praticamente tutto all’interno del proprio sistema.

Di seguito riporterò i comandi di base per poter iniziare ad usare un terminale Unix, come quello presente sulle distribuzioni Linux e MacOs, e il relativo equivalente, se presente, da usare in Windows, il quale differisce nella maggior parte delle volte.

Indice dei contenuti

  • Navigazione
  • Creazione
  • Copia
  • Spostamento
  • Rimozione
  • Referenze
  • Pulizia

Forse il comando più utilizzato è sicuramente ls, il suo scopo è quello di elencare i file e le sotto directory presenti in una directory.

1ls

Se sprovvisto di opzioni, ls mostrerà il contenuto della directory corrente.

Di base, quando si apre il terminale ci si trova nella directory Home dell’utente che sta usando il terminale, la quale viene contraddistinta dal carattere tilde (~).

1ls nome-directory

Se ls viene fatto seguire dal nome di una directory è possibile vederne il contenuto.

Oltre ai percorsi relativi è possibile scrivere anche quelli assoluti, ottenendo lo stesso medesimo risultato.

1ls nome-directory/\*.jpg

Mettiamo il caso che stai cercando un file, ma ti ricordi il formato del file, ma non il nome. Per poter filtrare i risultati di ls basterà usare il carattere jolly asterisco (*) seguito dall’estensione.

1ls -R

Occhio ad usare questa opzione perché se si ti trovi in una cartella particolarmente affollata potrebbe mostrare a video parecchie informazioni (in quel caso se vuoi interrompere il processo di scansione puoi usare la combinazione di tasti command + c o ctrl + c).

L’opzione -R di fatto permette di mostrare in maniera ricorsiva i contenuti della varie sottodirectory della directory specificata (quella corrente se non ne specifichi nessuna).

Questo evita di dover riscrivere il comando ls per ogni sotto directory.

1ls -l

L’opzione -l permette di mostrare le varie voci in colonna con tutte le varie informazioni relative ai permessi (lettura, scrittura ed esecuzione).

1ls -m

Se sei un amante degli elenchi separati da virgole, allora l’opzione -m fa per te.

1ls -a

Stai cercando la cartella di git, ma non la trovi? Normale, si tratta di una directory nascosta e ls non la mostra, per ovviare al problema basta usare l’opzione -a.

1ls -r

Da non confondere con -R (che sta per ricorsivo), -r o nella sua versione estesa --reverse permette di mostrare i file e le directory nell’ordine inverso rispetto a quello principale.

1ls -X

L’opzione -X permette di ordinare i file e le directory per estensione.

1ls -t

L’opzione -t ordina i file per data e ora.

1ls -S

L’opzione -S ordina i contenuti per dimensione.

1ls -h # Senza l'opzione -l non mostra nulla di speciale
2ls -lh # Così va meglio

L’opzione -h mostra le dimensioni dei file in Kilobyte, Megabyte e Gigabyte.

L’equivalente di ls in Windows è dir.

1pwd

Con ls archiviato possiamo andare avanti. Il comando qui sopra è pwd abbreviazione di print working directory.

Mentre si naviga da terminale può capitare di perdere l’orientamento, pwd corre in nostro soccorso mostrando il percorso corrente.

L’equivalente di pwd in Windows è cd.

1cd

Il comando cd, da solo, sui sistemi Unix fa tornare alla directory home, mentre su Windows è l’equivalente di pwd.

In generale cd permette di cambiare directory.

1cd ~

Facendo seguire cd da una tilde (~), rendiamo esplicito il voler ritornare nella nostra directory Home.

1cd -

Il meno ti porta alla directory precedente.

1cd directory/sotto-directory

Facendo seguire un percorso a cd, cambieremo directory, raggiungendo quella desiderata.

Non c’è differenza tra Unix e Windows, cd è equivalente.

Creazione

1touch

Lo scopo principale del comando touch è quello di modificare l’accesso e l’ora di modifica di un file, ma in realtà è il suo scopo secondario a risultare super utile. touch infatti viene largamente impiegato per la creazione di file vuoti.

1touch test.txt

Facendo seguire touch dal nome di un file e relativa estensione, verrà creato suddetto file nella directory corrente.

Se invece vuoi anche scrivere qualcosa destro il file da creare puoi usare questo comando:

1echo "Hello, World!" > test.txt

echo da solo si limita a mostrare quanto richiesto, in questo caso la stringa "Hello, World!", ma facendolo seguire da > test.txt rendiamo esplicito il fatto che tale risultato debba essere inserito all’interno di un file, il quale se non esiste verrà creato automaticamente.

Per modifiche più complesse puoi sempre usare nano.

1nano test.txt

Sono consapevole del fatto che nano non piaccia a tutti, ma è un buon punto di partenza per iniziare.

L’equivalente di touch in Windows è abbastanza particolare: type nul > testo.txt

Mentre se si vuole creare un file con del contenuto si usa lo stesso comando di Unix echo.

1cat <nome-file>

Lo scopo principale di cat è quello di concatenare, ma può anche essere usato per mostrare il contenuto di un file se fatto seguire dal nome del file interessato.

Per vedere solo una prima parte del contenuto puoi usare il comando tail.

1cat <nome-file-1> <nome-file-2>

Mettendo uno o più file separati da uno spazio, cat mostrerà la concatenazione che ne risulterà.

1cat <nome-file-1> <nome-file-2> > <nome-file-risultato>

Se vogliamo salvare il risultato della concatenazione basta far seguire alla lista di file da concatenare > <nome-file-risultato> come già visto con echo.

L’equivalente di cat in Windows è type, per il resto la sintassi è identica.

1mkdir <nome-cartella>

Il comando permette di creare una cartella.

1mkdir -p immagini/animali/cani

Mentre con mkdir senza opzioni è possibile creare una cartella, con l’opzione -p è possibile creare anche le sottocartelle.

1mkdir -v <nome-cartella> # oppure
2mkdir --verbose <nome-cartella>

Come gli esempi visti in precedenza -v è l’opzione che attiva la modalità verbosa mostrando i passaggi compiuti da mkdir.

mkdir è valido anche per Windows.

Copia

1cp

cp è il comando che permette all’utente di copiare un file.

1cp <nome-file>.<estensione> <nome-file-copia>.<estensione>

Da solo, ovviamente, non ha alcun effetto. Per copiare un file bisogna far seguire il nome del file da copiare e il nome della copia.

Nel caso ci fosse un conflitto, il terminale vi avviserà.

1cp tes\* test.txt

Il carattere jolly (*) è ideato per i più pigri i quali non vogliono scrivere tutto il nome del file da copiare.

Se il file deve essere copiato in una directory basta specificare il percorso al posto del solo nome.

1cp -v

Come già visto in precedenza anche cp, ha la sua modalità verbose.

1cp -R

Di default, cp emetterà un’errore qualora si provasse a copiare una cartella non vuota, per ovviare al problema basta usare l’opzione -R.

1cp -a

Per quanto ci siano comandi più avanzati per effettuare copie di backup, cp rimane comunque l’alternativa più semplice. Grazie all’opzione -a verrà creato una copia evitando di copiare eventuali collegamenti simbolici che potrebbero appesantire il processo di copiatura.

In Windows l’equivalente di cp è copy, mentre per la copia ricorsiva (quella con l’opzione -R) l’equivalente è xcopy.

Spostamento

1mv

mv è un comando particolare, di fatto permette di spostare i file all’interno del sistema, ma ha anche una seconda finalità, la rinominazione.

1mv <nome-file> <directory>

Sposta un file in una directory.

1mv <nome-file> <nuovo-nome-file>

Se al posto di un percorso specifichiamo un nuovo nome di file, mv rinominerà il suddetto file.

L’equivalente Windows di mv è move.

Rimozione

1rm

rm, il quale sta per remove, permette appunto di rimuovere file e cartelle.

1rm \*

Con l’ausilio del carattere jolly rm eliminerà tutti i file (non le directory).

1rm -v

Come già visto in precedenza, anche rm ha la sua opzione verbose, la quale mostrerà l’avanzamento della rimozione.

1rm -i

rm ha anche una modalità interattiva, la quale mostrerà per ogni file un prompt, dove sarà necessario dare una conferma per procedere con la cancellazione. Il prompt accetta y per yes e n per no.

1rmdir

Per rimuovere una cartella vuota non si usa rm -R, ma rmdir. Attenzione! Se la cartella contiene dei file il comando fallirà, avvisandoci che la cartella non è vuota.

1rm -Rf

Per rimuovere le cartelle e i relativi file e sotto directory bisogna usare il comando rm seguito dalle opzioni -R e -f.

L’equivalente di rm in Windows è del, mentre nel caso di rimozione di cartelle e file e sotto directory contenuti in esse l’equivalente è deltree. Per la rimozione di cartelle vuote non c’è differenza.

Referenze

1man <comando>

Il comando man mostra il manuale di un comando specifico.

1man ls

Mostrerà tutto ciò che c’è da sapere sul comando ls.

1man -k list

Se non si è sicuri di quale comando utilizzare per eseguire una determinata task, l’opzione -k seguito dalla funzionalità cercherà tutti i comandi che mostrano una lista.

1man -f ls # Oppure
2whatis ls

A differenza di man che mostra un vero e proprio manuale, man -f o whatis mostrano una riga di descrizione abbastanza intuitiva che fa intendere la funzione del comando.

L’equivalente di man in Windows è help.

1info

Il comando info è praticamente man sotto steroidi. Le pagine man presentavano diversi problemi, per ovviare al problema, il progetto GNU ha creato un formato apposito: le pagine info. Tali pagine sono scritte meglio rispetto a quelle di man e sono decisamente più accessibili per la consultazione.

1info ls

Mostrerà la pagina info del comando ls.

Non esiste corrispondenza in Windows per il comando info.

Pulizia

1clear

Può capitare di fare un po’ di casino. Per poter ripulire il terminale dalle righe scritte e mostrate finora si può usare il comando clear.

Caricamento...

Diventiamo amici di penna? ✒️

Iscriviti alla newsletter per ricevere una mail ogni paio di settimane con le ultime novità, gli ultimi approfondimenti e gli ultimi corsi gratuiti puubblicati. Ogni tanto potrei scrivere qualcosa di commerciale, ma solo se mi autorizzi, altrimenti non ti disturberò oltre.

Se non ti piace la newsletter ti ricordo la community su Discord, dove puoi chiedere aiuto, fare domande e condividere le tue esperienze (ma soprattutto scambiare due meme con me). Ti aspetto!

Ho in previsione di mandarti una newsletter ogni due settimane e una commerciale quando capita.