Zarządzanie plikami

29 lipca 2007, adz

Systemy uniksowe zapewniają szereg poleceń służących do manipulowania plikami oraz katalogami. Ich mocną stroną jest fakt, że w miarę prosty sposób można ich użyć na grupie plików/katalogów, spełniających określone wymagania. Na przykład można usunąć wszystkie pliki, które spełniają określone kryteria lub dokonać masowej zmiany nazw.

1. ls

ls to bardzo często wykorzystywane polecenie. Wyświetla ono na standardowym wyjściu zawartość katalogu. Jeżeli jako parametr nie poda się ścieżki do katalogu, wyświetlona zostanie zawartość katalogu bieżącego (tj. tego, w którym aktualnie się znajdujemy).

adam@laptop:~/Dokumenty/jakilinux.org$ pwd
/home/adam/Dokumenty/jakilinux.org/
adam@laptop:~/Dokumenty/jakilinux.org$ls
przykład.txt  wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org$ls /var/
backups  cache  crash  games  lib  local  lock  log  mail  opt  run  spool
tmp

W drugim przykładzie powyżej została wyświetlona zawartość katalogu podanego jako parametr. Polecenie ls może wyświetlać bardziej szczegółowe dane, jeżeli uruchomi się je z parametrem -l.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 wszystko_o_konsoli.txt

W powyższym listingu w pierwszej linii wyświetlana jest suma bloków na dysku użytych przez pliki w katalogu. Dalej wyświetlane są:

  • -rw-rr uprawnienia danego pliku, katalogu (szerzej na temat uprawnień w dalszej części przewodnika),
  • liczba twardych dowiązań do danego pliku,
  • właściciel pliku, grupa do której należy właściciel,
  • długość pliku,
  • data ostatniej modyfikacji,
  • nazwa pliku/katalogu.

Polecenie ls umożliwia wyświetlanie plików ukrytych (tzw. pliki z kropką). Pliki ukryte zaczynają się od znaku kropki ., do wyświetlania plików ukrytych służy parametr -a.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -a
.  ..  .plik_ukryty  przykład.txt  wszystko_o_konsoli.txt

Polecenie ls umożliwia sortowanie wyników. Do dyspozycji są parametry:

  • -t — wyświetla zawartość posortowaną wg daty modyfikacji (od najnowszej do najstarszej),
  • -S — wyświetla zawartość wg rozmiaru od największego do najmniejszego,
  • -r — odwraca porządek sortowania.

Istnieje również możliwość wyświetlenia rekursywnego zawartości katalogów, tzn. wyświetlona zostanie zawartość wszystkich podkatalogów w katalogu, służy do tego parametr -R.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -R
.:
katalog1  katalog2  przykład.txt  wszystko_o_konsoli.txt

./katalog1:
plik1  plik2

./katalog2:
plik3  plik4

2. cd

Polecenie cd (ang. change directory) służy do poruszania się po drzewie katalogów. Jako parametr polecenie pobiera miejsce w drzewie katalogów, do którego chcemy się przenieść.

adam@laptop:~$cd /usr/bin
adam@laptop:/usr/bin$pwd
/usr/bin

W tym miejscu warto nadmienić, że znak ~ (tylda) jest traktowany przez powłokę jako znak specjalny — jest to skrót do katalogu domowego (ang. home directory) użytkownika.

adam@laptop:/usr/bin$cd ~
adam@laptop:~$pwd
/home/adam

Jeżeli wpiszemy cd ~nazwa_użytkownika, to polecenie to przeniesie nas do katalogu domowego użytkownika o loginie nazwa_użytkownika.

adam@laptop:~$cd ~zoidberg
adam@laptop:/home/zoidberg$pwd
/home/zoidberg

Znak - oznacza katalog, który był poprzednio katalogiem roboczym. Aby przejść do katalogu nadrzędnego, należy wpisać cd .. Każdy (nawet pusty) katalog w systemach uniksowych zawiera 2 elementy . i .. Pojedyncza kropka . jest to dowiązanie katalogu do niego samego, natomiast dwukropek .. jest dowiązaniem do katalogu nadrzędnego w drzewie katalogów.

adam@laptop:~$cd ..
adam@laptop:/home$pwd
/home

