Streszczenie (TL; DR)
- Użyj,
pwdaby wiedzieć, gdzie się znajdujesz (lub spójrz między :a $w monicie).
- Służy
cddo zmiany katalogu w innym miejscu. W przeciwieństwie do Windows, zawszecd musi następować spacja; polecenia takie jak i nie będą działać, ale i będą.cd/cd..cd /cd ..
Wiedząc, gdzie jesteś
Sposób 1: Uruchom pwd.
Katalog, w którym aktualnie się znajdujesz, jest specyficzny dla powłoki (i bardziej ogólnie, specyficzny dla aplikacji). Możesz uruchamiać jedną powłokę w jednym katalogu, a drugą w innym katalogu.
Aby wiedzieć, w którym katalogu aktualnie się znajdujesz, uruchom:
pwd
Na przykład (z powłoki, którą mam teraz otwartą na moim komputerze):
ek@Kip:~$ pwd
/home/ek
To mówi mi, że jestem w katalogu /home/ek. /homejest (nieco myląco) katalogiem, który zawiera katalogi domowe użytkowników (sam nie jest katalogiem domowym żadnego użytkownika). Ludzki użytkownik usernamema katalog domowy ./home/username
rootUżytkownik nie posiada katalog domowy w /home. Zamiast tego rootkatalogiem domowym jest /root. Nie należy tego mylić z katalogiem głównym , którym jest /.
Sposób 2: Zbadaj swój monit.
Domyślna konfiguracja Twojego monitu polega na tym, że informuje cię, w którym katalogu aktualnie się znajdujesz. Monit ten to tekst, który pojawia się, aby powiadomić cię, że powłoka jest gotowa na przyjęcie polecenia.
W przykładzie, który pokazałeś nam w swoim pytaniu, podpowiedź brzmi:
christy@ubuntu:~$
christyjest twoją nazwą użytkownika. @Charakter oddziela ją od ubuntu, nazwę hosta komputera. (Jeśli korzystasz z dysku CD na żywo, jego nazwą hosta będzie ubuntu, a niektóre osoby wybiorą go jako nazwę swojego komputera również podczas instalacji.)
:Charakter oddziela ją od nazwy katalogu jesteś obecnie w. W tym przypadku, który jest reprezentowany przez ~. ~jest skrótem dla twojego katalogu domowego. Gdy nie ma Cię w swoim katalogu domowym, powinieneś zobaczyć pełną nazwę katalogu. Na przykład:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Aby dokończyć, co oznacza każda część monitu: w przypadku monitu zgodnego z tą konwencją pojawia się $albo #znak , albo $, jak w tym przypadku, oznacza to normalną powłokę użytkownika. #Znak oznaczałby, że jest rootpowłoką.)
Zmiana gdzie jesteś
Dlaczego polecenie „cd” nie działa.
Aby zmienić katalog, użyj cdpolecenia.
Uciekłeś cd/. To nie działa, ponieważ tak naprawdę nie uruchomiłeś cdpolecenia. W Ubuntu i innych systemach operacyjnych typu Unix (w rzeczywistości w powłokach typu uniksowego, takich jak bashużywana powłoka), uważa się , że nazwa polecenia kończy się tylko spacją lub końcem wiersza.
W przeciwieństwie do wiersza polecenia w systemie Windows (gdzie cd\jest interpretowane tak samo jak cd \i cd..jest interpretowane tak samo jak cd ..), w bash(powłoka używana w Ubuntu) cd/nie jest prawidłowym poleceniem. Musisz użyć cd /.
cd/oznacza „wpis w bieżącym katalogu, którego nazwa to cdi który jest również katalogiem”. Czy taka podkatalogu istnieje, to nie można uruchomić jako polecenie, tak czy inaczej dostaniesz błąd (chociaż co błąd dostać będzie się różnić):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Przeprowadzka do katalogu domowego
Aby przejść do katalogu domowego, uruchom cdgo sam bez żadnych argumentów:
cd
Niektóre osoby wolą wyraźnie nazwać swój katalog domowy. Możesz użyć jego pełnej nazwy lub
cd ~
Ale cdsamo w sobie jest wystarczające.
Przejście o jeden katalog wyżej
Aby zmienić katalog na katalog macierzysty bieżącego katalogu (tzn. Katalog, który go zawiera), użyj:
cd ..
..reprezentuje katalog nadrzędny bieżącego katalogu. Jeśli jesteś w katalogu głównym ( /), istnieje wyjątek: ..po prostu reprezentuje /. Więc uruchamianie cd ..przesuwa się o jeden katalog, gdy jest uruchamiane gdziekolwiek, ale /; kiedy wpadniesz /, zostajesz /.
Każdy katalog zawiera ..wpis. Wszystkie zawierają także .wpis, który odnosi się do samego bieżącego katalogu. Nie jest to jednak zbyt cd .trudne. Zawsze zostajesz tam, gdzie jesteś.
Ścieżki absolutne i względne
Jeśli przejdziesz cddo czegoś, co nie zaczyna się od a /, to spróbuje przejść do tego katalogu w bieżącym katalogu .
Na przykład, jeśli pobiegłeś
cd var/log
Następnie próbowałby przejść do varpodkatalogu, w którym aktualnie się znajdujesz, i do logpodkatalogu tego. Chyba że oba istnieją i w tych miejscach, to cdpolecenie nie powiedzie się (i pozostaniesz tam, gdzie byłeś pierwotnie).
Jeśli chcesz przejść do logpodkatalogu varpodkatalogu katalogu głównego , uruchom to zamiast tego:
cd /var/log
Tylko jeśli jesteś w tej chwili /jest cd var/logrównoważne cd /var/log.
Ścieżka, która zaczyna się od /jest absolutna. Sposób rozwiązania tego problemu nie zależy od tego, gdzie aktualnie jesteś.
Ścieżka ~jest również absolutna, ponieważ jest (zasadniczo) krótsza $HOME. HOMEjest zmienną środowiskową , a wyrażenie $HOMErozwija się do pełnej, bezwzględnej ścieżki do katalogu domowego bieżącego użytkownika.
~Notacja może również służyć do reprezentowania katalogu domowego innego użytkownika. Jeśli piszesz , oznacza to katalog domowy.~usernameusername
Powrót do miejsca, w którym byłeś wcześniej
Katalog, w którym aktualnie się znajdujesz, jest przechowywany w PWDzmiennej środowiskowej. Ostatni katalog byłaś w przechowywana jest w OLDPWDzmiennej środowiskowej. Możesz przeglądać w OLDPWDtaki sam sposób, jak każdą zmienną środowiskową:
echo $OLDPWD
Ponieważ te informacje są przechowywane, cdmoże mieć specjalny, szybki i łatwy sposób na powrót do poprzedniej lokalizacji. Jak mówi pst007x , aby przejść do ostatniego katalogu, w którym byłeś, uruchom:
cd -
Jeśli nigdy nie było wcześniejszego katalogu w tej powłoce , OLDPWDzmienna środowiskowa nie zostanie ustawiona, a próba uruchomienia cd -spowoduje błąd (i pozostaniesz tam, gdzie jesteś):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Zmiana gdzie jesteś jak szef
pushdi popd: Stos katalogów
Wyobraź sobie stos nazw katalogów. Przez stos mam na myśli coś, w którym po dodaniu czegoś idzie ono na wierzch i można usunąć tylko jedną rzecz na raz, a rzeczą, którą usuwasz, jest zawsze to, co jest aktualnie na górze.
Możesz wcisnąć dowolny katalog dirna stos, uruchamiając:
pushd dir
Jeśli chcesz zepchnąć bieżący katalog na górę stosu, możesz użyć .(który, jak wyjaśniono powyżej, zawsze reprezentuje bieżący katalog):
pushd .
Następnie możesz zająć się swoim biznesem, zmieniając katalogi tak, jak chcesz. Jeśli chcesz wrócić do ostatniego katalogu, za pomocą którego wypchnąłeś stos pushd, uruchom:
popd
Przechodzi do tego katalogu, a także usuwa go ze stosu. Teraz stos jest o jeden katalog krótszy. Jeśli był to jedyny katalog na stosie, stos jest teraz pusty.
Możesz mieć stos większy niż 1. Oznacza to, że możesz użyć osobnych pushdpoleceń, aby wypchnąć wiele katalogów na stos. Każde kolejne popdpolecenie przejdzie do (i wyskoczy, tj. Usunie ze stosu ) najnowszego katalogu wypchniętego, który jeszcze nie pojawił się.
Oto przykład:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushdi popdsą używane znacznie rzadziej niż cd. Mają także inne, nawet bardziej zaawansowane zastosowania. Uruchom help pushdi help popdpo szczegóły.
Więcej informacji i dostęp do dokumentacji
cdi pwdmają też bardziej zaawansowane zastosowania. Aby się o nich dowiedzieć, uruchom help cdi man pwd.
helpjest dla wbudowanych powłok . mandotyczy samodzielnych poleceń - poleceń, które działają jako osobne procesy i istnieją jako osobne pliki wykonywalne. typeKomenda ujawnia, czy polecenie jest wbudowane powłoki, czy nie, a jeśli nie, gdzie program uruchamia się znajduje. Na przykład, można uruchomić type help, type typealbo type man.