**~~#~~.** Podaj komendę, która w katalogu ''/sys'' wyszuka wszystkich plików o nazwie ''cpu''. **~~#~~.** Podaj komendę, która w katalogu ''/sys'' wyszuka wszystkich plików zawierających w nazwie ''threshold''. **~~#~~.** Podaj komendę, która w katalogach ''.config'' oraz ''.local'' znajdujących się w twoim katalogu domowym wyszuka pliki których nazwa kończy się na ''rc'' **~~#~~.** Podaj nazwę pliku istniejącego w katalogu ''/usr/include'' którego nazwa zawiera ''message'' i w ścieżce do którego jest katalog ''json''. **~~#~~.** Podaj komendę, która w katalogu ''/usr/share'' wyszuka wszystkich symlinków których nazwa zawiera ''fullscreen''. **~~#~~.** Podaj komendę, która w twoim katalogu domowym wyszuka pliku zmodyfikowanie między 7 a 5 dni temu. **~~#~~.** Podaj komendę, która w twoim katalogu domowym wyszuka pliki z rozszerzeniem ''txt'' i pokaże dla każdego znalezionego pliku jego pierwszą linię. **~~#~~.** Podaj komendę, która w twoim katalogu domowym wyszuka pliki z rozszerzeniem ''txt'' i spakuje je do archiwum o nazwie ''pliki_txt.tar.xz''. \\ (Tworzenie takiego archiwum to komenda ''tar cJf pliki_txt.tar.xz //lista plików//''. Komendą ''tar tf pliki_txt.tar.xz'' sprawdzisz zawartość archiwum.) **~~#~~.** Podaj komendę, która w katalogu ''/usr/include/'' wyszuka pliki których nazwa zaczyna się od ''std'' i następnie wypisze ilość wierszy w każdym z tych plików. **~~#~~.** Podaj komendę (używającą potoku) która powtórzy poprzednie zadanie, ale zwróci wyniki posortowane po ilości linii w plikach. ------------------------------- **~~#~~.** **W teście będzie jedno polecenie z treścią:** \\ Skopiuj podany plik (np. ''/home/jkonczak/so/old_mcdonald_mistyped.txt'' na serwerze polluks) w dowolne miejsce, następnie wykonaj podaną komendę która pokaże co masz poprawić w pliku (np. ''/home/jkonczak/so/old_mcdonald_check.sh //nazwa_twojej_kopii//'' na serwerze polluks). Popraw plik, następnie podaj sumę kontrolną MD5 poprawionego pliku. \\ Sumę kontrolną liczy się komendą ''md5sum < //nazwa_twojej_kopii//''. \\ (Na maszynie do testów nie ma graficznych edytorów tekstowych.) ------------------------------- // Pamiętaj o ćwiczeniach z potoków na podstronie [[so:potoki_cwiczenia]] z przykładowymi rozwiązaniami [[so:potoki_cwiczenia:solutions|tutaj]]. // **~~#~~.** Podaj komendę (lub potok) który policzy ile procesów ma uruchomionych użytkownik student. **~~#~~.** Podaj komendę (potok) które wyświetli wszystkie grupy do których należy jakiś plik bądź katalog w katalogu ''/dev''. **~~#~~.** Podaj komendę (potok) które wyświetli pięć największych plików w katalogu ''/usr/lib'' które nie mają ustawionego prawa do wykonywania. **~~#~~.** Podaj komednę (potok), która wykorzysując komendę ''find -ls'' znajdzie największy plik w twoim katalogu domowym.
**~~#~~.** Podaj komendę (potok), która z pliku ''pan-tadeusz.txt'' (wziętego np. stąd: %%https://wolnelektury.pl/media/book/txt/pan-tadeusz.txt%%) wyciągnie linie poprzedzające linie w których znajduje się słowo ''Gerwazy''. \\ Np:
┌            plik wejściowy                           ┬ → ┬              ma zostać                      ┐
│ Dech wciągnął, brzuch i piersi ścisnął co najwężéj: │ → │  Jak wąż głowę i ogon gdy chowa w przeguby, │
│ Aż jednym razem kurczy, wydyma się, pręży;          │ → │                                             │
│ Jak wąż głowę i ogon gdy chowa w przeguby,          │ → │                                             │
│ Tak Gerwazy z długiego stał się krótki, gruby;      │ → │                                             │
│ Rozciągnęły się, nawet skrzypnęły powrozy,          │ → │                                             │
│ Ale nie pękły! Klucznik ze wstydu i zgrozy          │ → │                                             │
**~~#~~.** Podaj komendę (potok), która z pliku ''study-in-scarlet.txt'' (wziętego np. stąd: %%https://www.gutenberg.org/ebooks/244.txt.utf-8%%) wyciągnie 100 najczęściej powtarzających się słów o długości co najmniej 6 liter i posortuje te słowa alfabetycznie. Komenda ma ignorować wielkość znaków (tzn. zliczać 'however' i 'However' jako to samo słowo). **~~#~~.** Podaj komednę (potok) który policzy ile plików z rozszerzeniem ''.jpg'' w twoim katalogu domowym ma nieunikalną nazwę. **~~#~~.** Podaj komendę wyświetlającą z pliku ''/etc/ssh/sshd_config'' wszystkie linie które nie są puste i nie są komentarzami (tzn. nie zaczynają się od '#').
**~~#~~.** Na serwerze polluks w katalogu ''/home/jkonczak/so'' jest plik o nazwie ''last.txt'' (będący wynikiem wykonania komendy ''last -w > last.txt'' na innym komputerze). Podaj komendę (potok), który z informacji zawartych w tym pliku wyświetli dla każdego użytkownika ile razy logował się z którego adresu IP. Posortuj wyniki tak, by najpierw były posortowane nazwą użytkownika, a potem ilością logowań. \\ Podpowiedź: tylko linie w których jest adres IP mają trzy kropki.
Fragment przykładowego wyniku:
1    hanna       83.8.150.248
1    hanna       83.8.211.93
3    jakub       89.64.42.11
1    jakub       77.254.245.5
4    jan         89.64.60.247
64   julia       194.4.62.88
25   julia       77.254.245.5
8    julia       178.43.46.50
**~~#~~.** Na serwerze polluks w pliku ''/home/jkonczak/so/sshd.log'' znajdują się logi serwera SSH. Zawierają one między innymi wpisy o próbach logowania botów szukających słabo zabezpieczonych serwerów SSH. \\ Linie zawierające treść: \\ ''mar 29 12:10:54 hostname sshd[2702236]: Invalid user god from 159.223.192.57 port 45932'' \\ wskazują, że taki bot próbował się zalogować jako użytkownik god. \\ Podaj komendę (potok) którą znajdziesz 25 najczęściej próbowanych nazw użytkownika. \\ Uwaga: boty próbują też logować się zostawiając pustą nazwę użytkownika – taki wpis będzie też pojawiać się w wynikach. ------------------------------- **~~#~~.** Żeby zrobić to zadanie, najpierw wykonaj: ''eval "$(echo Zm9yIFogaW4gYHNlcSAxMGAKZG8KZXZhbCBaJFo9JCgoUkFORE9NJTk5OTkpKQpkb25lCmV4cG9ydCBaNQpleHBvcnQgWjgK|base64 -d)"'' \\ Z listy zmiennych: ''Z1'', ''Z2'', …, ''Z10'' ustawionych w powłoce dwie będą widoczne w programach uruchamianych przez tą powłokę. Podaj które. **~~#~~.** Podaj komendę lub komendy które ustawią zmienną ''FOO'' na wartość zmiennej ''BAR'' oraz ustawią żeby programy uruchamiane przez bieżącą powłokę widziały zmienną środowiskową ''FOO''. \\ Domyślnie zmienna ''BAR'' nie istnieje, jeśli chcesz wykonać polecenie najpierw ją ustaw. Możesz sprawdzić poprawność komend uruchamiając np. ''%%perl -e 'print(($ENV{"FOO"}//"Nie ma zmiennej FOO")."\n")'%%''. **~~#~~.** Stwórz w swoim katalogu domowym katalog ''bin'' i ściągnij tam jakiś program (np. edytor [[https://micro-editor.github.io/|micro]]). Podaj komendę która pozwoli uruchamiać programy z katalogu ''bin'' w twoim katalogu domowym bez podawania pełnej ścieżki do nich. **~~#~~.** Podaj komendę która ustawi wartość zmiennej ''X'' na iloczyn zmiennej ''COLUMNS'' i ''LINES'' oraz komendę która wyświetli tekst ''Terminal ma rozmiar //H//x//W//, więc mieści //X// znaków'', gdzie ''//H//'' ma być wartością zmiennej ''LINES'', ''//W//'' ma być wartością zmiennej ''COLUMNS'' a ''//X//'' ma być wartością zmiennej ''X''.
**~~#~~.** Załóż, że w pliku ''data_file_count'' znajduje się liczba plików z danymi. Podaj komendy które: * umieszczą wynik polecenia ''free'' w pliku ''data_//N//'', gdzie ''N'' jest wartością o jeden większą niż liczba wpisana w pliku ''data_file_count'' * zwiększą liczbę w pliku ''data_file_count'' o jeden
**~~#~~.** W pliku ''/var/run/cron.pid'' znajduje się identyfikator procesu ''cron''. Podaj komendę, która wyśle sygnał TERM do identyfikatora odczytanego z podanego pliku. Nie masz (i nie powinieneś mieć) uprawnień do zabicia crona. Jeśli chcesz przetestować to polecenie, wykonaj zamiast tego: ''perl -e'$SIG{TERM}=sub{die"Ouch!"};use POSIX"pause";pause;'&echo $!>sleeper.pid'' umieszczające identyfikator zabijalnego procesu w pliku ''sleeper.pid''. **~~#~~.** Podaj polecenie, które wyświetli tekst ''O godzinie //HH:MM// działało //N// procesów''. Liczba procesów ma niewuzględniać procesów biorących udział w wyświetlaniu tego tekstu. **~~#~~.** Podaj komendę która poszuka w bieżącym katalogu plików o rozmiarze większym bądź równym rozmiarowi pliku ''/usr/bin/man'', wiedząc że polecenie ''stat -c%s //nazwa_pliku//'' wypisze rozmiar pliku w bajtach. **~~#~~.** Podaj komendę która poszuka w bieżącym katalogu plików o rozmiarze większym bądź równym rozmiarowi pliku ''/usr/bin/man'', wiedząc że polecenie ''du -b //nazwa_pliku//'' wypisze rozmiar pliku w bajtach i jego nazwę. **~~#~~.** Podaj komendę, która spróbuje utworzyć wcześniej nieistniejący katalog ''data'' i jeśli utworzenie katalogu się powiodło, to wejdzie do tego katalogu. **~~#~~.** Podaj komendę, która spróbuje wyświetlić tylko linie zaczynające się od ''student '' z wyników komendy ''ps -ef'', a jeżeli w wyniki komendy nie zawierają pasujących linii, to wypisze ''Użytkownik student nie ma żadnych procesów''. **~~#~~.** Podaj komendę która utworzy alias o nazwie ''myps'' który będzie wykonywać komendę ''ps -HFu $LOGNAME''. **~~#~~.** W twojej powłoce polecenie ''grep'' jest interpretowane jako alias. Podaj do jakiej komendy się rozwija.