Sedmé cvičení – Dodělání podmínek, find, xargs, regexy, základ sedu
Příkazy a plán:
- Příkaz
test
=
a !=
pro řetězce
-eq -ne -gt -gt -lt -le
pro čísla
-e -d -f
pro soubory
- Negace
!
, and -a
a or -o
(plus závorky)
- Podmínka
if
a cyklus while
- Hledání pomocí
find
a jeho přepínače:
-name '*.txt'
-size [+-]...
- …
xargs
- Regulární výrazy a
grep
Příklady:
- Vypište všechny soubory a složky v aktuálním adresáři a jeho podadresářích
- Najděte v aktuálním adresáři (a podadresářích) všechny soubory s příponou
.sh
- Pokročilejší filtrování:
- Vypište všechny složky pod
/etc
, které mají alespoň trojpísmenný název
- Vypište všechny symbolické linky v
/etc
bez sestupování do podsložek
- V adresáři
/etc
najděte soubory, které jsou novější než /etc/passwd
- Vypište všechny normální soubory v
/etc
, které nevlastí root
- Spočítejte velikost všech souborů v
/etc
s příponou .sh
- Vypište všechny normální soubory v
/etc
, které nevlastí root a pro každý z nich vypiště dlouhé informace pomocí ls -l
- Ze souboru
aircrafts.csv
z minulých cvik vyverte řádky s nehodami letadel Airbus
- ... řádky s nehodami letadel Airbus nebo Boeing (zkuste více způsobů)
- Najděte všechny síťové uživatele (v labu pomocí
getent passwd
), kteří mají křestní jméno stejné, jako to vaše
- Vypište ze souboru
/etc/apache2/httpd.conf
všechny řádky, které nejsou zakomentované
- Najděte všechny normální soubory v podstromě pod
/etc
, jejich název má 4-7 znaků a začíná na "a"
- Zkuste si příkaz
sed
- Napište skript, který očekává řádky ve tvaru
a+b=c
(bez mezer) a zkontroluje, že jsou správně (spočítá a
+ b
a otestuje s c
).
Pokud objeví chybu, vypíše číslo řádky, na které k ní došlo.
*/?>
Příklady pro pokročilé:
- Napište skript na počítání největšího společného dělitele
$1
a $2
Euklidovým algoritmem
- Napište třídící skript – dostane jako argumenty libovolný počet čísel a na výstup je vypíše v utříděném pořadí (nápověda: šikovně použijte
sort
)