10 comandi indispensabili

10 comandi indispensabili

Una brevissima lista di comandi essenziali, che non puoi non conoscere se lavori su un sistema unix-like.

1. pwd

Quando apri un nuovo terminale di solito "ti trovi" nella home directory del tuo utente. In qualsiasi momento, per sapere in quale directory sei puoi usare il comando pwd. In pratica pwd stampa il path assoluto, cioè iniziando dalla radice /, della directory corrente. La directory di ogni utente di solito è qualcosa del tipo "/home/username". Nel mio caso:

$ pwd
/home/maurizio

2. ls

Il comando ls elenca i file e le directory nel path corrente o in un path specificato. Ad esempio con ls vengono visualizzati i file e le directory del percorso corrente (quello visualizzato da pwd), mentre con ls /home vengono visualizzati i file e le directory presenti nel percorso /home.

Il comando ls ha molti switch interessanti. Ad esempio con "-a" visualizza tutti i file, anche quelli nascosti (che su Unix sono i file il cui nome inizia con il carattere punto . ). Noterete che in tutte le directory vedrete sempre due directory con nome . e .. (punto e punto-punto), queste indicano rispettivamente la cartella stessa e la cartella sopra. Ad esempio se siete in /home/user la cartella . indica /home/user stessa, mentre .. indica /home.

Un altro switch interessante è -l che fa in modo che ls visualizzi non solo il nome ma anche altre informazioni relative al file, come lo spazio che occupa, la data di ultima modifica e i diritti di accesso.

3. mkdir & rmdir

Il comando mkdir mi permette di creare una nuova directory. Ad esempio con mkdir documenti creo una directory che si chiama documenti sotto la directory corrente (che è quella indicata dal comando pwd). Per rimuovere una directory posso usare il comando rmdir, ad esempio rmdir documenti rimuove la directory che ho creato prima. Attenzione però che rmdir può rimuovere solo directory che non contengono file o altre sottodirectory.

4. cd

Il comando cd serve per cambiare la directory corrente, ossia quella visualizzata da pwd. Ad esempio con cd / ci si porta nella root (radice) del sistema, o con cd /home ci si porta nella directory sotto la quale vengono create le home dir degli utenti.

Notiamo che in Unix una directory o un file può essere indirizzata in maniera assoluta, partendo dalla root del filesystem, o in maniera relativa, ossia partendo dal percorso corrente (sempre quello che viene fuori col comando pwd). Ad esempio se mi trovassi nella mia home directory che si chiama /home/maurizio e creassi (con mkdir) una directory documenti, poi potrei "entrare" in quella directory con cd documenti, usando l'indirizzamento relativo. Se la directory corrente non fosse la mia home, per entrare nella mia cartella documenti dovrei usare l'indirizzamento assoluto, così: cd /home/maurizio/documenti. Distinguere un path assoluto da uno relativo è facile: i path assoluti iniziano sempre con /, che indica la directory radice (root) del sistema.

5. touch

Si utilizza il comando touch per creare un file vuoto. Ad esempio con touch testo.txt creiamo un file di testo vuoto.

$ touch testo.txt
$ ls
testo.txt
$ ls -l
totale 0
-rw-rw-r-- 1 maurizio maurizio 0 ago  2 17:20 testo.txt

6. rm

Per rimuovere un file si può usare il comando rm:

$ ls
testo.txt
$ rm testo.txt 
$ ls
$ 

Il comando rm si può usare anche per rimuovere intere directory grazie allo switch -r. Ad esempio se avessimo una directory documenti con tanti file dentro, potremmo rimuoverla con rm -r documenti. Attenzione però che il risultato è irreversibile. Una volta cancellato il contenuto della directory non è più recuperabile.

$ ls documenti
testo.txt
$ rm -r documenti
$ ls documenti
ls: impossibile accedere a 'documenti': File o directory non esistente

7. cp

Con cp posso creare una copia di un file con un diverso nome o un diverso path, cioè in una directory diversa. Esempio:

$ touch test.txt
$ ls
test.txt
$ cp test.txt copia.txt
$ ls
copia.txt  test.txt

La copia di un file è a tutti gli effetti un nuovo file con lo stesso contenuto e le due copie sono tra loro completamente indipendenti. Il comando cp solitamente copia solo i file. Se devo copiare delle directory posso farlo usando lo switch -r.

8. mv

Con il comando mv posso spostare un file: mv funziona in modo simile a cp solo che invece di creare un nuovo file "muove" (da cui viene mv) il file in una directory nuova o sotto un nuovo nome.

$ ls
copia.txt  test.txt
$ mv test.txt nuovonome,txt
$ ls
copia.txt  nuovonome,txt

9. cat

Il comando cat visualizza il contenuto di un file. Ad esempio:

$ cat /etc/resolv.conf 
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53

cat è utilissimo quando si vuol vedere il contenuto di un file di configurazione o di uno script di sistema. Attenzione però che non tutti i file del sistema contengono caratteri rappresentabili come testo. Ad esempio un programma eseguibile, come il comando cp che si trova in /bin non contiene del testo. Per verificarlo provate a impartire cat /bin/cp. Altri file il cui contenuto non è comprensibile a occhio per noi umani sono ad esempio i file compressi, ad esempio i file .zip e .gz, e anche alcuni file il cui contenuto è un ocumento ma che contengono anche dati relativi alla formattazione, come i file .pdf, .doc, .docx, .xls, e moltri altri.

10: file

Se non siete sicuri riguardo al tipo di un certo file, il sistema vi aiuta mettendovi a disposizione il comando file, che cercherà di identificare per voi il tipo di un certo file partendo dal suo contenuto (e non dall'estensione che potrebbe essere stata cambiata). Vediamo alcuni esempi:

$ file /bin/cp
/bin/cp: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d9cd98ee5c3d9eccacdbf121dea6e518f1f80c32, stripped
$ file /home
/home: directory
$ file test.pdf 
test.pdf: PDF document, version 1.5
$ file /etc/hosts
/etc/hosts: ASCII text

bonus: man

Il vostro sistema Unix-like, che sia GNU/Linux, FreeBSD o Mac, vi offre migliaia di comandi potentissimi. Ognuno di questi comandi ha spesso decine di switch che ne modificano il comportamento e rendendoli spesso adatti a compiti diversi. Conoscere e ricordare questi comandi e tutti i possibili switch è un compito immane, ma per fortuna il sistema è dotato di un manuale interno: man. Usate man nomecomando per ottenere rapidamente informazioni riguardo ad un comando. Ad eempio con man cp potete vedere il manuale del comando cp e scoprire in dettaglio come funziona e quali switch vi mette a disposizione. Potete ad esempio scoprire che se specificate lo switch -i cp vi chiederà conferma prima di sovrascrivere eventuali file, o se usate lo switch -n cp non copierà i file che già esistono a destinazione, ed altre decine di opzioni che vi semplificheranno la vita!

Currently there are no comments, so be the first!