Wraz z poleceniem cd, warto wprowadzić terminy ścieżka względna i ścieżka bezwzględna.

  • Ścieżka bezwzględna (zwana też absolutną, ang. absolute path) to ścieżka, która rozpoczyna się od korzenia drzewa katalogów / np. /home/adam.
  • Ścieżka względna (ang. relative path) to ścieżka rozpoczynająca się od katalogu, w którym obecnie się znajdujemy.

3. mkdir, rmdir

Polecenia te służą odpowiednio do tworzenia i usuwania katalogów. Jako parametr podajemy nazwę tworzonego/usuwanego katalogu. Poleceniem {rmdir} można usunąć tylko pusty katalog.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ mkdir katalog
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls
katalog  przykład.txt  wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ rmdir katalog/
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls
przykład.txt  wszystko_o_konsoli.txt

cp, mv, rm

  • {cp} — polecenie to służy do kopiowania plików, pobiera ono co najmniej dwa parametry: plik źródłowy i miejsce docelowe, do którego chcemy go skopiować,
  • mv — służy do przenoszenia lub zmiany nazwy plików lub katalogów, działa na identycznej zasadzie jak polecenie cp,
  • rm — służy do usuwania plików.

Polecenia cp, mv i rm mają następujące wspólne parametry:

  • -f force — wymusza usuniecie docelowego pliku, nawet w przypadku braku uprawnień do zapisu,
  • -i interactive — użytkownik zostanie poproszony o potwierdzenie wykonywanej operacji,
  • -b —backup — zostanie utworzona kopia zapasowa plików nadpisywanych (tylko cp i mv),

Polecenia cp i rm mogą również pracować w trybie rekursywnym, umożliwia to parametr -r (-R, —recursive).

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls
katalog1  katalog2  katalog3  przykład.txt  wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ cp -R katalog2/ katalog3/
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls katalog3/
katalog2
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ rm -r katalog3/
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls
katalog1  katalog2  przykład.txt  wszystko_o_konsoli.txt

Poleceniem rm -r można usuwać niepuste katalogi, tak jak na przykładzie powyżej.

5. ln

Jest to polecenie wykorzystywane do tworzenia dowiązań do plików, dowiązania można interpretować jako odpowiednik skrótu do pliku znanego z systemów Windows (jest to trochę naciągana interpretacja!)
Wyróżniamy dwa rodzaje dowiązań:

  • miękkie (tzw. symboliczne), odwołują się one do pliku — ten rodzaj dowiązań można interpretować jako odpowiednik skrótu z Windows,
  • twarde — jest to dowiązanie do konkretnego miejsca na dysku, innymi słowy do fizycznego obszaru na dysku gdzie znajduje się plik.

Jeżeli usunie się plik, do którego prowadzi dowiązanie symboliczne, dowiązanie to zostanie podświetlone na czerwono (jeżeli powłoka wspiera kolory), jeżeli usuniemy plik, do którego utworzone zostało dowiązanie twarde, nic się nie stanie, taki plik zostanie usunięty dopiero wtedy, gdy liczba twardych dowiązań spadnie do zera.

Dowiązania symboliczne tworzy się uruchamiając polecenie ln z parametrem -s.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ cat plik
Przykład dowiązań.
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ln -s plik \
dowiazanie_symboliczne
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
lrwxrwxrwx 1 adam adam    4 2007-06-01 19:11 dowiazanie_symboliczne -> plik
-rw-r--r-- 1 adam adam   22 2007-06-01 19:10 plik
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ rm plik
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls
dowiazanie_symboliczne

W powyższym przykładzie można zaobserwować działanie dowiązań symbolicznych. Polecenie ls wskazuje, że dla pliku nie zmieniła się liczba twardych dowiązań. Zupełnie inaczej jest na przykładzie poniżej, gdzie liczba twardych dowiązań wynosi 2, po usunięciu pliku spada do 1, plik cały czas jest dostępny.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ln plik dowiazanie_twarde
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
-rw-r--r-- 2 adam adam   22 2007-06-01 19:11 dowiazanie_twarde
-rw-r--r-- 2 adam adam   22 2007-06-01 19:11 plik
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ rm plik
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
-rw-r--r-- 1 adam adam   22 2007-06-01 19:11 dowiazanie_twarde

6. touch

