Informacje o plikach i katalogach
Przejdźmy do kolejnego etapu: operacji na katalogach i plikach. Najpierw sprawdźmy nazwę katalogu w którym się znajdujemy.
[ziutus@localhost ziutus]$ pwd /home/ziutus
Dalej sprawdźmy co znajduje się w tym katalogu.
[ziutus@localhost ziutus]$ ls Desktop/ drakeconf.png menudrake1.png public_html/ www.pdi.net/ zrzut ekranu3.png Documents/ evolution/ OpenOffice.org1.0/ test.html zrzut ekranu1.png
Wszystkie pliki (Czyli także te ukryte) zobaczymy dodając parametr -a
[ziutus@localhost ziutus]$ ls -a ./ .draksync .mailcap .ssh/ ../ evolution/ .mc/ .sversionrc .bash_history .gaimrc .mcop/ test.html .bash_logout .gconf/ .MCOP-random-seed tmp/
Natomiast więcej informacji o samych plikach uzyskamy dzięki parametrowi -l. Będą to: prawa dostępu, właściciel i grupa właścicieli, wielkość, czas ostatniej modyfikacji.
[ziutus@localhost ziutus]$ ls -l razem 396 drwxr-xr-x 3 ziutus ziutus 4096 sie 22 07:00 Desktop/ drwxr-xr-x 2 ziutus ziutus 4096 sie 14 18:07 Documents/ -rw-r--r-- 1 ziutus ziutus 39438 sie 14 21:45 drakeconf1.png -rw-r--r-- 1 ziutus ziutus 39438 sie 14 21:45 drakeconf.png drwx------ 4 ziutus ziutus 4096 sie 17 07:59 evolution/ drwx------ 5 ziutus ziutus 4096 sie 22 06:29 Mail/ -rw-r--r-- 1 ziutus ziutus 69307 sie 17 11:18 zrzut ekranu1.png -rw-r--r-- 1 ziutus ziutus 87013 sie 17 11:31 zrzut ekranu2.png -rw-r--r-- 1 ziutus ziutus 69101 sie 17 11:42 zrzut ekranu3.png
Czasem w skryptach wygodnie jest oddzielić informację o nazwie katalogu od nazwy pliku w nim. Dokonujemy tego przy pomocy poleceń dirname (podaje nazwę katalogu) oraz basename (podaje nazwę pliku) podając im pełną ścieżkę do pliku.
[ziutus@localhost ziutus]$ dirname /home/ziutus/test.html /home/ziutus [ziutus@localhost ziutus]$ basename /home/ziutus/test.html test.html [ziutus@localhost ziutus]$
Tworzenie, przenoszenie i kasowanie plików oraz katalogów
Katalogi tworzymy przy pomocy polecenia mkdir a usuwamy przez wydanie komendy rmdir. Między katalogami przemieszczamy dzięki cd.
[ziutus@localhost ziutus]$ mkdir test [ziutus@localhost ziutus]$ cd test [ziutus@localhost test]$ pwd /home/ziutus/test [ziutus@localhost test]$ cd .. [ziutus@localhost ziutus]$ rmdir test [ziutus@localhost ziutus]$ cd test bash: cd: test: Nie ma takiego pliku ani katalogu
przejdźmy do plików. W celu przećwiczenia operacji na plikach utwórzmy pusty katalog test a następnie przejdźmy do niego.
[ziutus@localhost test]$ pwd /home/ziutus/test [ziutus@localhost test]$ ls
Następnie utwórzmy pusty plik test1.txt poleceniem touch test1.txt
[ziutus@localhost test]$ touch test1.txt [ziutus@localhost test]$ ls test1.txt
Zmianę nazwy (a także przeniesienie go w inne miejsce) dokonamy dzięki poleceniu mv
[ziutus@localhost test]$ mv test1.txt test2.txt [ziutus@localhost test]$ ls test2.txt
Pliki kopiujemy poleceniem cp.
[ziutus@localhost test]$ ls test2.txt [ziutus@localhost test]$ cp test2.txt test1.txt [ziutus@localhost test]$ ls test1.txt test2.txt
A usuwamy komenda rm
[ziutus@localhost test]$ rm test2.txt rm: usunąć `test2.txt'? t [ziutus@localhost test]$ ls test1.txt
Zmiana przynależności pliku
Kolejną ważną sprawą jest przynależność plików do właściciela, czy też grupy właścicieli. Czasem nadchodzi potrzeba jego zmiany, dokonamy tego przy pomocy komendy chown. Składnia polecenia obejmuję nazwę nowego użytkownika, nazwę grupy oddzieloną od nazwy użytkownika kropką oraz nazwę pliku, który modyfikujemy.
[ziutus@localhost test]$ ls -l razem 0 -rw-r--r-- 1 ziutus ziutus 0 sie 23 15:16 test1.txt [ziutus@localhost test]$ chown ziutus.lp test1.txt [ziutus@localhost test]$ ls -l razem 0 -rw-r--r-- 1 ziutus lp 0 sie 23 15:16 test1.txt
Samą grupę możemy zmienić dzięki poleceniu chgrp.
razem 0 -rw-r--r-- 1 ziutus lp 0 sie 23 15:16 test1.txt [ziutus@localhost test]$ chgrp ziutus test1.txt [ziutus@localhost test]$ ls -l razem 0 -rw-r--r-- 1 ziutus ziutus 0 sie 23 15:16 test1.txt
Wyszukiwanie plików
Pliki wyszukujemy dzięki poleceniu find. W najprostszej postaci podajemy tylko interesujący nas ciąg znaków. Opcjonalnie przed nim możemy jeszcze dodać ścieżkę przeszukiwania.
[ziutus@localhost test]$ ls ala.txt test1.txt [ziutus@localhost test]$ find te* test1.txt
Bardzo przydatna jest możliwość wywołania polecenia na znalezionych plikach. Przypuśćmy, iż chcemy plikom w podkatalogach nadać prawo 640 a katalogom 750. Jak to uczynić? Polecenie find ma możliwość wywołania polecenia na znalezionych obiektach, należy użyć opcji -exec i podać polecenie (nazwę pliku zastępujemy ciągiem {}). Polecenie to kończymy znakiem `;
find . -type -d -exec chmod 750 {} ';' find . -type -f -exec chmod 640 {} ';'
Możemy to też osiągnąć w inny sposób z wykorzystaniem komendy xargs:
find . type -d | xargs chmod 750 find . type -f | xargs chmod 640
Polecenie find umożliwia przeszukiwanie po wielu warunkach, jak rozmiar, właściciel, prawa dostępu itp. Więcej o nim dowiesz się z podręcznika systemowego man find.
Kopiowanie bitowe
Czasem można się także spotkać z potrzebą kopiowania bitowego (np. przy tworzeniu obrazu dyskietki czy partycji). Dokonujemy tego przy pomocy polecenia dd. Ma ono dwa parametry if wskazujący źródło oraz of wskazujący cel.
dd if=/dev/fd0 of=/tmp/fd0
Określenie typu pliku
W niektórych sytuacjach może okazać się przydatne określenie typu pliku z którym mamy do czynienia. Przydatne może się okazać tutaj polecenie find służące właśnie temu celowi.
[ziutus2@localhost ziutus2]$ file /etc/lilo.conf /etc/lilo.conf: ASCII text [ziutus2@localhost ziutus2]$ file /usr/bin/file /usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, \ dynamically linked (uses shared libs), stripped
ćwiczenie 4
- Proszę przenieść się do katalogu domowego. Następnie sprawdzić przy pomocy polecenia pwd czy faktycznie tam się Państwo znajdują oraz wyświetlić listę plików łącznie z ukrytymi. Proszę zapamiętać, które pliki mają w swojej nazwie słowo bash.
- Proszę utworzyć katalog test w katalogu domowym. Następnie przejść do niego i utworzyć w nim plik test.txt. Dalej proszę zmienić jego nazwę na test2.txt. Utworzony plik skopiujmy do tego samego katalogu pod nazwą test1.txt. A plik test2.txt usuwamy. Gdy wszystko jest wykonane usuwamy także plik test1.txt i wychodzimy z katalogu i sam katalog usuwamy.
- Proszę utworzyć plik o nazwie testowy.txt. Następnie zmienić jego właściciela na użytkownika root. Podobnie należy zmienić grupę właścicieli na root. Proszę wyszukać pliki zawierające słowo bash w nazwie w katalogu domowym.