Polecenie cd

man cd

cd: cd [-L|[-P [-e]] [-@]] [katalog]
    Zmiana bieżącego katalogu powłoki.
    
    Zmiana bieżącego katalogu na KATALOG. Domyślnym KATALOGIEM jest wartość
    zmiennej powłoki HOME.
    
    Zmienna CDPATH określa ścieżkę przeszukiwania w poszukiwaniu katalogu
    zawierającego KATALOG. Alternatywne nazwy katalogów są w CDPATH rozdzielone
    dwukropkami (:). Pusta nazwa katalogu oznacza to samo, co katalog
    bieżący. Jeśli KATALOG zaczyna się od ukośnika (/), to CDPATH nie
    nie jest używane.
    
    Gdy katalog nie zostanie znaleziony, a ustawiona jest zmienna powłoki
    `cdable_vars', to następuje próba użycia podanej nazwy jako nazwy zmiennej.
    Jeśli zmienna ta ma wartość, to jako KATALOG jest używana jej wartość.
    
    Opcje:
        -L      wymuszenie śledzenia dowiązań symbolicznych: rozwiązanie
                dowiązań w KATALOGU po przetworzeniu wszystkich `..'
        -P      korzystanie z fizycznej struktury katalogów zamiast śledzenia
                dowiązań symbolicznych: rozwiązanie dowiązań w KATALOGU przed
                przetworzeniem wszystkich `..'
        -e      jeśli podano opcję -P, a nie można określić bieżącego katalogu,
                polecenie kończy się stanem niezerowym
        -@  na systemach obsługujących je, zaprezentowanie pliku mającego
                rozszerzone atrybuty jako katalogu zawierającego atrybuty pliku
    
    Domyślne jest śledzenie dowiązań symbolicznych, jak z opcją `-L'.
    `..' jest przetwarzane przez usunięcie bezpośredniego poprzedniego
    elementu ścieżki przed ukośnikiem lub początkiem KATALOGU.
    
    Stan wyjściowy:
    Polecenie zwraca 0 jeśli katalog został zmieniony oraz $PWD zostało
    zmienione pomyślnie w przypadku użycia -P; w przeciwnym razie zwraca
    wartość niezerową.

Podpowiedź

Powiązane polecenia to pwd.

Przykłady użycia

Polecenie cd (change directory) umożliwia zmianę katalogu w którym się znajdujemy (tzw. $PWD).

johny@ThinkPad:~$ pwd
/home/johny
johny@ThinkPad:~$ cd Desktop/
johny@ThinkPad:~/Desktop$ pwd
/home/johny/Desktop

Podpowiedź

Polecenie Wynik działania
cd
cd ~

Wykonanie obydwóch poleceń będzie miało ten sam skutek - przejście do katalogu domowego użytkownika.

Diabeł tkwi w szczegółach tj. w przypadku braku argumentów polecenie cd samo odczyta wartość zmiennej $HOME, natomiast w przypadku podania ~ powłoka (Bash) rozwinie tą zmienną (wstawi wartośc zmiennej $HOME przed wykonaniem polecenia).

cd -
cd ~-

Wykonanie obydwóch poleceń będzie miało ten sam skutek - przejście do poprzedniego katalogu w którym był uzytkownik (${OLDWPD}).

W przypadku argumentu - polecenie cd pobierze wartość samo, w prapadku argumentu ~- polecenie otrzyma wartość z powłoki.

Wykorzystanie $OLD_PWD

johny@ThinkPad:~$ rm -rf _build/ ; make html ; cd _build/html/ ; python3 -m http.server ; cd -

Wykonanie powyższych komend spowoduje:

  1. wybudowanie jakiegoś projektu,
  2. przejście do jego wersji html,
  3. zaserwowanie wybudowanego katalogu jako strony internetowej
  4. po zakończeniu serwowania strony powrót do katalogu z którego nastapiło budowanie

By dowiedzieć się więcej o argumentach ~ i ~- zachęcam do zapoznania się z man bash (sekcja cd) lub dokumentacją polecenia set.