Linux System Plików


Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
LINUX
System plików
1
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
W Linuxie wszystkie pliki są umieszczone w katalogach, które z kolei są hierarchicz-
nie połączone ze sobą w jedną strukturę plików. Odwołanie do pliku oznacza nie tylko
odwołanie do jego nazwy, ale także do jego miejsca w strukturze plików. Możesz stworzyć
tyle nowych katalogów, ile chcesz, dodając coraz to więcej katalogów do struktury pli-
ków. Polecenia Linuxa dotyczące plików pozwalają na wykonywanie wielu wymyślnych
operacji, takich jak przenoszenie lub kopiowanie całych katalogów włącznie z podkata-
logami.
1 Pliki w Linuxie
Możesz nadawać plikom nazwy, używając znaków alfabetu, podkreślenia oraz cyfr. Mo-
żesz również umieszczać w nazwie kropki i przecinki. Mimo to nie powinno się rozpoczy-
nać nazwy pliku od cyfry oraz kropki. Inne znaki, takie jak ukośniki, znaki zapytania
czy gwiazdki są zarezerwowane jako znaki specjalne i nie mogą stanowić części nazwy
pliku. Nazwy mogą mieć długość do 256 znaków.
Możesz używać rozszerzenia jako części nazwy pliku. Kropka jest stosowana do rozróż-
nienia właściwej nazwy pliku od rozszerzenia. Rozszerzenia mogą być użyteczne przy
dzieleniu plików na kategorie. Prawdopodobnie jesteś zaznajomiony ze standardowymi
rozszerzeniami przyjmowanymi zwyczajowo. Na przykład kod zródłowy w języku C ma
zawsze rozszerzenie .c. Pliki zawierające skompilowany kod obiektowy mają rozszerzenie
.o. Możesz oczywiście tworzyć własne rozszerzenia. W przykładzie pokazano wszystkie
poprawne dla Linuxa nazwy.
wstep
rozdzial2
Nowa_wersja
kalkulator.c
wstep.blk
Istnieją również specjalne pliki inicjalizacyjne używane do przechowywania poleceń kon-
figuracyjnych powłoki. Są to pliki ukryte lub tak zwane pliki z kropką (ang. dotfiles).
Aby wyświetlić pliki z kropką, należy używać polecenialsz opcją-a.
1.1 Rodzaje plików
Wszystkie pliki w Linuxie mają jeden format fizyczny - ciąg bajtów. Pozwala to Linu-
xowi na stosowanie koncepcji plików do każdego elementu danych w systemie. Katalogi
są klasyfikowane jako pliki i tak samo są klasyfikowane urządzenia. Traktowanie wszyst-
kiego jako pliku pozwala Linuxowi na prostą organizację i wymianę danych. Dane z pliku
mogą być przesłane bezpośrednio do urządzenia takiego jak ekran, ponieważ urządzenie
współpracuje z systemem za pomocą tego samego formatu pliku w postaci ciągu baj-
tów. Ten sam format pliku jest używany do implementacji innych elementów systemu
operacyjnego. Interfejs do urządzeń, takich jak ekran czy klawiatura, jest zrobiony jak
plik. Inne elementy, takie jak katalogi, same są plikami, ale mają specjalną strukturę
wewnętrzną. Plik katalogu zawiera informacje o katalogu, zorganizowaną w specjalnym
formacie katalogu. Ponieważ różne elementy są traktowane jak pliki, można je nazwać
2
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
różnymi typami plików. Urządzenie znakowe to jeden z typów plików. Katalog jest kolej-
nym typem. Liczba typów może się zmieniać w zależności od konkretnej implementacji
Linuxa. Jednak istnieją cztery podstawowe rodzaje plików: zwykłe pliki, katalogi, urzą-
dzenia znakowe i urządzenia blokowe.
1.2 Klasyfikacja plików
Chociaż wszystkie zwykłe pliki są zapisane w formacie ciągu bajtów, mogą być uży-
wane w różny sposób. Najbardziej istotna różnica istnieje pomiędzy plikami tekstowymi
i binarnymi. Przykładami plików binarnych są skompilowane programy. Jednak nawet
pliki tekstowe mogą być sklasyfikowane według różnych zastosowań. Możesz mieć pliki
zawierające kod zródłowy języka C lub polecenia powłoki, lub nawet plik, który jest
pusty. Plik może być programem wykonywalnym lub katalogiem. Polecenie Linuxafile
pomaga określić, jaki plik do czego jest stosowany1. Sprawdza ono kilka pierwszych wier-
szy pliku i próbuje go sklasyfikować. Poleceniefileszuka specjalnych słów kluczowych
lub liczb znajdujących się w tych kilku pierwszych wierszach, ale nie zawsze jest to do-
kładne.
W następnym przykładzie poleceniefilesprawdza zawartość dwóch plików i klasyfikuje
je.
$ file poniedziałek raporty
poniedziałek: text
raporty: directory
Aby pokazać różnorodność klasyfikacji, poleceniefilew następnym przykładzie spraw-
dza plik z kodem zródłowym programu w języku C, plik wykonywalny i plik pusty.
$ file kalkulator.c proj nowedane
kalkulator.c: C program text
proj: executable
nowedane: empty
2 Struktura plików
Linux porządkuje pliki w hierarchicznie połączone katalogi. Każdy katalog może zawie-
rać zarówno pliki, jak i inne katalogi. Katalogi pełnią dwie ważne funkcje. Przechowują
pliki, podobnie jak akta trzymane w szufladach, oraz zawierają inne katalogi, podobnie
jak gałąz drzewa jest połączona z innymi gałęziami. Katalogi działają jak szufladki z
aktami, gdzie każda szuflada zawiera kilka akt. Aby dostać się do akt, otwierasz szufladę
z aktami. Jednak inaczej niż w przypadku szuflad, katalogi nie zawierają jedynie plików,
ale również inne katalogi. W ten sposób katalogi mogą łączyć się z innymi katalogami.
Struktura plików jest często nazywana w terminologii komputerowej strukturę drze-
wiasty. Jednak dokładniej można ją określić jako krzak odwrócony do góry nogami, a
nie drzewo. W strukturze tej nie ma pnia. Drzewo jest przedstawione do góry nogami,
1
Uwaga! Poleceniefilemoże nie występować w niektórych standardowych instalacjach Linuxa i aby
móc z niego korzystać należy je doinstalować.
3
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
z korzeniem u góry. Schodząc w dół od korzenia mamy gałęzie. Każda gałąz wyrasta
tylko z jednej gałęzi, ale może mieć wiele mniejszych gałązek. Można powiedzieć, że jest
to struktura nadrzędno-podrzędna. Każdy katalog jest podkatalogiem innego katalogu.
Każdy katalog może zawierać wiele podkatalogów, ale sam jest potomkiem tylko jednego
katalogu nadrzędnego.
Na rysunku 1 pokazano hierarchiczną strukturę plików. Poczynając od katalogu root na
Rysunek 1. Struktura plików Linuxa
szczycie, pozostałe katalogi są gałęziami. Każdy katalog zawiera kilka innych katalogów
lub plików, ale katalog może mieć tylko jeden katalog nadrzędny. Na przykład katalog
chris ma dwa podkatalogi: raporty i programy. Jednak sam katalog chris jest połączony
tylko z jednym katalogiem nadrzędnym o nazwie home.
Struktura plików Linuxa rozgałęzia się na kilka katalogów, poczynając od katalogu ko-
rzenia /. W katalogu korzenia znajduje się kilka katalogów systemowych zawierających
programy i pliki, które odgrywają ważną role w systemie Linux. Katalog korzenia za-
wiera również katalog o nazwie home, który może z kolei zawierać katalogi macierzyste
wszystkich użytkowników systemu. Każdy katalog macierzysty użytkownika z kolei może
zawierać katalogi, które użytkownik utworzył na własny użytek. Każdy z nich może
zawierać również katalogi. Takie zagnieżdżone katalogi będą się rozrastały z katalogu
macierzystego użytkownika, jak to pokazano na rysunku 2.
Rysunek 2. Struktura plików Linuxa - układ katalogów
4
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
2.1 Katalogi macierzyste
Kiedy logujesz się do systemu, zostajesz umieszczony w swoim katalogu macierzystym,
nazywanym także katalogiem domowym użytkownika. Nazwa nadana temu katalogowi
przez system jest taka sama jak Twoja nazwa (Twój identyfikator). Dowolne pliki two-
rzone po zalogowaniu się będą umieszczane w Twoim katalogu macierzystym. Jednak w
tym katalogu macierzystym możesz tworzyć także inne katalogi. Możesz też przechodzić
do tych katalogów i umieszczać w nich pliki.
Każdy katalog otrzymuje nazwę w czasie jego tworzenia. Możesz używać tej nazwy przy
operacjach dostawania się do plików umieszczonych w katalogach. Możesz również uczy-
nić katalog domyślnym. Jeżeli nie używasz nazw katalogów w operacjach plikowych,
będziesz pracował na katalogu domyślnym. Domyślnym katalogiem jest katalog roboczy,
czyli ten, w którym aktualnie się znajdujesz.
Kiedy się zalogujesz, Twoim katalogiem roboczym jest katalog macierzysty (domowy),
zwykle mający taką samą nazwę co Twoja nazwa użytkownika. Możesz zmienić katalog
roboczy używając poleceniacddo określenia innego katalogu jako roboczego (zmiany
bieżącego katalogu).
Rysunek 3. Nazwy ścieżek katalogów
2.2 Nazwy ścieżek
Nazwa, jaką nadajesz katalogowi lub plikowi, kiedy go tworzysz, nie jest pełną nazwą.
Pełna nazwa katalogu to nazwa ścieżki. Hierarchicznie zagnieżdżone powiązania po-
między katalogami tworzą ścieżki, a te ścieżki mogą być stosowane do jednoznacznego
odwołania się do katalogu lub pliku.
Na rysunku 3 pokazano ścieżkę od katalogu korzenia / przez katalog home do kata-
logu robert. Istnieje druga ścieżka - od katalogu korzenia przez katalog home i katalog
chris do katalogu raporty. Mimo że części każdej ścieżki mogą być najpierw wspólne, od
pewnego miejsca różnią się. Oba katalogi robert i raporty mają dwa katalogi wspólne w
nazwie ścieżki, korzeń i home, ale dalej pojawiają się różnice. Każdy katalog w struk-
turze plików może być opisany przez unikalną ścieżkę. Rzeczywista nazwa, przez którą
5
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
system określa katalog, rozpoczyna się zawsze od katalogu korzenia i zawiera wszystkie
zagnieżdżone w nim katalogi.
W Linuxie tworzysz nazwę ścieżki przez wypisanie każdego katalogu w ścieżce, oddzie-
lając go ukośnikiem. Ukośnik poprzedzający pierwszy katalog w ścieżce oznacza korzeń.
Nazwa ścieżki dla katalogu robert to /home/robert. Nazwa ścieżki dla katalogu raporty to
/home/chris/raporty.
Rysunek 4. Nazwy ścieżek dla plików
Nazwy ścieżek odnoszą się również do plików. Kiedy tworzysz plik wewnątrz katalogu,
nadajesz mu nazwę. Jednak rzeczywista nazwa, przez którą system identyfikuje plik, jest
nazwą złożoną ze ścieżki katalogów od korzenia do katalogu, w którym jest plik. Na ry-
sunku 4 ścieżka dla pliku pogoda składa się z korzenia, katalogu home i chris oraz nazwy
pliku pogoda. Nazwa ścieżki do pliku pogoda brzmi więc /home/chris/pogoda (katalog
korzenia jest oznaczony przez pierwszy ukośnik).
Nazwy ścieżek mogą być bezwzględne lub względne. Bezwzględna nazwa ścieżki jest pełną
nazwą pliku lub katalogu, począwszy od katalogu korzenia. Względna nazwa Ścieżki roz-
poczyna się od Twojego katalogu roboczego (od katalogu bieżącego). Jest to ścieżka do
pliku względem katalogu roboczego. Używając struktury katalogów opisanej na rysunku
4, jeżeli chris jest Twoim katalogiem roboczym, względna ścieżka dla pliku poniedziałek
to raporty/poniedziałek, bezwzględna ścieżka to /home/chris/raporty/poniedzialek.
2.3 Katalogi systemowe
Katalog korzenia, od którego rozpoczyna się struktura plików w Linuxie, zawiera kilka
katalogów systemowych. Katalogi systemowe zawierają pliki i programy używane do
uruchomienia i utrzymywania systemu. Wiele zawiera inne podkatalogi z programami
do wykorzystywania specyficznych możliwości Linuxa. Na przykład katalog /usr/bin
zawiera różne polecenia Linuxa uruchamiane przez użytkownika, takie jakcpczymv.
6
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
3 Listowanie, wyświetlanie i drukowanie plików
Jedną z podstawowych funkcji systemu operacyjnego jest zarządzanie plikami. Być może
będziesz musiał wykonywać pewne podstawowe operacje wyjścia na swoich plikach, takie
jak wyświetlanie na ekranie czy drukowanie. System Linux oferuje zestaw poleceń wyko-
nujących podstawowe operacje zarządzania plikami, takie jak listowanie, wyświetlanie i
drukowanie plików oraz kopiowanie, zmienianie nazw czy usuwanie plików. Polecenia te
są zazwyczaj nazwane skróconymi wersjami słów. Na przykład polecenielsjest skró-
coną formą słowa  list i wyświetla pliki zawarte w katalogu. Polecenielprjest skróconą
wersją słów  line print i drukuje pliki. Poleceniacatimorewyświetlają zawartość pli-
ków na ekranie.
Kiedy się załogujesz do systemu Linux, możesz zechcieć wylistować pliki znajdujące się
w Twoim katalogu home. Poleceniels, wypisujące listę plików i nazwy katalogów, bę-
dzie tutaj przydatne. Polecenielsma wiele możliwych opcji wyświetlania nazw plików
według zadanych cech.
3.1 Wyświetlanie plików
Możesz również chcieć obejrzeć zawartość pliku. Poleceniacatimorewyświetlają za-
wartość pliku na ekranie.catpochodzi od słowa  concatenate . W rzeczywistości jest to
bardzo skomplikowane i wszechstronne polecenie, tutaj zostało użyte w bardzo ograni-
czony sposób do wyświetlenia treści pliku na ekranie:
$ cat mojadane
komputery
Polecenie cat wyświetla całą treść pliku na ekranie za jednym razem. Problem pojawia
się, jeżeli plik jest duży, gdyż treść szybko przebiega przez ekran. Poleceniemorezostało
stworzone, by pokonać to ograniczenie - wyświetla treść po jednym ekranie. Możesz
również przesuwać się powoli w przód i w tył po tekście. Poleceniemorewywołujesz,
wprowadzając nazwę polecenia, za którym następuje nazwa pliku, który chcesz obejrzeć.
$ more mojadane
Kiedymoreotwiera plik, wyświetlany jest pierwszy ekran z treścią. Aby kontynuować
i wyświetlić następny ekran, wciskasz klawisz [f] lub spację. Aby przesunąć się w tył,
naciskasz klawisz [b]. Możesz w dowolnej chwili przerwać pracę wciskając klawisz [q].
3.2 Drukowanie plików
Kiedy chcesz drukować pliki, użyj polecenialprw celu wysłania plików na drukarkę
podłączoną do systemu. W następnym przykładzie użytkownik drukuje plik mojedane.
$ lpr mojadane
Jeżeli chcesz wydrukować kilka plików, możesz określić je w jednym wierszu poleceń za
lpr. W następnym przykładzie użytkownik drukuje oba pliki: mojedane i wstep.
$ lpr mojadane wstep
7
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
Drukowane zadania są umieszczane w kolejce i drukowane po jednym w tle. Możesz
kontynuować swoją pracę w czasie, kiedy odbywa się drukowanie. Pozycję drukowania
możesz zobaczyć w dowolnej chwili dzięki poleceniulpq. Polecenielpqdaje właścicielowi
drukowanego zadania (nazwa użytkownika, który wysłał - zadanie) ID zadania drukowa-
nia, rozmiar w bajtach i plik tymczasowy, w którym jest ono aktualnie przechowywane.
W tym przykładzie użytkownikiem jest chris, a ID zadania wynosi 00015.
$ lpq
Owner ID Chars Filename
chris 00015 360 /usr/lpd/cfa00015
Jeżeli zechcesz anulować zadanie drukowania, możesz tego dokonać poleceniemlprm.
Polecenielprmprzyjmuje jako argument zarówno ID zadania, jak i nazwę użytkownika.
lprmusunie zadanie drukowania z kolejki drukowania. Bardzo przydatne do tego za-
dania jest polecenielpq, gdyż pokazuje ID zadania oraz właściciela, a te dane musisz
wykorzystać przylprm.
4 Zarządzanie katalogami
Możesz tworzyć i usuwać własne katalogi oraz zmieniać katalog roboczy za pomocą po-
leceńmkdir,rmdiricd. Każde z tych poleceń przyjmuje jako argumenty nazwę ścieżki
katalogu. Poleceniepwdwyświetla bezwzględną ścieżkę Twojego katalogu roboczego.
Ponadto znaki specjalne reprezentowane przez kropkę, dwie kropki i tyldę mogą być
używane do odwoływana się do katalogu roboczego, katalogu nadrzędnego do roboczego
i katalogu home. Wszystkie te polecenia zebrane razem pozwalają na zarządzanie kata-
logami.
4.1 Tworzenie i usuwanie katalogów
Tworzysz i usuwasz katalogi poleceniamimkdirirmdir. W obu przypadkach możesz
również używać pełnych nazw ścieżek katalogów. W następnym przykładzie użytkownik
tworzy katalog raporty. Następnie użytkownik tworzy katalog listy, używając nazwy
ścieżki.
$ mkdir raporty
$ mkdir /home/chris/listy
Możesz usunąć katalog za pomocą poleceniarmdir, za którym następuje nazwa kata-
logu. W następnym przykładzie użytkownik usuwa katalog raporty za pomocą polecenia
rmdir. Następnie katalog listy jest usuwany z użyciem nazwy ścieżki.
$ rmdir raporty
$ rmdir /home/chris/listy
8
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
4.2 Listowanie katalogów
Już widziałeś, jak używać polecenialsdo listowania plików i katalogów w katalogu
roboczym. Jednak aby rozróżniać nazwy plików i katalogów, musisz używać polecenia
lsz opcją-F. W takim przypadku po każdej nazwie katalogu umieszczany jest ukośnik.
$ ls
pogoda raporty listy
$ ls -F
pogoda raporty/ listy/
Polecenielsprzyjmuje także argumenty w postaci nazwy katalogu lub nazwy ścieżki
katalogu. Pozwala to na listowanie plików z katalogu bez uprzedniego przechodzenia do
tego katalogu. W następnym przykładzie polecenielsprzyjmuje jako argument nazwę
katalogu raporty. Następnie polecenielsjest wykonywane ponownie, ale tym razem
zostaje użyta bezwzględna ścieżka do kataloguraporty.
$ ls raporty
poniedziałek wtorek
$ ls /home/chris/raporty
poniedziałek wtorek
4.3 Nazwy ścieżek
W każdym katalogu możesz tworzyć inne katalogi. Za pomocą poleceniacdmożesz
przechodzić z jednego katalogu do innego. Jednak nie ma wskaznika, który mówiłby,
w którym katalogu aktualnie jesteś. Aby stwierdzić, do jakiego katalogu przeszedłeś,
użyj poleceniapwd, które wyświetla nazwę bieżącego katalogu roboczego. Poleceniepwd
wyświetla więcej niż tylko nazwę katalogu - wyświetla pełną ścieżkę, jak to zostało
pokazane w następnym przykładzie. Nazwa ścieżki tu pokazana składa się z katalogu
home i dylan, który jest częścią katalogu home. Każdy katalog jest oddzielony znakiem
ukośnika. Katalog korzenia jest przedstawiony jako początkowy ukośnik.
$ pwd
/home/dylan
4.4 Zmiana katalogu
Jak wiesz, możesz zmieniać katalogi za pomocą poleceniacd. Zmienianie katalogów
powoduje, że dany katalog staje się Twoim katalogiem roboczym, czyli katalogiem do-
myślnym. Polecenia plikowe, takie jaklsicp, jeżeli nie zadasz inaczej, będą dotyczyły
plików katalogu roboczego.
Kiedy zalogujesz się do systemu, Twoim katalogiem roboczym jest Twój katalog home.
Kiedy tworzone jest konto użytkownika, system tworzy również katalog home dla danego
użytkownika. Poleceniecdpozwala zmienić katalog roboczy. W pewnym sensie możesz
przenieść się ze swojego katalogu home do innego katalogu. Ten inny katalog stanie się
Twoim katalogiem domyślnym dla dowolnych poleceń i nowo tworzonych plików. Na
9
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
przykład polecenielswylistuje pliki w tym nowym katalogu roboczym.
Poleceniecdprzyjmuje jako argument nazwę katalogu, do którego chcesz przejść.
W następnym przykładzie użytkownik zmienia katalog z dylan na props. Użytkownik
wydaje poleceniepwdw celu wyświetlenia katalogu roboczego.
$ pwd
/home/dylan
$ cd props
$ pwd
/home/dylan/props
Możesz również zmienić katalog na inny, używając jego pełnej ścieżki. W następnym
przykładzie polecenie cd przyjmuje jako argument ścieżkę katalogu listy.
$ cd /home/chris/listy
$ pwd
/home/chris/listy
Możesz używać symbolu dwóch kropek..do przedstawienia katalogu nadrzędnego.
Dosłownie oznaczają one ścieżkę katalogu nadrzędnego. Możesz używać znaku dwóch
kropek z poleceniemcd, aby powrócić do katalogu nadrzędnego, czyniąc go katalogiem
bieżącym. W następnym przykładzie użytkownik przechodzi do katalogu props, a na-
stępnie wraca do katalogu dylan.
$ cd props
$ pwd
/home/dylan/props
$ cd ..
$ pwd
/home/dylan
$
Jeżeli chcesz powrócić do swojego miacierzystego (domowego) katalogu, wystarczy jedy-
nie wprowadzić samo poleceniecd, bez nazwy pliku jako argumentu. Powrócisz prosto
do katalogu macierzystego, czyniąc go znów katalogiem roboczym.
$ pwd
\home\chris\raporty\wtorek
$ cd
$ pwd
\home\chris
4.5 Katalogi zagnieżdżone
Zobaczmy, jak poleceniecdmoże być używane do przechodzenia przez szereg zagnieżdżo-
nych katalogów. W następnym przykładzie poleceniecdpowoduje przejście do katalogu
listy. Poleceniemkdirnastępnie tworzy tam nowy podkatalog o nazwie dziekuje. Znów
10
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
używane jest poleceniecddo zmiany katalogu na dziekuje. Wewnątrz tego katalogu two-
rzony jest jeszcze jeden podkatalog o nazwie urodziny. Użytkownik następnie przechodzi
do tego katalogu. Za każdym razem wyświetlana jest nazwa ścieżki za pomocą polecenia
pwd. Na końcu poleceniecdbez argumentów powoduje powrót do katalogu home.
$ pwd
/home/chris
$ cd listy
$ pwd
/home/chris/listy
$ mkdir dziekuje
$ cd dziekuje
$ pwd
/home/chris/listy/dziekuje
$ mkdir urodziny
$ cd urodziny
$ pwd
/home/chris/listy/dziekuje/urodziny
$ cd
$ pwd
/home/chris
4.6 Odwoływanie się do katalogu roboczego i nadrzędnego
Katalog zawsze ma katalog nadrzędny (oczywiście z wyjątkiem katalogu korzenia). Na
przykład w ostatnim listingu katalogiem nadrzędnym dla dziekuje był katalog listy.
Kiedy katalog jest tworzony, wykonywane są dwa wpisy: jeden przedstawiony jako.,
a drugi jako dwie kropki:... Kropka oznacza nazwę ścieżki danego katalogu, a dwie
kropki oznaczają nazwę ścieżki katalogu nadrzędnego. Dwie kropki użyte jako argument
w poleceniu odwołują się do katalogu nadrzędnego. Pojedyncza kropka odnosi się do
bieżącego katalogu. W następnym przykładzie użytkownik przechodzi do katalogu li-
sty. Polecenielsjest użyte z argumentem.do wylistowania plików w katalogu listy.
Następnie polecenielsjest użyte z argumentem..do wylistowania plików w katalogu
nadrzędnym dla listy, czyli katalogu chris.
$ cd listy
$ ls .
dziękuje
$ ls ..
pogoda listy
Możesz używać pojedynczej kropki do odwoływania się do katalogu roboczego zamiast
używania jego nazwy. Na przykład, aby skopiować plik z katalogu roboczego z zachowa-
niem tej samej nazwy, można użyć kropki zamiast nazwy ścieżki katalogu roboczego. W
pewnym sensie kropka jest inną nazwą katalogu roboczego. W następnym przykładzie
użytkownik kopiuje plik pogoda z katalogu chris do katalogu raporty. Katalog raporty
jest katalogiem roboczym i może być przedstawiony jako pojedyncza kropka.
11
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
$ cd raporty
$ cp /home/chris/pogoda .
Symbol dwóch kropek..jest również często używany do odnoszenia się do plików w
katalogu nadrzędnym. W następnym przykładzie poleceniecatwyświetla plik pogoda
znajdujący się w katalogu nadrzędnym. Nazwą ścieżki pliku jest znak.., za którym
następuje ukośnik i nazwa pliku.
$ cat ../pogoda
jest ciepło i pada
$
Możesz użyć polecenia cd ze znakiem..do cofania się krokowo do kolejnych katalogów
nadrzędnych drzewa katalogów, począwszy od najniższego. W następnym przykładzie
użytkownik znajduje się w katalogu dziekuje. Następnie cofa się do katalogu chris, ciągle
używając poleceniacd ...
$ pwd
/home/chris/listy/dziekuje
$ cd ..
$ pwd
/home/chris/listy
$ cd ..
$ pwd
/home/chris
W wielu przypadkach będziesz używał..i.jako argumentów polecenia. Na przykład,
jeżeli listy to katalog roboczy, możesz skopiować plik pogoda do listy, odwołując się do
katalogu chris przez.., a do katalogu listy przez..
$ cp ../pogoda .
4.7 Używanie bezwzględnych i względnych nazw ścieżek
Jak wspomniano wcześniej, możesz odwoływać się do plików i katalogów, używając bez-
względnych i względnych nazw ścieżek. Jednak wszystko ma swoje ograniczenia. Mimo
że bezwzględna nazwa ścieżki może odnosić się do pliku lub katalogu, zwykle jest długa i
złożona, co powoduje, że jest trudna w użyciu. Zwykle, kiedy tylko to możliwe, będziesz
używał ścieżki względnej, a ścieżki bezwzględnej jedynie wtedy, kiedy to konieczne. Nie-
które powłoki oferują sposoby skracania części ścieżki bezwzględnej.
Ścieżka względna rozpoczyna się od katalogu roboczego. W następnym przykładzie po-
lecenielsnajpierw jest używane ze ścieżką względną, a następnie z bezwzględną ścieżką
do katalogu dziekuje. Katalog roboczy jest katalogiem macierzystym użytkownika chris,
a ścieżka względna do katalogu dziekuje to listy/dziękuje. Ścieżka bezwzględna do kata-
logu dziekuje to /home/chris/listy/dziekuje.
$ ls listy/dziekuje
larisa
12
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
$ ls /home/chris/listy/dziekuje
larisa
Bezwzględna ścieżka od katalogu korzenia do katalogu macierzystego może być bar-
dzo skomplikowana2. Aby ją uprościć, możesz używać znaku specjalnego tyldy~, która
oznacza bezwzględną ścieżkę Twojego katalogu macierzystego. W następnym przykła-
dzie użytkownik odwołuje się do pliku pogoda w katalogu /home/chris, umieszczając
tyldę i ukośnik przed nazwą /textitpogoda.
$ pwd
/home/chris/listy/dziekuje
$ cat ~/pogoda
jest ciepło i pada
$
Musisz określić pozostałą część ścieżki począwszy od Twojego katalogu domowego. W
następnym przykładzie użytkownik odwołuje się do pliku poniedziałek w katalogu /te-
xtitraporty. Tylda oznacza ścieżkę do katalogu macierzystego użytkownika, /home/chris,
a reszta ścieżki oznacza plik poniedziałek.
$ cat ~/raporty/poniedziałek
5 Operacje na plikach i katalogach
Kiedy stworzysz więcej plików, możesz zechcieć utworzyć ich kopie zapasowe, zmienić
ich nazwy, usunąć niektóre z nich lub nawet nadać im dodatkowe nazwy. Linux oferuje
Ci kilka poleceń pozwalających na kopiowanie plików i katalogów, zmianę nazwy lub
usuwanie.
5.1 Kopiowanie plików
Aby zrobić kopię pliku, po prostu wydajesz poleceniecpz dwoma nazwami plików
jako argumentami. Pierwsza nazwa pliku dotyczy pliku, który ma zostać skopiowany
- tego, który już istnieje. Często nazywany jest on plikiem zródłowym. Druga nazwa
pliku dotyczy kopii. Będzie to nowy plik zawierający kopię wszystkich danych z pliku
zródłowego. Drugi argument często jest nazywany plikiem docelowym.
W następnym przykładzie użytkownik kopiuje plik o nazwie projekt na nowy plik o
nazwie staryprojekt.
$ cp projekt staryprojekt
Kiedy użytkownik wylistuje pliki w katalogu, nowa kopia będzie wśród nich.
$ ls
projekt staryprojekt
2
Zazwyczaj katalog macierzysty użytkownika znajduje się w /home, ale nie jest to regułą.
13
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
Istnieje możliwość, że niechcący zniszczysz inny plik poleceniemcp. Poleceniecptworzy
kopię najpierw przez utworzenie pliku, a następnie skopiowanie do niego danych. Jeżeli
inny plik ma tę samą nazwę co plik docelowy, jest on niszczony, a nowy plik o tej
nazwie zostaje utworzony. Mówiąc wprost - oryginalny plik jest nadpisywany przez nową
kopię. W następnym przykładzieprojektjest nadpisywany przez pliknowyprojekt.
Plikprojektjuż istnieje.
$ cp nowyprojekt projekt
W zależności od konfiguracji systemu, przy próbie nadpisania instniejącego pliku może,
ale nie musi pojawić się ostrzeżenie i zapytanie. Jeśli system nie ostrzega, można używać
poleceniacpz opcją-i. Z tą opcją poleceniecpnajpierw sprawdzi, czy plik już istnieje.
Jeżeli tak, zostaniesz zapytany, czy chcesz nadpisać istniejący plik. Jeżeli wprowadziszy,
istniejący plik zostanie zniszczony, a nowy zostanie utworzony jako kopia. Jeżeli wpro-
wadzisz cokolwiek innego, zostanie to przyjęte jako odpowiedz negatywna, a polecenie
cpzostanie przerwane, zachowując oryginalny plik.
$ cp -i nowyprojekt projekt
Overwrite projekt? n
$
5.2 Kopiowanie plików do katalogów
Aby skopiować plik z Twojego katalogu roboczego do innego katalogu, musisz jedynie
użyć nazwy katalogu jako drugiego argumentu poleceniacp. Nazwa nowej kopii będzie
taka sama jak nazwa oryginału, ale kopia zostanie umieszczona w innym katalogu. Pliki
w różnych katalogach mogą mieć te same nazwy - ponieważ są w różnych katalogach, są
rejestrowane jako różne pliki.
Aby skopiować plik z katalogu domowego do podkatalogu, po prostu określ nazwę kata-
logu. W następnym przykładzie plik nowyprojekt jest kopiowany z katalogu roboczego
do katalogu projekty.
$ cp nowyprojekt projekty
Poleceniecpmoże przyjmować listę kilku nazw plików jako argumenty, a więc możesz
kopiować więcej niż jeden plik na raz do katalogu. Po prostu podaj nazwy plików w
wierszu poleceń, wprowadzając nazwę katalogu jako ostatni argument. Wszystkie pliki
zostaną skopiowane do zadanego katalogu. W następnym przykładzie użytkownik ko-
piuje dwa pliki wstep i doki do katalogu projekty. Zwróć uwagę, że projekty jest ostatnim
argumentem.
$ cp wstep doki projekty
Możesz używać dowolnych znaków specjalnych do utworzenia listy nazw plików i użycia
jej z poleceniamicpimv. Na przykład załóżmy, że potrzebujesz skopiować wszystkie kody
zródłowe w C do zadanego katalogu. Zamiast wypisywać je jeden po drugim w wierszu
poleceń, możesz użyć znaku specjalnego gwiazdka*z rozszerzeniem .c do oznaczenia
i utworzenia listy wszystkich plików zródłowych w C (wszystkie pliki z rozszerzeniem
14
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
 .c ).
