Po drátě 3: Řešení vedlejší úlohy D

Úloha typu 'Aha!' - vypadá příšerně, ale pracnost řešení (když známe princip) je nulová. Kdo na ní přisel, byl po zásluze odměněn. Celé zadání je v mailu a je naznačeno, že se jedná o práci s shellem. Konkrétně s bash-em - nejznámějším shellem na Linuxu. Skript z přílohy však přímo spustit nelze. Pokud se nevydáme nikam pryč na scestí, ale nakoukneme do manuálové stránky bashe, co by mohly takovéto znaky znamenat, jsme na stopě: vykřičník je uveden hned jako první v kapitolce 'RESERVED WORDS' - čili je to součást gramatiky bashe. Pak ho jen dáme vyhledat, kde se tedy používá - a nalezneme kapitolku 'HISTORY', která funguje, pochopitelně, pouze v interaktivním režimu a je tedy jasné, proč ve skriptu nefungovala. Text "skriptu" označíme myší a vložíme do příkazové řádky - úlohu lze tak řešit v řádu jednotek vteřin.

Komentář

Nápad na úlohu vznikl již pro minulé Po drátě, ale nestihla se do uzávěrky dopsat, tak jste ji mohli vidět až nyní. Základní kámen úspěchu bylo věřit v jednoduchost úlohy (ostatně byla to pouze vedlejší úloha), a tedy když je tam naznačeno, že to máme řešit v bash-i, podívat se do manuálové stránky od něj a tam najít použití vykřičníku. Jiné výskyty než v kapitole HISTORY potřebuji znaky, které v zadání nebyly ('&', '|' atp.).

Zajímavost: koho neodradil poněkud častější výskyt nealfabetických znaků a pokusil se úlohu i přečíst a pochopit (je to mnohem snazší než to na první pohled vypadá), mohl si všimnout, jaké různé triky s historií se v bash-i dají kouzlit. Také pak je vidět, proč ten regulární výraz v sed-u na první řádce vypadá zrovna takto, když by stačil mnohem jednodušší...

Autorem úlohy je Milan Vančura.

Re: Po drátě 3: Řešení vedlejší úlohy D Martin "Marble" Beránek (4. 12. 2008 - 9:50) Sbalit(1)
Hmm, history expansion, to je pěkné, ale složit heslo z příkazů, co jsme na svém terminálu psal před chvílí asi moc nepůjde. Krok: Jo aha, on je tam ještě ten jeden řádek s echo. se už nějak nekonal, takže tahle bonusovka odolala.