- Bill, wyrzuć śmieci. - Nie chce mi się. - sudo Bill, wyrzuć śmieci. - Już idę... /* nadesłał: Maciej Urbanek, IS 2012 */
Samodzielnie należy przed tym laboratorium przygotować:
Zadania (ang. jobs) to programy uruchamiane w sesji przez powłokę.
&
),ps -A
(Sun), ps -ax
(Linux), a także ps -u user
, ps aux|grep user
kill -9
W pubie siedzi grupka informatyków, obok grupka dresiarzy. Drudzy zachowują się agresywnie i podśmiewają się z postury geeków i ich flanelowych wdzianek. Atmosfera gęstnieje, nie wiadomo czy nie dojdzie do awantury. Wtem… dzwoni telefon. [odbiera informatyk] - Co??? W ogóle ci nie odpowiada? W ogóle się ciebie nie słucha? Próbowałeś już „nice”? Taak? Nic nie dało..? Ok. Dobra — skilluj go. [odkłada słuchawkę] W tym momencie najbardziej napakowany z dresów wstaje i z wielkim podziwem odzywa się do informatyka: - Szacun. /* nadesłał: Filip Szukała, IS 2013 */
Jest to zestaw podstawowych narzędzi GNU operujących na tekście, w tym:
Proszę przeglądnąć manule do w.w.!
Uwaga: warto też poczytać man textutils
(większość w.w. poleceń była kiedyś w pakiecie GNU textutils).
Program grep służy do wyszukiwania zadanych wyrażeniami regularnymi wzorców w tekście.
grep napis [plik]
Przydatne opcje:
-i
ignoruje wielkość znaków-v
odwraca działanie grep (czyli wyświetl wszystkie linie, które NIE zawierają napisu). Każdy proces pracujący w środowisku Unix komunikuje się z otoczeniem m.in. przez strumienie. Domyślnie są otwierane 3:
Powłoka pozwala na przekierowanie strumieni, w sh znakami:
>
przekierowanie stdout do pliku (nadpisanie)>
>
jak wyżej, dopisanie<
przekierowanie stdin z pliku [n] > plik [n] >> plik < plik
Przykłady:
ps > foo w 2 > bar ls >foo 2>bar
Przydatny przy przekierowaniu stderr (2) jest /dev/null
. Pozwala na pozbycie się danych.
Powłoka pozwala na realizowanie komunikacji między procesami przez łączenie strumieni, uruchamiane przez znak |
(ang. pipe).
Powoduje on połącznie stdout zadania 1 z stdin zadania 2. Przykład:
ls | wc ps | sort
Pozwala to na tworzenie dowolnie złożonych filtrów:
ps -A | grep tcsh | wc cut -d ':' -f 5 /etc/passwd | grep -i jacek | wc -l
Podstawianie wyników poleceń w linii pleceń jest realizowane przez odwrotny apostrof (klawisz tyldy, nad tabulatorem), na przykład:
$ echo "To jest system" `uname` "na maszynie "`hostname`
To jest system Linux na maszynie enterprise
Ćwiczenie wykonywać w GNU Bash.
lynx www.agh.edu.pl
lynx www.uj.edu.pl
jobs
,lynx www.pk.edu.pl
jobs
,fg %2
,kill %3
jobs
,
O ile zadanie nie znika po kill
trzeba uzyc opcji -9
.
Podobne ćwiczenie powtórzyć dla innych programów, np. vi (sprawdzić czy edytor nie uruchamia dodatkowej powłoki zamiast suspend), less, mc, itp.
kill -l
spis wszystkich sygnałów.jobs -l
tty
(patrz Lab1)ps -t`tty`
>
i >
>
Na przykład:ps ps > plik1 more plik1 ls > plik2 more plik2 ps >> plik2 more plik2
kill 1 kill 1 1>a 2>b
Uwaga! przekierowania są inicjalizowane przez shell przed uruchomieniem polecenia! Dlatego też, jeżeli mamy plik do posortowania, np:
who >plik
i wykonamy:
sort plik >plik
otrzymamy pusty plik, gdyż jego zawartość zostanie skrócona do zera przed posortowaniem. A uruchamiając:
sort plik >>plik
otrzymamy w plik
u posortowaną zawartość dopisaną do oryginalnej, nie posortowanej!
who > spis
sort spis > spis.alf
head spis.alf head spis.alf >spis.alf.pocz tail spis.alf tail spis.alf >spis.alf.kon
ia.agh.edu.pl
Należy ponownie wykonać ćwiczenia z p. 4.4 nie używając plików pośrednich, tylko odpowiednio łączyć stdin z stdout, np.
who | sort | grep 'ia.agh.edu.pl' | head
Inne przykłady:
ls | wc ps | sort ps -A | grep tcsh ps | head -n 1 who | wc who | sort nice du -sk /usr/local/* 2>/dev/null | sort -rn | head
Proszę przeprowadzić jak najwięcej własnych eksperymentów z wykorzystaniem wszystkich znanych poleceń!
Używając wyłącznie poleceń grep, cut, tr, head, tail, na podstawie strony http://nbp.pl/home.aspx?f=/kursy/kursya.html stworzyć filtr generujący tekstową tabelę kursów walut.
Przykładowy wynik końcowy może wyglądać następująco:
bat (Tajlandia) 1 THB 0,0895 dolar amerykański 1 USD 2,8953 dolar australijski 1 AUD 2,6376 dolar Hongkongu 1 HKD 0,3730 dolar kanadyjski 1 CAD 2,8452 dolar nowozelandzki 1 NZD 2,0405 dolar singapurski 1 SGD 2,0657 euro 1 EUR 3,9136 forint (Węgry) 100 HUF 1,4782 frank szwajcarski 1 CHF 2,7316 funt szterling 1 GBP 4,3350 hrywna (Ukraina) 1 UAH 0,3633 jen (Japonia) 100 JPY 3,1991 korona czeska 1 CZK 0,1539 korona duńska 1 DKK 0,5260 korona estońska 1 EEK 0,2501 korona islandzka 100 ISK 2,2784 korona norweska 1 NOK 0,4872 korona szwedzka 1 SEK 0,4020 kuna chorwacka 1 HRK 0,5392 lej rumuński 1 RON 0,9572 lew bułgarski 1 BGN 2,0010 lira turecka 1 TRY 1,8767 lit litewski 1 LTL 1,1334 łat łotewski 1 LVL 5,5281 peso filipińskie 1 PHP 0,0634 peso meksykańskie 1 MXN 0,2295 rand (RPA) 1 ZAR 0,3933 real brazylijski 1 BRL 1,6079 ringgit malezyjski 1 MYR 0,8722 rubel rosyjski 1 RUB 0,0987 rupia (Indonezja) 10000 IDR 3,1798 won (Korea Płd.) 100 KRW 0,2550 yuan renminbi (Chiny) 1 CNY 0,4242 SDR (MFW) 1 XDR 4,4149
Konstrukcję filtru można rozpocząć poleceniem:
echo -e 'GET /home.aspx?f=/kursy/kursya.html HTTP/1.0\n\n' | nc nbp.pl 80
które umożliwia wyświetlenie zawartości strony.
Przy zamykaniu powłoki do wszystkich procesów z niej uruchomionych wysyłany jest sygnał HangUp (HUP
).
Aby pozostawić jakieś polecenie pracujące w tel po zamknięciu shella, należy je uruchomić:
nohup polecenie