La comanda cd (de change directory) canvia el directori de treball del terminal, és a dir, la carpeta des d’on s’executen les comandes que escrius. És la comanda bàsica per moure’t pel sistema de fitxers, i gairebé sempre la faràs servir juntament amb ls (què hi ha aquí?) i pwd (on soc?).
cd no és un programa a part, sinó una comanda interna del shell (Bash, zsh…): ha de ser-ho, perquè un programa extern no podria canviar el directori del shell que l’ha llançat.
$ type cd
cd is a shell builtin
Sintaxi
cd [-L|-P] [directori]
Si no indiques cap directori, cd et porta al teu directori personal (el valor de $HOME).
Dreceres més útils
| Comanda | On et porta |
|---|---|
cd | Al teu directori personal (/home/usuari) |
cd ~ | També al directori personal |
cd ~joan | Al directori personal de l’usuari joan (si hi tens permís) |
cd .. | Al directori pare (un nivell amunt) |
cd ../.. | Dos nivells amunt |
cd - | Al directori on eres abans (i el mostra) |
cd / | A l’arrel del sistema de fitxers |
cd -P directori | Entra resolent els enllaços simbòlics (camí físic) |
Rutes absolutes i relatives
Una ruta absoluta comença per / i descriu el camí complet des de l’arrel. Funciona igual estiguis on estiguis:
cd /var/log
Una ruta relativa no comença per / i es compta a partir del directori actual:
cd Documents/factures
Si ara ets a /home/oscar, això et porta a /home/oscar/Documents/factures.
Exemples
Anar al teu directori personal i comprovar-ho:
$ cd
$ pwd
/home/oscar
Pujar un nivell:
$ pwd
/home/oscar/projectes/web
$ cd ..
$ pwd
/home/oscar/projectes
Alternar entre dos directoris amb cd -, molt pràctic quan treballes en dos llocs alhora:
$ cd /etc/apache2
$ cd /var/log/apache2
$ cd -
/etc/apache2
$ cd -
/var/log/apache2
Entrar en un directori amb espais al nom (posa’l entre cometes o escapa l’espai):
cd "Fotos de vacances"
cd Fotos\ de\ vacances
El tabulador és el teu millor amic: escriu les primeres lletres del directori i prem Tab perquè el shell completi el nom.
Errors habituals
$ cd /no/existeix
bash: cd: /no/existeix: No such file or directory
$ cd /etc/passwd
bash: cd: /etc/passwd: Not a directory
$ cd privat
bash: cd: privat: Permission denied
L’últim apareix quan no tens el permís d’execució (x) sobre el directori: per entrar en un directori cal la x, no n’hi ha prou amb la r. Ho explico a la guia de permisos.
Enllaços simbòlics: -L i -P
Si entres en un directori a través d’un enllaç simbòlic, per defecte (-L) el shell recorda el camí «lògic», amb l’enllaç. Amb -P resol l’enllaç i et deixa al camí real:
$ ln -s /var/www/html web
$ cd web
$ pwd
/home/oscar/web
$ cd -P web # des del directori personal
$ pwd
/var/www/html
Trucs extra
CDPATH: si defineixesCDPATH=.:~/projectesal~/.bashrc,cd webfuncionarà des de qualsevol lloc si existeix~/projectes/web.pushdipopd: també interns de Bash, guarden una pila de directoris.pushd /etchi entra i recorda d’on venies;popdhi torna.- Als scripts, comprova sempre que el
cdha funcionat abans de fer res més, sobretot si després esborres fitxers:cd /var/tmp/exportacions || exit 1.
Comandes relacionades
pwd: mostra el directori actual.ls: llista el contingut d’un directori.mkdir: crea directoris.tree: mostra l’estructura de directoris en forma d’arbre.- L’estructura de directoris a Linux: què hi ha a
/etc,/var,/usr…