Comandes LinuxGestionar fitxers i directoris a LinuxLinux

La comanda cd a Linux: moure’t pels directoris del terminal



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

ComandaOn et porta
cdAl teu directori personal (/home/usuari)
cd ~També al directori personal
cd ~joanAl 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 directoriEntra 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 defineixes CDPATH=.:~/projectes al ~/.bashrc, cd web funcionarà des de qualsevol lloc si existeix ~/projectes/web.
  • pushd i popd: també interns de Bash, guarden una pila de directoris. pushd /etc hi entra i recorda d’on venies; popd hi torna.
  • Als scripts, comprova sempre que el cd ha funcionat abans de fer res més, sobretot si després esborres fitxers: cd /var/tmp/exportacions || exit 1.

Comandes relacionades