Jak nawigować między katalogami w terminalu?

26

Jestem nowy w Linuksie i Ubuntu i próbowałem z pewną trudnością przejść do folderów / katalogów.

Czy ktoś mógłby wyjaśnić, dlaczego następujące polecenia nie zmieniły się w pożądany folder docelowy / katalog?

sharon@sharon:~$ cd Home 
bash: cd: Home: No such file or directory 
sharon@sharon:~$ cd /Home 
bash: cd: /Home: No such file or directory 
sharon@sharon:~$ cd Documents 
sharon@sharon:~/Documents$ cd Downloads 
bash: cd: Downloads: No such file or directory 
sharon@sharon:~/Documents$ cd /Downloads 
bash: cd: /Downloads: No such file or directory 
sharon@sharon:~/Documents$
n00b
źródło

Odpowiedzi:

38

System plików to GNU / Linux jest jak drzewo, tyle że root jest na wierzchu. :-) Więc masz taką strukturę jak:

/
  bin/
  home/
    sharon/
      Documents/
      Downloads/
      fileA.txt
      fileB.jpg
  usr/
  var/

Jeśli chcesz poruszać się po drzewie, jedną z opcji jest użycie ścieżek względnych. Jeśli tam jesteś /home/sharon, pisanie cd Downloadsbędzie działać, ponieważ Pobrane pliki są bezpośrednim dzieckiem Twojego bieżącego katalogu. Jeśli znajdujesz się w podfolderze Documentsi chcesz zmienić katalog ( cd) na Downloads, musisz przejść w górę ( ..), a następnie do Downloads. Tak byłoby prawidłowe polecenie cd ../Downloads.

Możesz także wprowadzić ścieżkę bezwzględną. Tak więc Downloadsfolder jest podfolderem, sharonktórego podfolderem homejest… (wpadłeś na pomysł :-)) Więc możesz także wpisać cd /home/sharon/Downloadsgdziekolwiek jesteś w systemie plików.

  • ~zawsze odnosi się do katalogu domowego bieżącego użytkownika ( /home/sharonw twoim przypadku). Jeśli wejdziesz cd ~/Downloads, wylądujesz w swoim Downloadsfolderze.

  • .odnosi się do bieżącego katalogu, więc w cd ./Downloadsprzybliżeniu odpowiada cd Downloads.

  • .. oznacza „katalog nadrzędny”.

  • / na początku ścieżki do pliku odnosi się do katalogu głównego.

Kolejną miłą rzeczą jest rozwijanie zakładek. Jeśli wejdziesz cd ~/DowTab(ostatnie naciśnięcie klawisza Tabulator), bash automatycznie go rozszerzy cd ~/Downloads.

Jak powiedzieli inni, w systemie GNU / Linux rozróżniana jest wielkość liter. To robi różnicę, jeśli wejdziesz Home, hOmelub home. Ponadto mam nadzieję, że teraz widzicie, że istnieje różnica między /homei home. Pierwszy adresowany jest bezwzględnie, a ostatni odnosi się do bieżącego katalogu.

qbi
źródło
1
@ qbi: Wow, jesteś niesamowity. Uwielbiam twoje szczegółowe wyjaśnienie, jak poruszać się po folderach / katalogach. Czy jesteś nauczycielem lub profesorem w instytucji edukacyjnej? Większość informatyków zna wiele zagadnień informatycznych, ale dzielenie koncepcji na łatwe do opanowania i „przyswajalne” części, aby początkujący mogli zrozumieć, jest w zasięgu ręki garstki, ale utalentowanych facetów takich jak ty.
n00b
2
@ n00b Jeśli uznasz tę odpowiedź za pomocną, możesz ją „zaakceptować”, klikając V po jej lewej stronie.
Revetahw mówi: Przywróć Monikę
8
sharon@sharon:~$ cd Home 
bash: cd: Home: No such file or directory 

Mała cedilla ~ wskazuje, że jesteś już w katalogu / home / sharon. Gdy poprosisz o „cd Home”, terminal szuka / home / sharon / Home. Nie ma żadnego.

