cd — kretanje kroz direktorijume

cd menja tekući direktorijum. Skraćeno od change directory.

$ pwd
/home/alen

$ cd dokumenti
$ pwd
/home/alen/dokumenti

Oblici koje ćeš koristiti svakodnevno

$ cd /var/log        # apsolutna putanja, radi odasvud
$ cd dokumenti       # relativna, od mesta gde si
$ cd ..              # nivo iznad
$ cd ../..           # dva nivoa iznad
$ cd ~               # kući
$ cd                 # takođe kući
$ cd -               # nazad u prethodni direktorijum

Golo cd bez ičega je najbrži povratak u kućni direktorijum, odakle god da si zalutao.

cd - te vrti između dve lokacije i usput ispiše gde si stigao:

$ pwd
/home/alen/projekti/sajt

$ cd /etc/nginx
$ cd -
/home/alen/projekti/sajt

Neprocenjivo kad upoređuješ konfiguraciju u /etc sa nečim u svom projektu. Prethodnu lokaciju shell čuva u promenljivoj OLDPWD.

Značenje putanja i oznaka ., .., ~ detaljno je objašnjeno u lekciji Apsolutne i relativne putanje.

Ime sa razmakom

$ cd moji dokumenti
bash: cd: too many arguments

Shell je razmak protumačio kao granicu između dva argumenta. Ispravno je pod navodnicima ili sa obrnutom kosom crtom:

$ cd "moji dokumenti"
$ cd moji\ dokumenti

Najlakše je pritisnuti Tab posle prvih par slova — shell sam doda ono što treba.

Tri poruke i šta znače

$ cd podaci
bash: cd: podaci: No such file or directory

Nema tog direktorijuma odavde. Proveri gde si sa pwd i šta postoji sa ls.

$ cd /root
bash: cd: /root: Permission denied

Za ulazak u direktorijum potrebno je pravo x, ne r. O tome piše u lekciji Pregled prava pristupa.

$ cd beleske.txt
bash: cd: beleske.txt: Not a directory

To je fajl, ne direktorijum.

Zašto cd nije program

$ which cd
$ type cd
cd is a shell builtin

cd je ugrađen u sam shell, i mora biti. Program se izvršava u zasebnom procesu; kad bi cd bio program, promenio bi direktorijum sebi i završio — a tvoj shell bi ostao gde je bio.

Ista logika objašnjava zašto skripta sa cd ne menja tvoj direktorijum:

$ cat idi.sh
#!/bin/bash
cd /var/log

$ ./idi.sh
$ pwd
/home/alen

Skripta se izvršila u potprocesu. Ako želiš da promena ostane, skriptu pokreni sa source:

$ source idi.sh
$ pwd
/var/log

Sitnice koje se isplate

Tab dopunjava

$ cd /var/lo[Tab]
$ cd /var/log/

Dva pritiska na Tab prikazuju sve mogućnosti kad ih ima više. Ovo je najkorisnija navika u terminalu.

Ispravljanje sitnih grešaka

$ shopt -s cdspell
$ cd /vra/log
/var/log

Red ide u ~/.bashrc. Više takvih podešavanja na stranici .bashrc u praksi.

Direktorijum i ulazak u njega odjednom

mkcd() {
    mkdir -p "$1" && cd "$1"
}
$ mkcd projekti/novi/test

Slaganje direktorijuma na stek

$ pushd /etc/nginx
/etc/nginx ~
$ pushd /var/log
/var/log /etc/nginx ~
$ popd
/etc/nginx ~

Za više od dve lokacije, gde cd - nije dovoljan.

Simbolički linkovi

$ cd tekuci
$ pwd
/home/alen/tekuci

$ pwd -P
/home/alen/verzije/2.4

pwd prikazuje put kojim si došao, a pwd -P stvarno mesto. Isto važi i za cd .. iz linkovanog direktorijuma — vraća te tamo odakle si došao, ne u stvarni roditeljski. Vidi Inode-ovi i linkovi.

Kratka referenca

  • cd putanja — idi tamo
  • cd ili cd ~ — kući
  • cd .. — nivo iznad · cd ../.. — dva nivoa
  • cd - — nazad u prethodni
  • cd ~korisnik — tuđi kućni direktorijum
  • pushd / popd — stek direktorijuma
  • pwd -P — stvarna putanja, bez linkova
  • Tab dopunjava imena · navodnici za imena sa razmakom

Vežba

  1. Iz kućnog direktorijuma pređi u /var/log, pa se vrati nazad jednom komandom.
  2. Napravi direktorijum sa razmakom u imenu i uđi u njega na dva različita načina.
  3. Napravi skriptu koja radi cd /tmp, pokreni je i objasni sebi zašto se tvoj direktorijum nije promenio.
  4. Iz direktorijuma tri nivoa duboko vrati se u kućni, bez kucanja /home.

Gde se trenutno nalaziš, pokazuje pwd, šta je tu — ls, a značenje putanja objašnjava lekcija Apsolutne i relativne putanje.

Cela lekcija je deo vodiča Linux osnove.

Comments

Popular posts from this blog

Početak u Linuxu — šta je i zašto se uči

Konverzija tipova podataka u Pythonu

groupadd