Różnice między wybraną wersją a wersją aktualną.
— |
so:test2_cwiczenia [2024/04/15 00:55] (aktualna) jkonczak utworzono |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
+ | **~~#~~.** 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''. \\ | ||
+ | <small>(Tworzenie takiego archiwum to komenda ''tar cJf pliki_txt.tar.xz //lista plików//''. Komendą ''tar tf pliki_txt.tar.xz'' sprawdzisz zawartość archiwum.)</small> | ||
+ | |||
+ | **~~#~~.** 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 <small>(np. ''/home/jkonczak/so/old_mcdonald_mistyped.txt'' na serwerze polluks)</small> w dowolne miejsce, następnie wykonaj podaną komendę która pokaże co masz poprawić w pliku <small>(np. ''/home/jkonczak/so/old_mcdonald_check.sh //nazwa_twojej_kopii//'' na serwerze polluks)</small>. 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. | ||
+ | |||
+ | <html><div style="margin:0"></html> | ||
+ | **~~#~~.** Podaj komendę (potok), która z pliku ''pan-tadeusz.txt'' <small>(wziętego np. stąd: %%https://wolnelektury.pl/media/book/txt/pan-tadeusz.txt%%)</small> wyciągnie linie poprzedzające linie w których znajduje się słowo ''Gerwazy''. \\ | ||
+ | <small>Np:</small> | ||
+ | <html> | ||
+ | <pre style="margin:0; font-size:75%; line-height:1em"> | ||
+ | ┌ 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 │ → │ │ | ||
+ | </pre> | ||
+ | </html> | ||
+ | <html></div></html> | ||
+ | |||
+ | |||
+ | **~~#~~.** Podaj komendę (potok), która z pliku ''study-in-scarlet.txt'' (<small>wziętego np. stąd: %%https://www.gutenberg.org/ebooks/244.txt.utf-8%%</small>) 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 '#'). | ||
+ | |||
+ | <html><div style="margin:0"></html> | ||
+ | **~~#~~.** Na serwerze polluks w katalogu ''/home/jkonczak/so'' jest plik o nazwie ''last.txt'' <small>(będący wynikiem wykonania komendy ''last -w > last.txt'' na innym komputerze)</small>. | ||
+ | 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ń. | ||
+ | \\ | ||
+ | <html> | ||
+ | <small> | ||
+ | Podpowiedź: tylko linie w których jest adres IP mają trzy kropki.<br> | ||
+ | Fragment przykładowego wyniku: | ||
+ | </small> | ||
+ | <pre style="font-size:75%; line-height:1em"> | ||
+ | 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 | ||
+ | </pre> | ||
+ | </div></html> | ||
+ | |||
+ | **~~#~~.** 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. | ||
+ | \\ | ||
+ | <small>Uwaga: boty próbują też logować się zostawiając pustą nazwę użytkownika – taki wpis będzie też pojawiać się w wynikach.</small> | ||
+ | |||
+ | ------------------------------- | ||
+ | |||
+ | **~~#~~.** <small>Żeby zrobić to zadanie, najpierw wykonaj: ''eval "$(echo Zm9yIFogaW4gYHNlcSAxMGAKZG8KZXZhbCBaJFo9JCgoUkFORE9NJTk5OTkpKQpkb25lCmV4cG9ydCBaNQpleHBvcnQgWjgK|base64 -d)"''</small> | ||
+ | \\ | ||
+ | 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''. | ||
+ | \\ | ||
+ | <small> | ||
+ | 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")'%%''. | ||
+ | </small> | ||
+ | |||
+ | **~~#~~.** 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''. | ||
+ | |||
+ | <html><div style="margin:0"></html> | ||
+ | **~~#~~.** 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 | ||
+ | <html></div></html> | ||
+ | | ||
+ | **~~#~~.** 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. | ||
+ | <small>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''.</small> | ||
+ | |||
+ | **~~#~~.** 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. | ||