sharon@sharon:~$ cd /Home 
bash: cd: /Home: No such file or directory 

Teraz, biorąc pod uwagę początkowy ukośnik, prosisz o przejście do katalogu powyżej bieżącej lokalizacji; to jest / home / Home. Nie ma żadnego.

sharon@sharon:~$ cd Documents 
sharon@sharon:~/Documents$

Sukces!

sharon@sharon:~/Documents$ cd /Downloads 
bash: cd: /Downloads: No such file or directory 

Nie jestem pewien, gdzie to dokładnie jest. Jeśli chcesz zmienić z / home / sharon / Documents na / home / sharon / Downloads, spróbuj:

cd ~/Downloads

Jeśli chcesz przejść bezpośrednio do katalogu domowego, czyli / home / sharon, po prostu wykonaj:

cd

Możesz także cofnąć się

cd ..

I możesz wydrukować katalog, w którym pracujesz (wydrukuj katalog roboczy)

pwd
chili555
źródło
@ chili555: Bardzo dziękuję za pomoc początkującym, takim jak ja. Wesołych Świąt dla Ciebie i Twoich bliskich.
n00b
2
Wiodący ukośnik wskazuje ścieżkę względem katalogu głównego, a nie ścieżkę powyżej bieżącego katalogu. To byłoby../
psusi
3

Polecenie mówi ci dlaczego: Nie ma takiego katalogu.

W nazwach plików rozróżniana jest wielkość liter, więc jest to / home, a nie / Home. Bez początkowego ukośnika przyjmuje się, że jest względny w stosunku do bieżącego katalogu, a katalogu Pobrane nie ma w ~ / Documents, ani nie znajduje się w /, ale w katalogu domowym, do którego ~jest skrót, dlatego jest ~ / Dokumenty

psusi
źródło
@ psusi: Też dzięki. Wesołych Świąt dla Ciebie i Twoich bliskich.
n00b
@ psusi: Co oznacza wiodący ukośnik?
n00b
@ psusi: Co oznacza ./ <nazwa pliku>?
n00b
@ noob, /oznacza start z katalogu głównego i .oznacza bieżący katalog.
psusi
0

Muszę na to odpowiedzieć, ponieważ nie mogę komentować odpowiedzi -.-

Co oznacza wiodący ukośnik? - n00b

oznacza to, że cienki, o którym mówisz, jest katalogiem, a nie plikiem. Pliki nie muszą mieć zakończeń jak w systemie Windows, więc ~/thisIsAFilebyłby plikiem w katalogu domowym, ale ~/thisIsAFile/byłby katalogiem / folderem.

Co znaczy? - n00b

Oznacza to, że plik, do którego chcesz uzyskać dostęp, znajduje się w twoim bieżącym katalogu.

Inne przydatne porady:

Możesz wrócić do folderu za pomocą

cd ..

I możesz uzyskać ścieżkę, w której się znajdujesz (wydrukuj katalog roboczy)

pwd
a2r
źródło
@ a2r: Dziękuję za wyjaśnienie. Nie wiedziałem, że pliki nie mają rozszerzeń plików jak w Microsoft Windows. Czy programy mają również rozszerzenia plików w Ubuntu?
n00b
Zasadniczo nie, system nie dba o to, jakie zakończenia ma plik, jeśli jest oznaczony jako wykonywalny (google o chmod), możesz go uruchomić jako program. Jest też zmienna globalna (o niej Google) o nazwie $ PATH, zapisane są katalogi widoków (możesz zobaczyć, które są echo $PATH). A kiedy próbujesz uruchomić program, taki jak piszesz geditw terminalu. Wygląd twojego systemu rzuca foldery w $ PATH i szuka gedit.
a2r
1
To byłby ukośnik końcowy, a nie wiodący. Musisz także mieć wolne miejsce przed ...
psusi
@ psusi: Przepraszam. Jestem trochę zdezorientowany. Co to jest ukośnik końcowy? wiodący slash? Przykłady proszę? Z góry dziękuję.
n00b 27.12