Potoki, strumienie i przekierowania (ii)

Przekierowanie strumieni

KOMENDA i >& j

Przekierowanie strumienia i do strumienia j. i i j mogą być dowolnymi strumieniami 1, 2, 3, ... lub pustym strumieniem -.

Przykłady:

  • ./noisegen.sh 2>&1 | less – dodaje stderr do strumienia stdout (żeby uwzględnić przy korzystaniu z less)

  • echo "BŁĄD!!!!1" 1>&2 – dodaje stdout do strumienia stderr (żeby wyświetlić informacje o błędzie za pomocą strumienia błędów)

  • ./noisegen.sh 2>&1 1>&2wbrew pozorom, dodaje tylko stderr do stdout

  • ./noisegen.sh 3>&1 1>&2 2>&3 – zamiana stdout z stderr

  • ./noisegen.sh 3>&1 1>&2 2>&3 3>&- – zamykamy strumień 3 na wszelki wypadek

Skrypt noisegen.sh do sciągnięcia tutaj. Najlepiej działa w połączeniu z fortune.

Zadania

  1. Otwórz w przeglądarce adresy podane w (jakimś) pliku [xargs]

  2. Wyświetl częstotliwości taktowania wszystkich procesorów (w jednej linii) [/proc/cpuinfo xargs]

  3. Wygeneruj listę wszystkich słów które mają 8 liter, z których 3-cia to litera a, a ostatnią to literą jest y (do krzyżówki?). Wyświetl wyniki wielkimi literami. Zastosuj paginację lub przesuwanie wyników. [/usr/share/dict/words grep]

  4. Wyświetl 20 losowych cyfr [/dev/urandom]

  5. Wygeneruj 6 losowych 8-o znakowych haseł [fold]

  6. Podaj nazwę użytkownika który jest zalogowany najdłużej/najkrócej [sort who]

  7. Wypisz adres fizyczny (MAC) karty sieciowej komputera [ifconfig grep]

  8. Wypisz wszyskie adresy IP komputera [ifconfig grep]

  9. Wypisz 5 najpopularniejszych komend z historii [.bash_history sort uniq]

  10. Wypisz nazwy wszystkich zwykłych plików i linków w katalogu bieżącym [ls]

  11. Sprawdź który z użytkowników otworzył najwięcej plików (i ile to ich jest) [lsof sort uniq]

  12. Wypisz 5 najpopularniejszych rozszerzeń plików (bez katalogów) w swoim katalogu domowym [ls sort uniq]

  13. Jak wyżej, tylko typy plików (mimetype) zamiast rozszerzeń [sort uniq file]

  14. Policz linie kodu we wszytskich plikach katalogu z projektem (znaki \n) [find wc xargs]

  15. Jak wyżej, tylko policz średniki zamiast znaków nowej linii. [find tr xargs]

  16. Jak wyżej, tylko wypisz wiadomość na końcu z liczbą średników (np. “Semicolons: 644”) [echo wc xargs]

  17. Wypisz informacje o copyright ze wszystkich plików z kodem w katalogu (po rozszerzeniu) [find cat xargs]

  18. Policz wszystkie pliki ukryte w swoim katalogu domowym [grep ls wc]

  19. Wypisz wartość 2^n dla n=1..100 [bc echo xargs]

  20. Wylicz średnią ocen dla każdego ze studentów w pliku przyklad.csv [xargs echo bc]

  21. Wypisz wszystkie pliki i katalogi z katalogu /proc do pliku tymczasowego (np. /tmp/proc.log) i na ekran, ale nie pokazuj błędów. Włącz paginację albo przemieszczanie się po wynikach. [find tee /dev/null]