**Te zadania można rozwiązać na wiele sposobów. Do części zadań jest podany więcej niż jeden sposób rozwiązania.** ~~Zadanie.#~~ Wyświetl na ekranie prędkości taktowania procesorów używając pliku ''/proc/cpuinfo''. grep MHz /proc/cpuinfo | cut -f2 -d ':' | tr -d ' ' grep MHz /proc/cpuinfo | cut -b 12- grep MHz /proc/cpuinfo | tr -s ': ' '\n' | grep '\.' awk '/MHz/ {print $NF}' /proc/cpuinfo ~~Zadanie.#~~ Kombinacje praw dostępu w katalogu ''/etc/''. ls -l | tail -n +2 | cut -b 2-10 | sort | uniq -c vdir | tail -n +2 | cut -b 2-10 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -d '/' -f 1 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -b 7-15 | sort | uniq -c ~~Zadanie.#~~ Ośmioznakowe słowa kończące się na ''less''. cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep '^....less$' cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep -P '^\w{4}less$' grep less /usr/share/myspell/en_GB.dic | tr '/' '\t' | cut -f1 | grep '^....less$' sed -n 's|^\(....less\)\(/.*\)*$|\1|p;' /usr/share/myspell/en_GB.dic perl -pe 'print "$1\n" if /^(....less)\W/; undef $_' /usr/share/myspell/en_GB.dic ~~Zadanie.#~~ Słowa kończące się na ''more'' i zaczynające się z małej litery. cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep 'more$' | grep '^[a-z]' ~~Zadanie.#~~ Losowa 32-cyfrowa liczba szesnastkowa z ''/dev/urandom''. cat /dev/urandom | tr -dc '0-9a-f' | head -c 32 cat /dev/urandom | head -c 16 | od -x | cut -s -f 2- -d ' '| tr -d ' ' ~~Zadanie.#~~ Lista 10 haseł o długości 8 znaków (małe litery i podkreślnik) z ''/dev/urandom''. cat /dev/urandom | tr -dc 'a-z_' | fold -w 8 | head cat /dev/urandom | tr -dc 'a-z_' | head -c 80 | fold -w 8 ~~Zadanie.#~~ Ile jest uruchomionych procesów ''bash''. pidof bash | wc -w pgrep '^bash$' | wc -l ps -e | grep '\bbash\b' | wc -l pgrep bash | wc -l # te polecenia policzą też procesy które ps -e | grep bash | wc -l # mają w nazwie bash, ale nie są bashem ~~Zadanie.#~~ 5 najczęściej się powtarzających poleceń z historii powłoki (z argumentami). sort ~/.bash_history | uniq -c | sort -n | tail -n5 history | cut -b 8- | uniq -c | sort -n | tail -n5 ~~Zadanie.#~~ 5 najczęściej się powtarzających nazw programów z historii poleceń powłoki, uwzględniając że w potoku uruchomionych jest kilka programów oddzielonych przez ''|''. cat ~/.bash_history | tr '|' '\n' | sed 's/^\s*//' | cut -f1 -d ' ' | uniq -c | sort -n | tail -n5 cat ~/.bash_history | tr '|' '\n' | awk '{print $0}' | uniq -c | sort -n | tail -n5 Uwaga: te rozwiązania nie traktują właściwie znaku ''|'' będącego częścią zamkniętego w cudzysłowy tekstu, również nie biorą pod uwagę command / process substitution. Pełne rozwiązanie wymagałoby napisania własnego leksera i parsera. ~~Zadanie.#~~ 5 najpopularniejszych rozszerzeń (wszystko po pierwszej kropce) w ''/var/log/''. ls -d /var/log/*.* | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | cut -s -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ~~Zadanie.#~~ 5 najpopularniejszych rozszerzeń (wszystko po ostatniej kropce) w ''/var/log/''. ls -d /var/log/*.* | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | rev | cut -s -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ~~Zadanie.#~~ Trzech użytkowników (poza rootem) z największą liczbą procesów. ps --no-headers -e -o user | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -e -o user | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -ef | cut -f1 -d ' ' | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3 ~~Zadanie.#~~ Plik nagłówkowy w ''/usr/include/'' w którym jest deklaracja funkcji ''SHA512_Init''. grep -lr SHA512_Init /usr/include/ grep -r SHA512_Init /usr/include/ | cut -f 1 -d ':' ~~Zadanie.#~~ Ile znaków ''#'' jest w pliku ''/usr/include/openssl/sha.h''. cat /usr/include/openssl/sha.h | tr -dc '#' | wc -c ~~Zadanie.#~~ Wyświetl ''/usr/include/openssl/sha.h'' pomijając linie zaczynające się od ''#''. grep -v '^#' /usr/include/openssl/sha.h ~~Zadanie.#~~ Protokoły które mają nazwane porty w ''/etc/services''. cat /etc/services | tr -s '\t ' '\t' | cut -f 2 | grep '^[0-9][0-9]*/' | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {print $2}' /etc/services | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {sub(/[0-9]+\//, "", $2); print $2}' /etc/services | sort | uniq cat /etc/services | grep -v '^#' | tr -s '\t ' '\t' | cut -sf2 | cut -sf2 -d / | sort | uniq ~~Zadanie.#~~ Liczba ukrytych plików i katalogów w katalogu domowym. ls -d ~/.* | wc -l ls -A ~ | grep '^\.' | wc -l ~~Zadanie.#~~ Ilość wysłanych i odebranych bajtów z wyników polecenia ''ip --statistics link show br0''. ip --statistics link show br0 | tail -n3 | grep -v bytes | tr -s ' ' '\t' | cut -f 2 ip --statistics link show br0 | tail -n3 | grep -v bytes | awk '{print $1}' ip --statistics link show br0 | grep bytes -A1 | grep -v bytes | awk '{print $1}' ~~Zadanie.#~~ Pięć identyfikatorów procesów w systemie które mają największą ilość procesów potomnych. ps -el | tail -n +2 | tr -s ' ' '\t' | cut -f 5 | sort | uniq -c | sort -nr | head -n5 | cut -b9- ps --no-headers -eo ppid | sort | uniq -c | sort -nr | head -n5 | cut -b9- ~~Zadanie.#~~ Znając identyfikator //PID// wyświetl nazwę programu z argumentami. ps -ef | tr -s ' ' | cut -f 2,8- -d ' ' | grep '^//PID//' | cut -f2- -d' ' ps --no-headers -o cmd -p //PID// ~~Zadanie.#~~ Liczba użytkowników w ''/etc/passwd'' z powłoką ustawioną na ''bash''. grep '/bin/bash$' /etc/passwd | wc -l ~~Zadanie.#~~ Lista plików nagłówkowych wymaganych przez wszystko w ''/usr/include/infiniband/''. grep -r '^[[:space:]]*#include ' /usr/include/infiniband/ | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq cat /usr/include/infiniband/* | grep '^[[:space:]]*#include ' | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq ~~Zadanie.#~~ Same czasy odpowiedzi z wyników ''ping -i 0.5 -c 10 put.poznan.pl''. ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1 # uruchomienie komendy ze zmieniony buforowaniem biblioteki standardowej C wypisuje wyniki na bieżąco stdbuf -oL bash -c "ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1"