man textutils
(jeżeli nie jest dostępne w systemie, spróbuj tutaj)man grep
i/lub grep w Linux WikiZadania (ang. jobs) to programy uruchamiane w sesji przez powłokę.
&
),Powyższe polecenia są wbudowane w shell i są opisane w manualu shella!
ps -A
(Sun), ps -ax
(Linux), a także ps -u user
, ps aux|grep user
kill -9
jobs -l
tty
ps -t`tty`
man textutils
(większość w.w. poleceń była kiedyś w pakiecie GNU textutils; jeżeli ten manual nie jest dostępny w systemie, spróbuj tutaj)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:
[proces] > [plik] # przekierowanie stdout do pliku (NADpisanie) [proces] 2> [plik] # przekierowanie strumienia 2 (stderr) do pliku (NADpisanie) [proces] >> [plik] # przekierowanie stdout do pliku (DOpisanie) [proces] < [plik] # przekierowanie stdin z pliku # 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łady:
ls | wc ps | sort # Bardziej złożone filtry: ps aux | grep bash | wc cut -d ':' -f 5 /etc/passwd | grep -i daemon | wc -l
Przypomnienie z poprzednich zajęć - podstawianie wyników poleceń w linii poleceń jest realizowane przez odwrotny apostrof (`
), na przykład:
echo "To jest system" `uname` "na maszynie " `hostname` # Wyświetli: To jest system Linux na maszynie spk-ssh
Przy zamykaniu powłoki do wszystkich procesów z niej uruchomionych wysyłany jest sygnał HangUp (HUP
).
Aby pozostawić jakieś polecenie pracujące w tle po zamknięciu shella, należy je uruchomić za pomocą nohup:
nohup polecenie
Ćwiczenie wykonywać w GNU Bash.
lynx www.uj.edu.pl
lynx www.agh.edu.pl
jobs
,lynx www.pk.edu.pl
jobs
,fg %2
,kill %3
jobs
,
Jeżeli zadanie nie znika po kill
, należy użyć opcji -9
.
Podobne ćwiczenie powtórzyć dla innych programów, np. less, mc, itp.
kill -l
spis wszystkich sygnałów.>
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
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
Należy ponownie wykonać ćwiczenia 1-4 z sekcji IV bez użycia plików pośrednich, tylko odpowiednio łączyć stdin z stdout, np.
who | sort | grep 'k' | 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 who | awk '{print $1;}' | sort | uniq
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 https://nbp.pl/statystyka-i-sprawozdawczosc/kursy/tabela-a/ 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,1251 dolar amerykański 1 USD 3,8746 dolar australijski 1 AUD 2,9716 dolar Hongkongu 1 HKD 0,4988 dolar kanadyjski 1 CAD 3,0793 dolar nowozelandzki 1 NZD 2,7296 dolar singapurski 1 SGD 2,8851 euro 1 EUR 4,6073 forint (Węgry) 100 HUF 1,2557 frank szwajcarski 1 CHF 4,1704 funt szterling 1 GBP 5,3375 hrywna (Ukraina) 1 UAH 0,1398 jen (Japonia) 100 JPY 3,5653 korona czeska 1 CZK 0,1759 korona duńska 1 DKK 0,6196 korona islandzka 100 ISK 3,0963 korona norweska 1 NOK 0,4520 korona szwedzka 1 SEK 0,4524 kuna (Chorwacja) 1 HRK 0,6083 lej rumuński 1 RON 0,9423 lew (Bułgaria) 1 BGN 2,3557 lira turecka 1 TRY 0,4882 nowy izraelski szekel 1 ILS 1,1747 peso chilijskie 100 CLP 0,5405 peso filipińskie 1 PHP 0,0796 peso meksykańskie 1 MXN 0,1862 rand (Republika Południowej Afryki) 1 ZAR 0,2596 real (Brazylia) 1 BRL 0,7036 ringgit (Malezja) 1 MYR 0,9399 rubel rosyjski 1 RUB 0,0509 rupia indonezyjska 10000 IDR 2,6916 rupia indyjska 100 INR 5,3464 won południowokoreański 100 KRW 0,3427 yuan renminbi (Chiny) 1 CNY 0,5948 SDR (MFW) 1 XDR 5,5207
Uwaga! Od 2023 roku strona NBP została przebudowana i aktualnie zawiera zabezpieczenia przeciw pobieraniu zawartości przez boty. Nie ma prostego shellowego sposobu aby pobrać jej zawartość (nie zadziała ani curl
ani ncat
ani inne narzędzia shellowe). Dlatego stronę należy otworzyć w przeglądarce, zapisać jej kod HTML na dysku a następnie rozpocząć filtr od cat tabela-a.html