Na tych zajęciach będziesz dużo pracować z dokumentacją. Będzie cię interesować pomoc do poleceń: echo, cat, less, more, tail, head, cut, sort, uniq, wc, grep, tr, sed.
Zadanie
Spróbuj bez użycia edytora utworzyć plik tekstowy o nazwie ja który będzie zawierał twoje imię i nazwisko. Odpowiedź na zajęciach.
Za pomocą polecenia cat możesz wyświetlić zawartość tego pliku (cat ja).
Teraz dodamy do pliku listę wszystkich plików i katalogów znajdujących się w twoim katalogu bieżącym (ls >> ja). Powinieneś wiedzieć, że ls wyświetla zawartość bieżącego katalogu, natomiast >> oznacza, że wynik polecenia ls zostanie dopisany do pliku o nazwie ja a nie wyświetlony na ekranie. >> oznacza dopisywanie do pliku (istniejąca zawartość pliku nie jest kasowana); > oznacza zapisywanie do pliku (istniejąca zawartość pliku jest kasowana).
Zadanie
Nadpisz plik ja `długą' listą wszystkich plików i katalogów z twojego katalogu domowego (polecenie ls -l ).
Obejrzyj zawartość pliku ja za pomocą trzech poleceń cat (cat ja), more (more ja) i less (less ja, ) powinieneś teraz zauważyć czym się te polecenia różnią.
Czasami nie interesuje nas cała zawartość pliku tylko kilka konkretnych wierszy. Za pomocą polecenia head możesz obejrzeć np. kilka (domyślnie 10) pierwszych wierszy w pliku (head ja). Analogicznie polecenie tail może służyć do obejrzenia kilku (domyślnie 10) ostatnich wierszy w pliku. Przejrzyj manual dla poleceń tail i head
Zadania
Wyświetl tylko pierwszą linię z pliku ja.
Wyświetl tylko ostatnią linię z pliku ja.
Za pomocą polecenia wc możesz obliczyć ile plik (bądź ogólnie jakiś zbiór danych tekstowych) ma linii, słów i bajtów. (wc ja). Przejrzyj manual dla polecenia wc. Sprawdź w jaki sposób wyświetlić tylko jedną z liczb np. tylko ilość linii. Jeśli polecenie wc wywołasz baz podania nazwy pliku, wtedy będziesz mógł wpisać tekst z klawiatury, po naciśnięciu Ctrl+D, wszystko co wpiszesz zostanie wysłane do polecenia wc.
Z przetwarzaniem potokowym, o którym mówimy na dzisiejszych zajęciach wiąże się znak | (to ten znak który na klawiaturze zazwyczaj współdzieli klawisz z \). | służy do tego aby wynik jednego polecenia przekazać `do obróbki' innemu poleceniu. Na przykład policzmy ile w katalogu /etc jest plików które kończą się napisem .conf (ls /etc/*.conf | wc -l). Samo polecenie ls /etc/*.conf wypisałoby nam pliki z rozszerzeniem .conf ale dodanie '| wc -l' powoduje że te wszystkie pliki są przekazane do polecenia wc -l które z definicji liczy ilość wierszy w danych wejściowych
Zadania
Wiedząc do czego służy | wypisz z pliku ja
- linie od 5 do 7
- linie 2,3 licząc od końca pliku
Za pomocą polecenia cut możesz wycinać fragmenty z wierszy z danych wejściowych np. z pliku. Obejrzyj sobie zawartość pliku /etc/passwd. Każdy wiersz w tym pliku podzielony jest na 7 pól oddzielonych od siebie znakiem :. Polecenie cut standardowo zakłada że separatorem pól w danych wejściowych jest tabulator, więc jeśli separator jest inny, należy go wskazać za pomocą opcji -d, za pomocą opcji -f wskazujemy jakie pola chcemy pobrać (cut -d `:' -f 3 /etc/passwd). Przejrzyj manual do polecenia cut, zwróć uwagę jak można specyfikować pola które chcemy pobrać.
Zadanie
Wytnij za pomocą jednego polecenia z pliku ja listę uprawnień, nazwę użytkownika i nazwę grupy.
Polecenie sort jak sama nazwa mówi służy do sortowania. Domyślnie sortowanie jest leksykograficzne (słownikowe) ale za pomoca opcji -n możemy sortować poprawnie liczby. Poza tym sortowanie może być wykonane po całym wierszu bądź po jakiejś kolumnie jeśli podobnie jak w przypadku polecenia cut jest jakiś separator pól. Sprawdź manual dla polecenia sort.
Zadania
Wyświetl zawartość pliku /etc/passwd posortowaną rosnąco po identyfikatorze grupy (jeśli nie wiesz sprawdź w manualu dla pliku passwd które pole to id grupy, man 5 passwd)
Polecenie uniq działa poprawnie dla posortowanych plików i wyświetla np. wiersze które są unikalne, lub np. wiersze które unikalne nie są. Sprawdź manual dla polecenia uniq.
Zadanie
-Wyświetl jakie powłoki występują w pliku /etc/passwd (nazwa powłoki to ostatnie pole w każdej linijce). W wyniku każda powłoka powinna pojawić się tylko raz. Interesuje nas tylko nazwa powłoki a nie cała ścieżka (czyli jeśli w linijce ostatnie pole to /bin/bash to w wyniku powinien pojawić się tylko napis bash).
-Stwórz sobie dwa różne pliki tekstowe składają się z liczb (jedna liczba w jednej linii). Napisz polecenie które pokaże tylko te liczby, które występują w pierwszym pliku a nie występują w drugim
Polecenie tr służy do zamiany znaków na inne w danych wejściowych, można na przykład zamienić małe litery `a' na duże `A' (echo `ala' | tr `a' `A'). Można zamienić miejscami `a' z `x', `b' z `y' a `c' z `z' (cat /etc/passwd | tr `abcxyz' `xyzabc' ) i mamy zaawansowany algorytm szyfrujący . Przejrzyj manual dla polecenia tr.
Zadanie
Co się stanie jeśli w poleceniu tr jeden zbiór jest większy od drugiego np.
cat /etc/passwd | tr `ab' `123'
cat /etc/passwd | tr `abc' `12'
Za pomocą polecenia grep można wyszukiwać określonych napisów w plikach
np. grep 'abrakadabra' /etc/passwd wyszuka linie w pliku etc/passwd zawierające napis abrakadabra
grep opcje:
przykładowe opcje:
-c - wyświetlne są tylko nazwy plików i liczba wierszy, które zawierają wzorzec
-i - ignorowanie wielkości liter
-l - wypisywanie nazw plików zawierających wzorzec
-n - dodatkowo wyświetlane są numery wierszy
-v - wypisywane są wiersze nie zawierające wzorca
-f - wzorce pobierane są z pliku określonego nazwą wymienioną za opcją
-E - interpretuje wzorzec jako rozszerzone wyrażenie regularne
operatory podstawowych wyrażeń regularnych:
., $, ^, *, \, [], [^]
operatory dodatkowe
\{m\}, \{m,\}, \{m,n\}, \(wyr_reg)\), \n, \\
Zadanie
Zadanie 4. Utworzyć plik adresy.txt podany poniżej. Wyświetl wszystkich:
- zamieszkałych w Gdyni lub Gdansku
- wszystkich którzy mają adresy e-mail
plik: adresy.txt
Jan Nowak, Gdansk, ul. Dluga 12
Piotr Kowalski, Gdynia, ul. Swietojanska 14, pkowalski@test.pl
Anna Sienkiewicz, Warszawa, ul. Marszalkowska 1
Beata Prus, Gdansk, ul. Prosta 11/3, bprus@w.com
Pawel Chopin, Gdynia, ul. Szeroka 1a/12
Zadanie
Korzystając z polecenia grep wyświetlić z pliku info utworzonego poniżej:
- linie zawierające rc z dowolnym numerem 0 do 9 (np. rc2 )
- liczbę wierszy zawierających rc
- nazwę pliku i liczbę wierszy z wzorcem
- nazwę pliku i liczbę wierszy bez wzorca
- linie zawierające pliki o sekwencji praw -rw-r--r--
oraz z pliku info2:
- tylko linie z katalogami
- tylko linie z plikami zwykłymi
Polecenia tworzące pliki info i info2
ls -al /etc/ > ~/info
ls -al ~ > ~/info2
Polecenie sed zostanie omówione na zajęciach lub będzie zadaniem domowym.
Zadania
- Odszukaj w sieci co to są strumienie stdin, stout, stedrr i do czego przydaje się /dev/null
- Wyświetl plik /etc/passwd z podziałem na strony przyjmując, że strona ma 5 linii tekstu.
- Korzystając z polecenia cat utwórz plik tekst3, który będzie składał się z zawartości pliku tekst1,
ciągu znaków podanego ze standardowego wejścia (klawiatury) i pliku tekst2.
- Wyświetl zawartość /etc/passwd w jednej linii
- Zlicz wszystkie pliki znajdujące się w katalogu /etc i jego podkatalogach
- Napisać polecenie zliczające sumę znaków z pierwszych trzech linii pliku /etc/passwd
- Wyświetl listę plików z aktualnego katalogu, zamieniając wszystkie małe litery na duże.
- Wyświetl listę plików w aktualnym katalogu, posortowaną według rozmiaru pliku
-Wyświetl zawartość pliku /etc/passwd posortowaną wg numerów UID w kolejności od
największego do najmniejszego
- Wyświetl zawartość pliku /etc/passwd posortowaną najpierw wg numerów GID w
kolejności od największego do najmniejszego, a następnie UID