Architektura Systemów Informatycznych

Ćwiczenie 3 - Przeszukiwanie drzewa katalogów i zawartości plików, dowiązania

Przeszukiwanie drzewa katalogów i zawartości plików

Na poprzednich zajęciach przy przenoszeniu plików wykorzystywaliśmy zachłanny operator wieloznaczny pod postacią gwiazdki - *, zastępujący dowolną ilość dowolnych znaków. Jego użycie można zilustrować następującymi przykładami:

*m
wszystkie wyrazy kończące się na literę m
a*m
wszystkie wyrazy zaczynające się na a i kończące m
*
wszystkie wyrazy

Aby nieco ograniczyć zachłanność, można zastosować znak ?, zastępujący dowolny ale pojedynczy znak. Np.:

kartk?
wyszuka: kartki, kartka, kartką ale już nie karteczki

Powyższe wyrażenia znajdują zastosowanie przede wszystkim przy wszelkiego typu wyszukiwaniach plików np. przy pomocy komendy:

find ścieżka_dostępu szukane_wyrażenie
ZADANIE 3.1: Wyszukaj wszystkie pliki tekstowe w swoim folderze domowym. Wynik zapisz w postaci pliku tekstowego. Dopisz do niego listę plików z katalogu /etc zaczynających się na literę "p".

Zapytaniami odnośnie zawartości plików tekstowych można jeszcze lepiej sterować przy pomocy wyrażeń regularnych np.:

k.t
gdzie kropka "." zastępuje, podobnie jak?, dowolny znak
'kot|kat'
wyszuka wyrażenia kot lub kat. Kreska "|" symbolizuje operator OR
k[aoą]t
wyszukuje wszystkie wyrazy zawierające jedną z liter z nawiasu kwadratowego
k[^aą]t
wyszuka wyrazy, w których po literze "k" nie występuja ani "a" ani "ą"
'\>k'
wyszuka wyrazy zaczynające się na literę k

Wyrażen regularnych jest znacznie więcej, jak i możliwych kombinacji. Wzorce wyszukiwania w takiej postaci stosowane są w wielu poleceniach. Na przykład grep i egrep:

egrep wzorzec przeszukiwany_plik

Rezulatem polecenia jest lista wierszy w danym pliku, gdzie występuje poszukiwane wyrażenie.

Oprócz wyszukiwania można dokonywać, przy wykorzystaniu wyrażen regularnych, praktycznie dowolnych operacji zamiany, podstawienia itp. w samej zawartości pliku. Służy do tego bardzo rozbudowane polecenie sed. Najprostsza konstrukcja zamiany to np.

sed 's/źródło/cel/' edytowany_plik

gdzie żródło to wzorzec podlegający podobnym zasadom jak w przypadku egrep.

Do wykonania poniższego zadania potrzebna będzie lista studentów znajdująca się pod adresem: http://earthisflat.net/download/dydaktyka/geoinfo1.csv.tar.gz.

ZADANIE 3.2:
1. Ściągnij i rozpakuj listę studentów.
2. Wyszukaj swoje nazwisko i sprawdź do której grupy należysz.
3. Zapisz listę wszystkich osób z tej samej grupy w oddzielnym pliku.
4. Z pliku usuń wszystkie cudzysłowy. Rozdziel imiona i nazwiska przy pomocy przecinka.
5. Usuń numery indeksów, zostawiając jednocześnie liczbę porządkową.

Dowiązania

Dowiązania lub linki w systemach typu UNIX dzielą sia na "twarde"(hardlink) i "symboliczne" (symlink). Różnią się one od powszechnie stosowanych "skrótów" i "aliasów" w systemach z rodziny Windows i MacOS.

Różnice są najmniejsze w przypadku symlinków i skrótów. W obu przypadkach mamy, w pewnym uproszczeniu, do czynienia ze specjalnym plikiem przenoszącym do folderu docelowego. Jednak symlink jest, z racji swojego miejsca w systemie plików znacznie bardziej uniwersalny - ma osobną ścieżkę dostępu, jest zarządzany na poziomie systemu plików i może mieć uprawnienia niezależne od miejsca docelowego (od Visty istnieje możliwość tworzenia ich także w systemach Windows).

Hardlink jest tworem zupełnie odmiennym. Dla systemu plików stanowi dodatkową nazwę dla tego samego pliku (ilość istniejących linków jest podawana w poleceniu ls -l). Oznacza to między innymi, że ma takie same uprawnienia oraz, że dopiero skasowanie ostatniego egzemplarza kasuje dane. Hardlinków nie można tworzyć dla katalogów a cel odniesienia musi istnieć w chwili tworzenia/.

Linki (domyślnie twarde) tworzone są przy pomocy polecenia ln:

ln   miejsce_docelowe  nazwa_linku

Aby utworzyć symlink należy wywołać polecenie z paramatrem -s.


ZADANIE 3.3:
1. Utwórz na Pulpicie link do pliku w katalogu cw.
2. Utwórz w folderze /var/www link symboliczny do folderu cw.

Autor: Michał Rzeszewski, Instytut Geokologii i Geoinformacji, UAM Poznań, mail: mrzeszewski@gmail.com
Creative Commons License
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.