touch to proste polecenie mające dwa zastosowania. Jeżeli podamy jako parametr istniejący plik, to zmieni mu datę modyfikacji. Jeżeli podamy nazwę nieistniejącego pliku, to zostanie utworzony pusty plik.


adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 przykład.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ touch przykład.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-06-07 13:27 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ touch nowy.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-06-07 13:28 nowy.txt
-rw-r--r-- 1 adam adam 0 2007-06-07 13:27 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 wszystko_o_konsoli.txt

Uruchamiając touch z parametrem -c lub —no-create, zapobiegniemy utworzeniu nowego pliku.
Parametr -d lub -t przy czym parametr t wymaga określenia daty w formacie MMDDhhmm.

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-06-07 13:28 nowy.txt
-rw-r--r-- 1 adam adam 0 2007-06-07 13:27 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-06-07 13:28 nowy.txt
-rw-r--r-- 1 adam adam 0 2007-06-07 13:27 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-05-30 11:31 wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ touch -t \
200706101200 nowy.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ touch -d \
"last monday" przykład.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ touch -d \
"2 days ago 12:00" wszystko_o_konsoli.txt
adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ ls -l
razem 0
-rw-r--r-- 1 adam adam 0 2007-06-10 12:00 nowy.txt
-rw-r--r-- 1 adam adam 0 2007-06-04 00:00 przykład.txt
-rw-r--r-- 1 adam adam 0 2007-06-05 12:00 wszystko_o_konsoli.txt

7 df, du

Służą do wyświetlania miejsca zajmowanego przez system plików (df) oraz przez konkretny plik (du). Uruchomione z parametrem -h dadzą wyniki w megabajtach. Przykład dla polecenia df:

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ df -h
System plików            rozm. użyte dost. %uż. zamont. na
/dev/sda5              40G   34G  4,0G  90% /
varrun                502M  136K  502M   1% /var/run
varlock               502M     0  502M   0% /var/lock
procbususb            502M  148K  502M   1% /proc/bus/usb
udev                  502M  148K  502M   1% /dev
devshm                502M     0  502M   0% /dev/shm

Przykład dla polecenia du:

adam@laptop:~/Dokumenty/jakilinux.org/przykłady$ du -h error.txt
4,0K    error.txt

8. echo

Jest to proste polecenie, które jako wynik swojej pracy zwraca tekst, który został podany mu jako parametr.

adam@laptop:~$echo Hello World!
Hello World!

Polecenie to dodaje na końcu znak przejścia do nowej linii, aby to ominąć, należy uruchomić program, z parametrem -n. Na przykład:

adam@laptop:~$echo -n Hello World!
Hello World!adam@laptop:~$

W przypadku zamknięcia tekstu w cudzysłowy, tekst będzie interpretowany bezpośrednio (o tym później).

9. pwd

pwd (ang. print working directory) to polecenie wyświetlające pełną ścieżkę w miejscu w drzewie katalogów, w którym aktualnie się znajdujemy.

adam@laptop:~$pwd
/home/adam

10. cat

Polecenie cat można wykorzystywać w celu tworzenia pliku a dokładniej rzecz ujmując przekierowania standardowego wejścia do pliku oraz wyświetlenia na standardowym wyjściu. Plik tworzy się w następujący sposób:

adam@laptop:~$cat > plik.txt
Bardzo ciekawy tekst.
<Ctrl+d>

Temat użycia operatora > zostanie poruszony szerzej w dalszej części przewodnika. Aby wyświetlić zawartość pliku, wystarczy wpisać cat nazwa_pliku.

adam@laptop:~$cat plik.txt
Bardzo ciekawy tekst.

Możesz również uzyskać numery linii wyświetlanego pliku w lewym rogu ekranu.

adam@laptop:~$cat -n plik.txt
     1  Bardzo ciekawy tekst.

Polecenie cat może również łączyć pliki, w poniższym przykładzie scalam 5 fragmentów obrazu ISO w jedną całość.

cat plik1 plik2 plik3 plik4 plik5 > file.iso

11. wc, head, tail

Te trzy polecenia wykorzystywane są do operacji na ciągach tekstu. Polecenie wc wyświetla liczbę linii, słów oraz bitów w danym pliku.

adam@laptop:~/Dokumenty/jakilinux.org$ wc wszystko_o_konsoli.txt
94  908 6828 wszystko_o_konsoli.txt

