cd è il comando con cui ci si sposta tra le cartelle nel terminale Linux. Se pwd ti dice dove sei, cd ti porta dove vuoi andare: è probabilmente il comando che userai più spesso in assoluto.
Cos'è
cd è l'acronimo di change directory, cioè "cambia directory". A differenza di molti altri comandi non è un programma separato, ma un comando interno (builtin) della shell. Il motivo è tecnico: cambiare la directory corrente è una modifica allo stato della shell stessa, e un programma esterno, essendo un processo distinto, potrebbe cambiare solo la propria directory e non quella della shell che l'ha lanciato.
Cosa fa
Modifica la directory di lavoro della shell: da quel momento i comandi successivi partono dalla nuova posizione. In caso di successo non stampa nulla; se qualcosa va storto, mostra un messaggio d'errore.
Come si usa
Sintassi base:
$ cd [directory]Esempio 1: percorso assoluto e relativo
Un percorso assoluto parte dalla radice (/), uno relativo parte dalla directory in cui ti trovi.
$ pwd
/home/enzo
$ cd /var/log
$ pwd
/var/log
$ cd /home/enzo
$ cd Documenti/Articoli
$ pwd
/home/enzo/Documenti/ArticoliEsempio 2: salire di livello con ..
Il punto doppio (..) indica la directory superiore, il punto singolo (.) quella corrente.
$ pwd
/home/enzo/Documenti/Articoli
$ cd ..
$ pwd
/home/enzo/Documenti
$ cd ../..
$ pwd
/homeEsempio 3: tornare alla home
Tre modi equivalenti per tornare alla propria cartella personale:
$ cd
$ cd ~
$ cd $HOMECon ~nomeutente puoi anche raggiungere la home di un altro utente, se hai i permessi per entrarci:
$ cd ~marioEsempio 4: tornare alla directory precedente
Con cd - torni all'ultima directory in cui eri, utilissimo quando fai avanti e indietro tra due cartelle lontane:
$ cd /var/log
$ cd /etc/nginx
$ cd -
/var/log
$ cd -
/etc/nginxIl comando stampa il percorso di destinazione, che viene memorizzato nella variabile OLDPWD.
Esempio 5: nomi con spazi
Se il nome della cartella contiene spazi, va racchiuso tra virgolette oppure gli spazi vanno preceduti da una barra rovesciata:
$ cd "Documenti di lavoro"
$ cd Documenti\ di\ lavoroUn consiglio pratico: premi il tasto Tab per far completare il nome alla shell, che inserisce da sola gli spazi e i caratteri speciali nel modo corretto.
Esempio 6: uso negli script
Negli script conviene verificare che il cd sia riuscito, altrimenti i comandi successivi verrebbero eseguiti nella cartella sbagliata:
#!/bin/bash
cd /var/www/html || { echo "Cartella non trovata"; exit 1; }
echo "Sono in: $(pwd)"
lsOpzioni utili
cd -L(default): segue i link simbolici, mantenendo nel percorso il nome del link.cd -P: risolve i link simbolici e va nella directory fisica effettiva.cd -: torna alla directory precedente (non è un'opzione vera e propria, ma una scorciatoia molto usata).
La differenza tra -L e -P si vede combinando cd con pwd:
$ ln -s /var/www/html ~/sito
$ cd -P ~/sito
$ pwd
/var/www/htmlAttenzione a
- Maiuscole e minuscole: su Linux
Documentiedocumentisono due cartelle diverse. - Permessi: per entrare in una directory serve il permesso di esecuzione (
x) su di essa. Se manca, ottieniPermission denied. - Directory inesistente: il messaggio è
No such file or directory. Controlla conpwde con il completamento automatico. - Negli script: il
cdeseguito dentro uno script cambia la directory solo per lo script, non per il terminale da cui l'hai lanciato.
Riepilogo
| Comando | Cosa fa |
|---|---|
cd /percorso | Va in un percorso assoluto |
cd cartella | Va in una sottocartella (percorso relativo) |
cd .. | Sale di un livello |
cd / cd ~ | Torna alla home |
cd - | Torna alla directory precedente |
cd -P cartella | Entra risolvendo i link simbolici |
Nel prossimo articolo: ls, il comando per elencare il contenuto di una directory.