Kilku nowych przyjaciół
Polecenia finger
i passwd
Na pierwszych ćwiczeniach poznaliśmy polecenie who
, pozwalające dowiedzieć się, którzy użytkownicy korzystają z systemu. Podobne działanie oferuje program finger
, który jednak pozwala poznać szczegółowe informacje o tych użytkownikach.
Sprawdź działanie programu finger
. Wywołaj go z opcją -l
i porównaj otrzymane efekty. Jakie informacje można w ten sposób uzyskać?
Dowiedz się, do czego służy program passwd
. Jeśli chcesz, możesz zmienić swoje hasło do sieci wydziałowej, wywołując go bez argumentu.[1] Spróbuj też zmienić hasło innego użytkownika. Czy jest to możliwe? Jak myślisz, kto może zmienić hasło dowolnego użytkownika systemu?
[1] Konfiguracja wydziałowej sieci sprawia, że wywołanie programu passwd
z konta uwierzytelnionego przy pomocy protokołu Kerberos pozwoli na zmianę hasła wykorzystywanego do dostępu do wszystkich usług sieciowych.
Filtry wc
, cut
, tr
oraz uniq
Nauczyliśmy się już korzystać z filtrów cat
, tac
, head
, tail
, sort
oraz grep
. W codziennej pracy mogą się jednak przydać także poniższe.
O zachowaniu wymienionych dalej programów będziemy mówić w kontekście operowania na danych pochodzących ze standardowego wejścia. Każdy z nich radzi sobie jednak równie dobrze z plikami – wystarczy podać ich nazwy jako argumenty.
Program wc
(ang. word count) pozwala badać liczebność (w sensie pewnych miar) danych ze standardowego wejścia. Przydatne opcje:
-c | wypisz liczbę bajtów (rozmiar pliku w bajtach) |
-m | wypisz liczbę znaków |
-l | wypisz liczbę wierszy |
-w | wypisz liczbę wyrazów |
-L | wypisz długość najdłuższej linii |
Do ilu elementów katalogu /etc
inni użytkownicy (other
) mają prawo odczytu?
$ ls -l /etc | tail -n +2 | grep '^.\{7\}r' | wc -l
Program cut
pozwala wpłynąć na ograniczanie danych ze standardowego wejścia w poziomie (według kolumn). Przydatne opcje:
-b XXX | wypisz tylko wskazane bajty, np. 1,4 , 1-5 itp. |
-c XXX | wypisz tylko wskazane znaki |
-d XXX | ustaw ogranicznik kolumn na XXX |
-f XXX | wypisz tylko wskazane pola (kolumny) |
-s | nie wypisuj linii, które nie zawierają żadnego ogranicznika kolumn |
Wyświetl listę uprawnień (i tylko uprawnień) do elementów katalogu /etc
.
$ ls -l /etc | tail -n +2 | cut -c 2-10
W pliku /etc/passwd
znajduje się lista lokalnych użytkowników systemu. Ogranicz ją do nazwy użytkownika (pierwsza) i nazwy powłoki, z której ten użytkownik korzysta (ostatnia kolumna).
$ cat /etc/passwd | cut -d : -f 1,7
Program tr
pozwala na zamianę znaków z jednego ciągu na te z drugiego ciągu znaków.
-d | zamiast zamieniać, usuń wskazane znaki |
-s | zamień ciągi wskazanych znaków na ich pojedyncze wystąpienie |
Zmodyfikuj rozwiązanie poprzedniego ćwiczenia tak, aby poszczególne kolumny oryginalnego pliku /etc/passwd
były rozdzielone znakiem tabulatora.
$ cat /etc/passwd | cut -d : -f 1,7 | tr ":" "\t"
Wyświetl listę lokalnych użytkowników systemu w postaci nazw użytkowników oddzielonych znakiem przecinka.
$ cat /etc/passwd | cut -d : -f 1 | tr "\n" ","
Program uniq
pozwala badać unikalność wierszy na standardowym wejściu. Przydatne opcje:
-c | wyświetl statystykę częstości występowania poszczególnych wierszy |
-d | wypisz te linie, które się powtarzają |
-i | ignoruj wielkość liter |
-u | wypisz te linie, które się nie powtarzają |
Wyświetl statystykę częstości występowania poszczególnych uprawnień dla członków grup (group
) do elementów w katalogu /etc
.
$ ls -l /etc | tail -n +2 | cut -c 5-7 | sort | uniq -c
Uniwersytet Biurokratyczny zatrudnił Cię na stanowisku młodszego administratora kont studenckich. Dostarczono Ci archiwum students.zip, zawierające kartoteki studentów w formie plików txt
o nazwach postaci imię_nazwisko.txt
. Jako że jutro ma się rozpocząć kontrola Państwowej Komisji Biurokratycznej, musisz pilnie udzielić rektorowi odpowiedzi na następujące pytania:
- Ilu jest studentów?
- Ile różnych imion mają studenci?
- Ilu studentów ma imię o długości 5 znaków?
- Ilu jest studentów, których imię kończy się na "e", a nazwisko na "o"?
- Jak rozkłada się częstość występowania kolejnych liter na drugim miejscu w nazwisku?
Zaproponuj po jednym poleceniu, zwracającym odpowiednie dane.
Program more
, czyli starszy brat programu less
Zanim program less
osiągnął popularność, do wygodnego wyświetlania długich danych wykorzystywano program more
. Jego możliwości są jednak ubogie (w porównaniu do programu less
), dlatego pominiemy jego dokładny opis.
Korzystając z podręcznika programu more
, zapoznaj się z jego obsługą. Jakie największe, Twoim zdaniem, wady ma ten program?
Porównywanie plików – programy diff
i cmp
Czasami zachodzi potrzeba porównania zawartości dwóch plików, choćby po to, aby łatwo dostrzec, w których miejscach zostały wprowadzone zmiany. Do tego zadania służą programy diff
i cmp
.
Zapoznaj się z podręcznikami programów diff
i cmp
. Przetestuj ich działanie w praktyce.
Kilka poleceń związanych z pracą w sieci
Wiele współczesnych programów korzysta z zasobów sieciowych. Na przykład, gdy aktualizujemy oprogramowanie zainstalowane w komputerze (choćby samo nie wymagało połączenia z siecią), odpowiednie pliki pobieramy z internetu.
Systemy uniksopodobne, w tym Linux, udostępniają narzędzia do zarządzania komputerem jako urządzeniem sieciowym.
Program ifconfig
pozwala zarządzać interfejsami sieciowymi komputera, w tym włączać je i wyłączać oraz wyświetlać informacje o ich statusach. W chwili obecnej, ze względu na swoją przestarzałość, program ifconfig
jest wypierany przez oprogramowanie z pakietu iproute2
.
Zapoznaj się z dokumentacją programu ifconfig
. Jakie operacje można wykonać za jego pomocą?
Program ping
pozwala wysłać do zdalnego hosta żądanie ECHO_REQUEST
w ramach protokołu ICMP
. Przydatne opcje:
-c X | wyślij X żądań |
-f | tryb flood |
-i X | ustaw odstęp pomiędzy kolejnymi żądaniami na X sekund |
Wyślij do wybranego serwera 10 żądań ECHO_REQUEST
w odstępach 2-sekundowych.
Program netstat
to jedno z najbardziej rozbudowanych konsolowych narzędzi sieciowych. Pozwala na wszechstronną analizę połączeń sieciowych realizowanych przez komputer.
Korzystając z podręcznika programu netstat
, dowiedz się, jakie możliwości daje ten program. Wypróbuj kilka wybranych opcji.
Powłoka Bash – tips & tricks
Historia poleceń
Powłoka Bash przechowuje historię wykonywanych poleceń. Korzystając z klawiszy strzałki w dół i w górę, można – na poziomie powłoki – przywoływać wykonywane ostatnio polecenia. Przeszukiwanie historii w ten sposób może być jednak uciążliwe. Na szczęście historię można wyświetlić w postaci wygodnej listy. Aby to zrobić, można wykonać polecenie
$ history | less
Historia ta obejmuje domyślnie 500 ostatnich poleceń, a każdy element ma przypisany numer. Aby wykonać ponownie polecenie oznaczone, przykładowo, numerem 67, należy wywołać
$ !67
Możliwe jest też skorzystanie z następujących ułatwień:
!!
– powtarza ostatnie polecenie,!ciąg
– powtarza ostatnie polecenie rozpoczynające się od ciąguciąg
,!? ciąg
– powtarza ostatnie polecenie zawierające ciągciąg
.
Uzupełnianie
Kiedy podczas wpisywania polecenia wciśniemy klawisz Tab, powłoka Bash uzupełni (o ile to możliwe) brakujące znaki. W zależności od okoliczności, będzie to nazwa dostępnego polecenia lub pliku.
Rozpocznij polecenie
$ ch
i wciśnij klawisz Tab. Liczba dopasowań jest większa niż jeden, dlatego wciśnij klawisz Tab ponownie, aby wyświetlić wszystkie możliwości. Wprowadź znak m
, uzyskując
$ chm
i wciśnij klawisz Tab raz jeszcze. Co się stało?
Wpisz
$ cd ~/Desk
i wciśnij klawisz Tab. Co się stało?
Dopasowywanie wzorów
Powłoka Bash udostępnia narzędzia dopasowywania wzorów, umożliwiające wygodne operowanie na plikach o nazwach, które można przedstawić w postaci wzoru – czyli uproszczonego wyrażenia regularnego.
Połącz się zdalnie z serwerem lts.wmi.amu.edu.pl
i wykonaj w katalogu /dev
następujące polecenia:
$ ls -ld a*
$ ls -ld ?a*
$ ls -ld *[ag]
$ ls -ld [ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
$ ls -ld [^[:lower:]]*
$ ls -ld [[:alpha:]]*
Za co odpowiada opcja -d
polecenia ls
? Jak działają kolejne polecenia?
Jakie polecenie jest tak naprawdę wykonywane, gdy wywołujemy trzecie polecenie z listy z poprzedniego ćwiczenia? Wymyśl kilka ciekawych zastosowań dopasowywania wzorców.
Dlaczego polecenie
$ ls -ld [A-Z]*
zachowuje się w taki, a nie inny sposób? (Podpowiedź: wyświetlona lista obejmuje wszystkie elementy, którzych nazwa zaczyna się od litery innej niż a
.)
We wzorcach, podobnie jak w wyrażeniach regularnych w poleceniu grep
, możemy stosować klasy symboli. W jednym z powyższych ćwiczeń były to klasy lower
i alpha
.
Korzystając z dostępnych źródeł, dowiedz się, z jakich innych klas symboli można korzystać. Przetestuj ich działanie w praktyce.
"alnum", "alpha", "ascii", "blank", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", "word" oraz "xdigit".
Jeśli opcja extglob
powłoki jest włączona, wzorce dopasowań mogą być bardziej skomplikowane. Obejmują one:
?(wzorzec)
– dopasowuje zero lub jedno wystąpienie wzorca,*(wzorzec)
– dopasowuje zero lub więcej wystąpień wzorca,+(wzorzec)
– dopasowuje jedno lub więcej wystąpień wzorca,!(wzorzec)
– dopasowuje wszystko, co nie odpowiada wzorcowi.
Jaki będzie efekt wykonania poniższego polecenia?
$ cp -r +([0-9])*([[:upper:]]) kopia
Wyświetl wszystkie elementy katalogu /dev
, których nazwa:
- składa się wyłącznie z małych liter,
- kończy się cyfrą,
- rozpoczyna się ciągiem co najmniej trzech małych liter,
- rozpoczyna się od znaku innego, niż t (wskaż dwa rozwiązania).
$ ls -ld +([[:lower:]])
$ ls -ld *[[:digit:]]
$ ls -ld [[:lower:]][[:lower:]][[:lower:]]*
$ ls -ld [^t]*
lub$ ls -ld !(t*)