W powyższym przykładzie pierwsza kolumna to liczba linii, druga słów, a trzecia liczba bitów.
Kolejne dwa polecenia wyświetlają odpowiednio początek pliku (head) oraz koniec (tail) — domyślnie wyświetlane jest 10 linii tekstu. Wartość tę w obu programach można regulować parametrem -n podając liczbę linii, które chcemy zobaczyć.

adam@laptop:~/Dokumenty/jakilinux.org$ head -n 1 przykład.txt
Pierwsza linia tekstu!
adam@laptop:~/Dokumenty/jakilinux.org$ tail -n 2 przykład.txt
Przed ostatnia linia tekstu!
Ostatnia linia tekstu!

12 less

Polecenie less służy do przeglądania pliku z możliwością jego przewijania, zarówno do przodu, jak i wstecz.

adam@laptop:~$less plik.txt

Powyższe polecenie spowoduje wyświetlenie pliku plik.txt. Wprowadzenie :f podczas korzystania z programu spowoduje wyświetlenie interesujących informacji, np. numer linii na górze ekranu czy wielkości pliku. Dodatkowo zastosowanie polecenia cat z przełącznikiem -n umożliwia wyświetlenie numeru każdej linii przy lewej krawędzi ekranu, co widać poniżej.

adam@laptop:~$cat plik.txt | less

Program opuszczamy wpisując :q.

Przejdź do następnego artykułu: Strumienie, potoki i przekierowania »

Komentarze (RSS) | Trackback (URI)

Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

Liczba komentarzy: 4

zwiń wątek ak47  30 lipca 2007 o godz. 7:46 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +1 [Pokaż komentarz]

Nie napisałes nic o grep’ie a to jedno z wazniejszych “poleceń ” . Pozatym du obsłuzy oprócz normalnych plików ,katalogi także sprawdzanie rekursywne o raz obliczy ci ile zajmuje na dysku cały katalog.
Ogólnie nieźle.
A co do grepa:
“jeden z podstawowych programów wchodzących w skład systemu Unix. Służy do znajdowania w strumieniu wejścia (plik, lub po prostu wpisywany tekst) ciągów znaków pasujących do danego wyrażenia regularnego “[wikipedia]
sposoby uzycia:
“cat plik |grep wzorzec1 |grep wzorzec2 |grep wzorzec > plik_wynikowy”
bardzo przydatne przy parsowaniu logów pod wzgędem kilku kryteriów :)
“grep wyrazenie -r.”
przeszuka rekursywnie pliki pod kątem wyrazenia -> przydatne podczasz szukania w etc jakiejś zmiennej
“ps aux |grep wzorzec”
przeszukanie po procesach ze wzgedu na wzorzec -> najczęściej nazwa programu lub użytkownika
#jak ci się chce/podoba mozesz poprawić i dorzucić licencja BSD :)

zwiń wątek ak47  30 lipca 2007 o godz. 7:54 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

oho jednak sie pospieszyłem grep być dalej :)

 
 
zwiń wątek Green  30 lipca 2007 o godz. 13:14 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: 0 [Pokaż komentarz]

Wydaje mi się, że przy opisie polecenia cat warto by wyjść od tego, jaka jest jego podstawowa funkcja. A stanowi ją, jak podaje jego strona podręcznika:

[…] wypisywanie na standardowe wyjście zawartości każdego podanego pliku, lub standardowego wejścia jeśli nie podano żadnego.

Poza tym, skoro omówiona została komenda less, można by wspomnieć także o istnieniu more. Dobrze byłoby również, co zostało już wspomniane, poszerzyć opis polecenia du.

 
zwiń wątek skorpion  31 lipca 2007 o godz. 21:50 # Zwiększ karmę Zmniejsz karmę Cofnij swój głos Zgłoś komentarz do usunięcia KARMA: +3 [Pokaż komentarz]

Się śmiejcie, ale twarde dowiązania są jak Voldemort i Horkruksy xD.
Dopóki wszystkich nie zniszczysz, Voldemort żyje :P

 
Identyfikator (wymagane)
Adres e-mail (wymagany - nie pokażemy go publicznie)
Adres URI
Rozmiar pola: zmniejsz rozmiar | zwiększ rozmiar
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.