W następnym przykładzie użytkownik kopiuje wszystkie pliki zródłowe z bieżącego ka-
talogu do katalogu zródła.
$ cp *.c zrodla
Kiedy kopiujesz plik, możesz chcieć nadać kopii inną nazwę niż oryginalna. Aby to zro-
bić, umieść nową nazwę pliku, oddzieloną ukośnikiem, po nazwie katalogu.
W następnym przykładzie plik nowyprojekt jest kopiowany do katalogu projekty, a ko-
pii nadawana jest nowa nazwa wersja1. Użytkownik następnie przechodzi do katalogu
projekty i listuje pliki. Jest tam tylko jeden plik i nosi on nazwę wersjal.
$ cp nowyprojekt projekty/wersja1
$ cd projekty
$ ls
wersjal
Kiedy chcesz skopiować plik z katalogu podrzędnego, takiego jak projekty, do katalogu
nadrzędnego, jakim jest np. katalog bieżący, musisz określić nazwę katalogu podrzęd-
nego.
W następnym przykładzie plik wersjal jest kopiowany z katalogu projekty do katalogu
macierzystego.
$ cp projekty/wersja1 ~
Załóżmy jednak, że zmieniłeś katalog roboczy na katalog podrzędny i chcesz skopio-
wać plik z tego katalogu podrzędnego do katalogu nadrzędnego. Musisz w jakiś sposób
odwołać się do katalogu nadrzędnego. Możesz to zrobić, używając symbolu dwóch kro-
pek, które oznaczają ścieżkę katalogu nadrzędnego. Na przykład, jeśli projekty to Twój
aktualny katalog roboczy i chcesz skopiować plik wersja1 z katalogu projekty do kata-
logu nadrzędnego (w tym przypadku katalogu macierzystego użytkownika), musisz użyć
symbolu dwóch kropek w drugim argumencie poleceniacp.
$ pwd
/home/chris/projekty
$ cp wersja1 ..
Jeżeli chcesz nadać kopii pliku wersjał nową nazwę, dodaj nową nazwę w drugim argu-
mencie, poprzedzając ją ukośnikiem.
$ cp wersja1 ../nowawersja
5.3 Przenoszenie plików
Do zmiany nazwy pliku lub jego przenoszenia z jednego katalogu do drugiego możesz
używać poleceniamv. Jeżeli używaszmvdo zmiany nazwy pliku, po prostu użyj nowej
nazwy pliku jako drugiego argumentu. Pierwszy argument jest aktualną nazwą pliku,
który przemianowujesz. W następnym przykładzie plik projekt jest przemianowywany
na plik o nazwie wersja1.
15
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
$ mv projekt wersja1
Podobnie jak poleceniemcp, tak imvmożna łatwo niechcący usunąć plik. Kiedy zmie-
niasz nazwę pliku, możesz przez pomyłkę wybrać nazwę już istniejącego innego pliku. W
takim przypadku drugi pliki zostanie usunięty. Poleceniemvrównież ma opcję-i, która
najpierw sprawdza, czy plik o zadanej nazwie już istnieje.
Prz użyciumvmożesz przenosić plik z jednego katalogu do drugiego, używając nazwy
katalogu jako drugiego argumentu poleceniamv. W takim przypadku możesz traktować
poleceniemvjako po prostu przenoszące plik z jednego katalogu do drugiego, a nie zmie-
niające jego nazwę. Po przeniesieniu pliku będzie miał on taką samą nazwę jaką miał w
oryginalnym katalogu, chyba że zadasz inną.
W następnym przykładzie plik nowyprojekt jest przenoszony z katalogu domowego do
katalogu projekty.
$ mv nowyprojekt projekty
Jeżeli chcesz zmienić nazwę pliku podczas jego przenoszenia, możesz określić nową nazwę
pliku po nazwie katalogu. Nazwa katalogu i nowa nazwa pliku są oddzielone ukośnikiem.
W następnym przykładzie plik nowyprojekt jest przenoszony do katalogu projekty, a
nazwa jest zmieniana na wersjal.
$ mv nowyprojekt projekty/wersja1
Uwaga. Poleceniemv, w przypadku plików, posiada wszystkie możliwości stosowania
opisane wyżej dla poleceniacp.
5.4 Przenoszenie i kopiowanie katalogów
Możesz również kopiować i przenosić całe katalogi jednocześnie. Zarówno poleceniecp,
jak imvprzyjmują nazwę katalogu jako pierwszy argument, pozwalając na kopiowanie
lub przenoszenie podkatalogów z jednego katalogu do innego. Pierwszym argumentem
jest nazwa katalogu, który ma zostać przeniesiony lub skopiowany, a drugim argumentem
jest nazwa katalogu, do wewnątrz którego ma on zostać przeniesiony lub skopiowany.
Te same reguły nazw ścieżek, które odnoszą się do plików, można stosować również do
przenoszenia i kopiowania katalogów.
Aby skopiować katalog, poleceniecpwymaga użycia opcji-r. Opcja-roznacza  re-
kursję . Powoduje to kopiowanie przez poleceniecpkatalogów wraz z podkatalogami i
ich zawartością. Innymi słowy, całe drzewo katalogów jest kopiowane w inne miejsce. W
następnym przykładzie katalog dziekuje jest kopiowany do katalogu starelisty. W tym
momencie będą istniały dwa podkatalogi dziekuje, jeden w katalogu listy, a drugi w
katalogu starelisty.
$ cp -r listy/dziekuje starelisty
$ ls -F listy
dziękuje/
$ ls -F starelisty
dziękuje/
16
Instytut Sterowania i Inżynierii Systemów
Zakład Komputerowo Wspomaganego Projektowania
Laboratorium Podstaw Informatyki
Załóżmy, że zamiast kopiowania katalogu i tworzenia go w postaci podkatalogu w in-
nym katalogu, chcesz jedynie skopiować zawarte w nim pliki. Aby skopiować wszystkie
pliki z jednego katalogu do innego, musisz podać ich nazwy. Znak specjalny gwiazdka
oznacza wszystkie pliki i katalogi wewnątrz katalogu. Aby skopiować wszystkie pliki z
katalogu listy do katalogu starelisty, użyj gwiazdki jako pierwszego argumentu w celu
wygenerowania listy wszystkich nazw plików w katalogu listy.
$ cp listy/* starelisty
Aby dołączyć podkatalogi z katalogu listy do operacji kopiowania, musisz użyć opcji-r
poleceniacp.
$ cp -r listy/* starelisty
5.5 Kasowanie pliku
Kiedy będziesz używał Linuxa, stwierdzisz, że liczba plików drastycznie wzrasta. W
Linuxie generowanie plików jest proste. Aplikacje takie jak edytory i polecenia takie jak
cpw prosty sposób tworzą pliki. Jednak wiele z tych plików jest zbytecznych. Możesz je
usunąć poleceniemrm. W następnym przykładzie użytkownik usuwa plik staryprojekt.
$ rm staryprojekt
Poleceniermmoże przyjmować wiele argumentów, pozwalając usuwać kilka plików za
jednym razem. Po prostu wypisz je w wierszu poleceń za poleceniemrm.
$ rm projekt wersja1 wersja2
Uważaj podczas korzystania z poleceniarm, gdyż jest ono nieodwracalne. Kiedy plik
zostanie usunięty, nie może być odtworzony. Załóżmy, że wprowadziłeś przypadkowo
polecenierm, a chciałeś wprowadzić zupełnie inne polecenie, takie jakcpczymv. Wci-
snąłeś [ENTER] i wykonało się nie to polecenie co trzeba, ale jest już za pózno. Pliki
zostały usunięte. Aby zabezpieczyć się przed tego rodzaju sytuacjami, możesz używać
poleceniarmwraz z opcją-i, służącą do potwierdzania, że chcesz usunąć plik3. Opcja
-ipowoduje, że jesteś oddzielnie pytany o potwierdzenie skasowania każdego pliku. W
następnym przykładzie poleceniermjest wykonane tak, aby usunąć pliki zawierające w
nazwie  pro . Następnie pyta o potwierdzenie usunięcia każdego z plików. Użytkownik
decyduje o usunięciu staryprojekt, ale nie projekt.
$ rm -i *pro*
Remove projekt? n
Remove staryprojekt? y
Niniejsze opracowanie powstało w oparciu o książkę Richarda Petersena: Arkana -
Linux
3
W niektórych dystrybucjach Linuxa poleceniermjest domyślnie wywoływanie z opcją-ii może stać
się uciążliwe przy próbie usunięcia większej liczby plików. Można wówczas zastosować opcję  przeciwną
-f, która wymusza ( force ) wykonanie polecenia bez odpytywania.
17


Wyszukiwarka

Podobne podstrony:
Linux System Plików II
07 Linux System plików
Linux konserwacja Systemu Plikow
system plików linux
iCare Format Recovery naprawa systemu plikow
Linux O Systemie
Linux nazwy plików
system plikow
utk1 system plikow ext
Funkcje systemowe systemu plików
Systemy plików
2 linux system wielodostepny
systemy plikow
systemy plików 12 10 2008

więcej podobnych podstron