2.3 Lekcja 1
Wstęp
Certyfikat: |
Linux Essentials |
---|---|
Wersja: |
1.6 |
Temat: |
2 Poruszanie się po systemie Linux |
Cel nauki: |
2.3 Korzystanie z katalogów i listy plików |
Lekcja: |
1 z 2 |
Pliki i katalogi
System plików Linux jest podobny do systemów plików innych systemów operacyjnych, ponieważ zawiera pliki i katalogi. Pliki zawierają dane, takie jak tekst czytelny dla człowieka, a także programy wykonywalne lub dane binarne używane przez komputer. Katalogi służą do organizowania systemu plików. Katalogi mogą zawierać zarówno pliki jak i inne katalogi.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
W powyzszym przykładzie Documents
to katalog zawierający jeden plik (Mission-Statement.txt
) i jeden podkatalog (Reports
). Z kolei katalog Reports
zawiera jeden plik o nazwie report2018.txt
. Katalog Documents
jest nazywany katalogiem nadrzędnym w stosunku do katalogu Reports
.
Tip
|
Jeśli polecenie |
Nazwy plików i katalogów
Nazwy plików i katalogów w systemie Linux mogą zawierać małe i duże litery, cyfry, spacje i znaki specjalne. Jednakże, ponieważ wiele znaków specjalnych ma specjalne znaczenie w powłoce Linuxa, zaleca się, aby nie używać spacji ani znaków specjalnych podczas nazywania plików lub katalogów. Na przykład spacje wymagają poprawnego wprowadzenia znaku ucieczki \
, aby poprawnie rozpoznać ten znak:
$ cd Mission\ Statements
Zwróć uwagę na nazwę pliku report2018.txt
. Nazwy plików mogą zawierać rozszerzenie (suffix), które znajduje się po kropce (.
). W przeciwieństwie do systemu Windows, ten przyrostek nie ma specjalnego znaczenia w systemie Linux, ponieważ służy jedynie lepszemu zrozumieniu rodzaju pliku. W naszym przykładzie rozszerzenie .txt
wskazuje, że jest to zwykły plik tekstowy, chociaż technicznie może zawierać dowolny typ danych.
Poruszanie się po systemie plików
Określanie aktualnej lokalizacji
Ponieważ powłoki Linuxa, takie jak Bash, są oparte na tekście, ważne jest, aby znać swoją bieżącą lokalizację wskazaną w wierszu poleceń podczas nawigacji po systemie plików. Wiersz poleceń zawiera następujące informacje:
user@hostname ~/Documents/Reports $
Informacje o użytkowniku (user
) i nazwie hosta (hostname
) zostaną omówione w przyszłych lekcjach. Wykorzystując wiersz poleceń ustaliliśmy, że nasza aktualna lokalizacja to katalog Reports
. Te same informacje są dostarczane za pomocą polecenia pwd
(print working directory, drukuj katalog roboczy), które wyświetla na ekranie bieżący katalog roboczy.
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
Relacja między katalogami jest reprezentowana za pomoca ukośnika, tzw. slasha (/
). Wiemy, że katalog Reports
jest podkatalogiem katalogu Documents
, który z kolei jest podkatalogiem użytkownika (user
), znajdującym się w katalogu domowym o nazwie home
. Co prawda wygląda na to, że katalog home
nie ma katalogu nadrzędnego, jednakże nie jest to prawdą. Katalog nadrzędny dla home
nazywa się root i jest reprezentowany przez pierwszy ukośnik (/
), który zostanie omówiony w dalszej części.
Zauważ, że wynik polecenia pwd
różni się nieco od ścieżki podanej w wierszu polecenia. Zamiast /home/user
, wiersz polecenia wyświetla tyldę (~
). Tylda (~
) to znak specjalny oznaczający katalog domowy użytkownika. Zostanie to bardziej szczegółowo omówione w następnej lekcji.
Wyświetlanie zawartości katalogu
Zawartość bieżącego katalogu jest wyświetlana za pomocą polecenia ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Zauważ, że polecenie ls
nie dostarcza żadnych informacji o katalogu nadrzędnym. Podobnie, domyślnie ls
nie wyświetla żadnych informacji o zawartości podkatalogów. ls
może tylko “widzieć” zawartość bieżącego katalogu.
Zmiana bieżącego katalogu
Nawigacja w systemie Linux odbywa się głównie za pomocą polecenia zmień katalog cd
(change directory). Używając wcześniejszego polecenia pwd
ustaliliśmy już, że nasz bieżący katalog to /home/user/Documents/Reports
. Możemy zmienić nasz aktualny katalog wpisując za poleceniem cd
nową ścieżkę, np. /home/user/Documents
:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Z naszej nowej lokalizacji możemy “zobaczyć” plik Mission-Statement.txt
i nasz podkatalog Reports
, ale nie możemy zobaczyć jego zawartości. Możemy wrócić do katalogu Reports
w następujący sposób:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Jesteśmy teraz z powrotem tam, gdzie zaczęliśmy.
Ścieżki bezwzględne i względne
Polecenie pwd
zawsze wyświetla ścieżkę bezwzględną (absolute path). Oznacza to, że ścieżka zawiera każdy krok ścieżki, od punktu początkowego systemu plików (/
) do punktu bieżącego (Reports
). Absolutne ścieżki zawsze zaczynają się od /
.
/ └── home └── user └── Documents └── Reports
Ścieżka bezwzględna zawiera wszystkie informacje potrzebne do uzyskania dostępu do katalogu Reports
z dowolnego miejsca w systemie plików, z tą wadą, że wpisywanie tak długiej ścieżki jest długotrwałe.
Drugi przykład (cd Reports
) był znacznie łatwiejszy do wpisania. To jest przykład ścieżki względnej. Względne ścieżki są krótsze, ale zawsze opisują ścieżkę w odniesieniu do aktualnej pozycji w strukturze. Rozważ następującą analogię: odwiedzam cię w Twoim domu i mówisz mi, że Twój przyjaciel mieszka obok. Zrozumiem to położenie, ponieważ jest ono związane z moją obecną lokalizacją. Ale jeśli podasz mi ten opis przez telefon, wówczas nie będę mógł znaleźć domu Twojego przyjaciela. Będziesz wówczas musiał podać mi pełny adres.
Specjalne ścieżki względne
Powłoka systemu Linux pozwala nam skrócić specyfikacje ścieżek podczas nawigacji. Aby poznać pierwszą taką specjalną ścieżkę, wpisujemy polecenie ls
z opcją -a
. Spowoduje to modyfikację polecenia ls
w taki sposób, że będzie wyświetlana listę wszystkich (all) plików i katalogów, w tym także plików i katalogów ukrytych:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Możesz odwołać się do strony pomocy |
To polecenie ujawniło dwa dodatkowe wyniki: To są specjalne ścieżki. Nie reprezentują one nowych plików ani katalogów, ale katalogi, które już znasz:
.
-
Oznacza bieżącą lokalizację (w tym przypadku
Reports
). ..
-
Oznacza katalog nadrzędny (w tym przypadku
Documents
).
Zwykle nie jest konieczne używanie specjalnej ścieżki względnej dla bieżącej lokalizacji. Łatwiej i bardziej zrozumiale jest wpisać report2018.txt
niż wpisać ./report2018.txt
z ukośnikiem. Jednakże kropka .
posiada funkcje, o których dowiesz się w przyszłych lekcjach. Na razie skupmy się na względnej ścieżce do katalogu nadrzędnego:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
Przykład cd
jest znacznie łatwiejszy, gdy używa się dwóch kropek ..
zamiast ścieżki bezwzględnej. Dodatkowo możemy połączyć ten wzorzec, aby bardzo szybko poruszać się po drzewie plików i katalogów.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Ćwiczenia z przewodnikiem
-
Dla każdej z poniższych ścieżek określ, czy jest to ścieżka bezwzględna czy ścieżka względna:
/home/user/Downloads
../Reports
/var
docs
/
-
Rozważ następującą strukturę plików. Uwaga: katalogi kończą się ukośnikiem (
/
), gdydrzewo
jest wywoływane z opcją-F
. Będziesz potrzebował podwyższonych uprawnień, aby uruchomić polecenietree
w katalogu głównym (/
). Poniższe przykładowe dane wyjściowe nie przedstawiają pełnej struktury katalogów. Użyj go, aby odpowiedzieć na następujące pytania:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Mając to na uwadze, odpowiedz na poniższe pytania.
Użytkownik wprowadza następujące polecenia:
$ cd /etc/udev $ ls -a
Jaki jest wynik działania polecenia
ls -a
? -
Wprowadź możliwie najkrótsze polecenie dla każdego przypadku:
-
Twoja aktualna lokalizacja to katalog główny (
/
). Wpisz polecenie, aby przejść dolost+found
w kataloguhome
(przykład):$ cd home/lost+found
-
Twoja aktualna lokalizacja to katalog główny (
/
). Wpisz polecenie, aby przejść do katalogu/etc/network/
. -
Twoja aktualna lokalizacja to
/home/user/Documents/
. Przejdź do katalogu/etc/
. -
Twoja aktualna lokalizacja to
/etc/systemd/system/
. Przejdź do katalogu/home/user/
.
-
-
Rozważ działanie następujących poleceń:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Jaki jest wynik dzialania ostatniego polecenia
pwd
?
Ćwiczenia eksploracyjne
-
Załóżmy, że użytkownik wprowadził następujące polecenia:
$ mkdir "this is a test" $ ls this is a test
Jakiego polecenia
cd
możesz użyć, aby przejść do tego katalogu? -
Spróbuj ponownie, ale po wpisaniu
cd this
naciśnij klawisz TAB. Co jest teraz wyświetlane w wierszu poleceń?To przykład autouzupełniania, nieocenione narzędzie, które nie tylko oszczędza czas, ale także zapobiega błędom podczas wpisywania poleceń.
-
Spróbuj utworzyć katalog, którego nazwa zawiera znak
\
. Wyświetl nazwę katalogu za pomocąls
i usuń katalog.
Podsumowanie
W tej lekcji nauczyłeś się:
-
Podstawy systemu plików Linux
-
Różnica między katalogami nadrzędnym i podkatalogami
-
Różnica między ścieżkami bezwzględnymi a ściezkami wzglednymi do plików
-
Specjalne ścieżki względne
.
oraz..
-
Poruszanie się po systemie plików za pomocą
cd
-
Wyświetlanie Twojej bieżącej lokalizacji za pomocą
pwd
-
Wyświetlanie listy wszystkich plików i katalogów za pomocą
ls -a
W tej lekcji omówiono następujące polecenia:
cd
-
Zmienia bieżący katalog na inny
pwd
-
Pokazuje ścieżkę do bieżącego katalogu
ls
-
Wyświetla zawartość katalogu i pokazuje właściwości plików
mkdir
-
Tworzy nowy katalog
tree
-
Wyświetla hierarchiczną listę drzewa katalogów
Odpowiedzi do ćwiczeń z przewodnikiem
-
Dla każdej z poniższych ścieżek określ, czy jest to ścieżka bezwzględna czy ściezka względna:
/home/user/Downloads
ścieżka bezwzględna
../Reports
ścieżka względna
/var
ścieżka bezwzględna
docs
ścieżka względna
/
ścieżka bezwzględna
-
Rozważ następującą strukturę plików. Uwaga: katalogi kończą się ukośnikiem (
/
), gdydrzewo
jest wywoływane z opcją-F
. Będziesz potrzebował podwyższonych uprawnień, aby uruchomić polecenietree
w katalogu głównym (/
). Poniższe przykładowe dane wyjściowe nie przedstawiają pełnej struktury katalogów. Użyj go, aby odpowiedzieć na następujące pytania:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Użytkownik wprowadza następujące polecenia:
$ cd /etc/udev $ ls -a
Jaki jest wynik działania polecenia
ls -a
?. .. rules.d udev.conf
-
Wprowadź możliwie najkrótsze polecenie dla każdego przypadku:
-
Twoja aktualna lokalizacja to katalog główny (
/
). Wpisz polecenie, aby przejść dolost+found
w kataloguhome
(przykład):$ cd home/lost+found
-
Twoja aktualna lokalizacja to katalog główny (
/
). Wpisz polecenie, aby przejść do katalogu/etc/network/
:$ cd etc/network
-
Twoja aktualna lokalizacja to
/home/user/Documents/
. Przejdź do katalogu/etc/
:$ cd /etc
-
Twoja aktualna lokalizacja to
/etc/systemd/system/
. Przejdź do katalogu/home/user/
:$ cd /home/user
-
-
Rozważ działanie następujących poleceń:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Jaki jest wynik dzialania ostatniego polecenia
pwd
?/etc/systemd
Odpowiedzi do ćwiczeń eksploracyjnych
-
Załóżmy, że użytkownik wprowadził następujące polecenia:
$ mkdir "this is a test" $ ls this is a test
Jakiego polecenia
cd
możesz użyć, aby przejść do tego katalogu?$ cd this\ is\ a\ test
-
Spróbuj ponownie, ale po wpisaniu
cd this
naciśnij klawisz TAB. Co jest teraz wyświetlane w wierszu poleceń?$ cd this\ is\ a\ test
To przykład autouzupełniania, nieocenione narzędzie, które nie tylko oszczędza czas, ale także zapobiega błędom podczas wpisywania poleceń.
-
Spróbuj utworzyć katalog, którego nazwa zawiera znak
\
. Wyświetl nazwę katalogu za pomocąls
i usuń katalog.Możesz zamaskować ukośnik odwrotny (backslash) innym ukośnikiem odwrotnym (
\\
) lub ująć całą nazwę katalogu w pojedyncze lub podwójne cudzysłowy:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'