Procvič si příkazy jako ls
, wc
, grep
a jak je spojit dohromady.
Stáhni a rozbal si tyto archivy s informacemi o komunitních akcích: kurzech/srazech PyLadies a srazech Pyvo.
$ wget -O pyladies-cz.zip https://github.com/PyLadiesCZ/pyladies.cz/archive/master.zip
$ unzip pyladies-cz.zip
$ wget -O pyvo-data.zip https://github.com/pyvec/pyvo-data/archive/master.zip
$ unzip pyvo-data.zip
Data si prohlédni a zjisti, co se v nich skrývá za informace. Zvlášť doporučuju třeba soubor pyvo-data-master/series/brno-pyvo/events/2018-10-25-casove.yaml
.
Použij základní shellové příkazy (ne Python) na zodpovězení otázek níže.
YAML soubory by se správně měly číst knihovnou na YAML, aby byla zachována struktura. Ty je ale ber jako "čistý text", kde hledané informace jsou na řádcích ve tvaru
klíč: hodnota
(případně s nějakýma mezerama a/nebo pomlčkama navíc). Odpovědi tak nemusí být 100% přesné."Zakomentované" informace (začínající
#
) počítej pro jednoduchost taky.
video:
meetups/
a každý má jméno, name:
Šablonami jako adresar/*/podadresar/*
můžeš vybrat soubory z více adresářů.
Příkaz grep
má zajímavé přepínače -l
/-L
, -h
/-H
a e
.
Příkaz uniq
odstraní po sobě jdoucí duplikované řádky:
Často se používá sort | uniq
, aby se stejné řádky z celého souboru dostaly k sobě.
Použij uniq
k zodpovězení těchto otázek:
artbar
).Příkaz uniq
má zajímavý přepínač -c
.
Existuje zajímavý příkaz cut
, který má zajímavé přepínače -d
a -f
.
Níže je funkce v Pythonu, která bere řetězec a vrátí "obrácený" řetězec: znaky jsou v něm pozpátku a nahrazené podle slovníku.
Tvůj úkol je napsat příkaz pro příkazovou řádku, který bude radost použít v Bashi. Detaily níže.
Příklad použití v Pythonu:
Program pro příkazovou řádku by měl být spustitelný (zařiď pomocí chmod
).
Po zkopírování do správného adresáře by měl jít spustit pomocí příkazu obrat
.
Když nedostane žádný argument, obrátí standardní vstup:
Jednotlivé řádky by měl program zpracovávat samostatně:
Pokud obrat
dostane argumenty, zpracuje dané soubory:
Argument -
znamená standardní vstup.
Pokud dostane přepínač --help
, vypíše krátkou nápovědu a ignoruje ostatní argumenty.
Je-li použit jiný přepínač (začínající -
) a ne --help
, program uživateli vynadá (na chybovém výstupu), vrátí chybovou návratovou hodnotu (exit(1)
) a ignoruje ostatní argumenty.
Nakonec program změň tak, aby když některý znak chybí ve slovníku, vracel chybovou návratovou hodnotu 2
. Pořád ale zpracuje celý vstup.
Naimportuješ-li sys
a os
, pak:
sys.argv
je seznam argumentů (včetně jména programu)sys.stdin
je už otevřený soubor se std. vstupem (netřeba with
či close
)sys.stdout
je soubor se standardním výstupem (tam píše print
) a sys.stderr
je soubor chybovým výstupem.os.environ
je slovník* s proměnnýma prostředíexit(1)
ukončí program s danou hodnotou(* přesněji řečeno, objekt který se chová jako slovník)