Jak zmienić katalogi w terminalu i wiedzieć, w którym katalogu jestem?

15

Postępuję zgodnie ze wskazówkami Pomoc społeczności Ubuntu ; jednak nadal jestem zdezorientowany w kilku kwestiach. Przeszukałem go i znalazłem ten post: używanie terminala do zmiany katalogu , ale jest on przede mną i nadal nie jestem pewien, jak to zrobić. Jestem nowy i potrzebuję trochę dodatkowego kierunku, więc trzymaj się mnie! ;-) Oto skrypt z mojego terminala:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

Jak powiedzieć, co znajduje się w którym katalogu i jak nawigować w katalogu. Wiem, że muszę pomijać coś prostego.

użytkownik74713
źródło
4
Zawsze potrzebujesz spacji po poleceniu, takim jak „cd”. Twoje polecenie zadziała, jeśli wpiszesz „cd /” i przejdzie do katalogu głównego.
Marty Fried
Fantastycznie, Marty! Twoja pomoc jest bardzo ceniona. ;-)
user74713

Odpowiedzi:

19

W twojej sesji lswyświetla zawartość bieżącego katalogu (ale nie ukryte pliki zaczynające się od kropki w nazwie pliku). Przechodzisz do innego katalogu, pisząc cd dirname. Tutaj musisz zastąpić „dirname” nazwą katalogu, w który chcesz zmienić. Zwykle zaczynasz od katalogu domowego jako bieżącego katalogu roboczego. W twoim przypadku jest to najbardziej prawdopodobne /home/christy. Jeśli lspokazuje katalog o nazwie „Szablon”, możesz zmienić go na „Szablon” (= ustaw go jako bieżący katalog roboczy), wpisując (pamiętaj o spacji) polecenie:

cd Templates

zmienisz swój bieżący katalog roboczy na „Szablony” lub wydrukujesz „Nie ma takiego pliku lub katalogu”, jeśli katalog o tej nazwie nie istnieje w bieżącym katalogu. Pisanie pwdzawsze da ci pełną łatkę do twojego bieżącego katalogu roboczego, w tym rodziców.

Do każdego polecenia można podać opcjonalne argumenty. Dla cdciągu „Szablony” był takim opcjonalnym argumentem. Jeśli ls -ana przykład wpiszesz , lspolecenie wydrukuje również ukryte pliki. Lub wraz z ls Templatesnim wydrukuje zawartość katalogu Tempaltes zamiast zawartości aktualnego działającego katalogu. Argumenty muszą być oddzielone co najmniej jedną spacją od nazwy polecenia i od siebie. Brak odstępu między nimi był przyczyną, dla której twoje polecenie nie działało.

Ponieważ znak spacji ma specjalne znaczenie, musisz zacytować go lub uciec, jeśli jest to część argumentu. Jeśli na przykład chcesz zmienić bieżący katalog roboczy na „Pliki źródłowe”, musisz wpisać jedno z następujących poleceń:

cd Source\ Files
cd "Source Files"

Górna linia jest „uciekana”, podczas gdy dolna linia jest „cytowana”.

Jeśli chcesz dowiedzieć się więcej, lepszym przewodnikiem może być: Wprowadzenie do systemu Linux ( pdf ) ( html )


Edytuj :

Okej, przepraszam, nie widziałem tam twojego linku. Twój post był trochę mylący, teraz myślę, że dostałem:

Więc chcesz zainstalować tex-live z archiwum źródłowego, do którego link znajduje się w opublikowanym przewodniku „Pierwsze kroki” . Aby to zrobić, musisz najpierw usunąć wcześniej istniejącą instalację tex-live. Robisz to, otwierając terminal, robiąc to:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

W tym momencie musisz podać hasło i zostaniesz nagrodzony kilkoma nudnymi wiadomościami, które tutaj pominę. Następnie musisz pobrać archiwum o nazwie install-tl-unx.tar.gz(już to zrobiłeś i nie musisz go ponownie pobierać, ale pokażę ci, jak to zrobić na wszelki wypadek):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

Po pobraniu archiwum możesz go rozpakować

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

Po rozpakowaniu archiwum możesz przejść do rozpakowanego katalogu.

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

Liczba „20120701” jest znacznikiem czasu informującym o posiadanej wersji tex-live. Ta liczba może być inna dla ciebie, ale polecenie ls | grep install-t1-powie ci, czego użyć zamiast tego. Jeśli wszystko działało, możesz uruchomić skrypt instalacyjny z tego miejsca:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

Odtąd po prostu odpowiedz na pytania zadane przez skrypt instalacyjny i wszystko powinno być w porządku.

dezorientować
źródło
@ con-f-use: Świetne informacje! Teraz, odnosząc się do skryptu terminalu w moim oryginalnym poście: W jakim katalogu jest plik install-tl-unx.tar.gz i jak go uruchomić? Znam polecenia instalacyjne, ale chyba muszę zainstalować pakiety? Polecenia do rozpakowywania archiwum to @ ubuntu-manual.org/getinvolved/editors . Jeśli możesz wskazać mi właściwy kierunek ... Dziękuję bardzo; byłeś bardzo poinformowany.
user74713,
Nie ma problemu. Nie jestem pewien, jaki dokładnie jest twój cel, więc trochę trudno jest ci pomóc bez dodatkowych informacji. Najwyraźniej próbujesz zainstalować TeX-Live z archiwum „install-tl-unx.tar.gz”. W tym celu należy najpierw rozpakować archiwum, a następnie uruchomić skrypt instalacyjny. Zredaguję powyższy post z kilkoma instrukcjami, jak to zrobić wkrótce.
con-f-use
10

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.

Eliah Kagan
źródło
5

Na przykład:

cd Desktop/ Przechodzi do katalogu Desktop, jeśli jesteś w swoim katalogu domowym.

cd - Wraca do poprzedniego katalogu.

cd / Przejdź do katalogu głównego.

cd ~/Desktop Zabierze Cię do katalogu Desktop bez względu na to, gdzie jesteś.

pst007x
źródło