Zatím k těmto účelům používám make. Na jednu stranu je to mocný nástroj, na druhou stranu vidím problém v tom, že když se k tomu člověk vrátí po delší době, je těžké se v tom vyznat (pořád ale lepší, než bash, pod argumenty článku se mohu podepsat). Uznávám, problém může být mezi klávesnicí a židlí - a pak si s tím tak trošku nevím rady. Loni v červnu jsem si napsal sadu menších automatizačních makefiles a zpětně mne prostě nenapadá, jak to přepsat tak, aby návrat po měsících (až letech) byl rychlý a bezbolestný.
Bashible (jak je podaný v tomto článku) se mi líbí, ale z githubu vidím, že se teprve rodí, ale já potřebuji něco, co připravím, budu se k tomu vracet mnoho let s četností spíš jednotky užití za rok a údržba bude minimální.
Třeba to použiji na něco jiného, nějaký toy-project, ale jak se znám, tak dřív, než za rok to nebude :D.
Přepsání bashových apod. utilitek do Pythonu podle mě rozhodně není pošetilé, je to cesta k tomu mít lépe spravovatelné skripty, u kterých se člověk každou chvíli nedrbe za uchem a neříká si, jestli to ještě pořád je malinký skript opravňující výměnu pár znaků navíc za špatnou spravovatelnost, nebo už to překročilo pomyslnou hranici. Bash apod. skripty jsou pošetilost (v roce 2020)!
Naopak pokud někdo má potřebu nahradit současný ekosystém s nestrukturovanými rourami něčím "modernějším" ve stylu PowerShellu, mohl by ho zajímat třeba https://github.com/nushell/nushell
Ja mam zase zvyk ze akykolvek script (v bashi), alebo sada scriptov ktore chcem mat na serveri ci serveroch musi byt nainstalovana vo forme balikov zo vsetkou dokumentaciou, helpom a dalsimi nalezitostami. Takze ak sa k nejakemu bashovemu scriptu vratim po rokoch , obvykle netrva viac nez par minut na to, aby som bol v obraze. Tiez si myslim ze kdejaky jednoduchy nastroj ci script spustany z cronu nemusi byt zrovna a v pythone. Ale bashible ma nieco do seba, takze budem projekt sledovat. Nakoniec vsak vsetko musi skoncit v balicku. Ulahci do deployment - obzvast ak to mas v repozitaroch. Na python, ci lua sa obraciam az pri zlozitejsich zalezitostiach.
Z Pythonu i jiných jazyků lze přece taky volat sed a formátování řetězců se substitucemi není problém. Mně osobně kvůli pár řádkům navíc ruce neupadnou, zato to pak nemusím složitě luštit, když je někde chyba nebo to upravovat. Pokud jsi na skriptování spokojen s bashem, budiž, já od něj (a jeho bratranců typu zsh) všechny odrazuju.
to byla reakce na to ze si popisoval jak naroste bash skript kdyz ma provest nahradu textu :)
btw: ty z python skriptu volas sed a jine gnu/non-gnu nastroje? nebo to resis pythonem? u bash je totiz bezne vyuzivani 3rd nastroju a pokud vetsinu toho co v skriptu resim lze delat moznostmi bash nebo 3rd nastroji, proc bych mel pouzivat python abych z nej volal ty same cmd nastroje? :-) uznavam ze mezi nami je rozdil, ze ja v pythonu neumim a neprijde mi ani prehlednej kdyz sem obcas zkousel udelat drobnou upravu neceho existujici...
1. Jo, volám běžně, neříkám, že zrovna sed, ale třeba git ze svých skriptů v Pythonu volám nebo i z prográmků v Rustu.
2. Python je jenom jeden z příkladů, klidně se dá použít Ruby, JavaScript nebo cokoli jiného (klidně Haskell). Přijde mi hloupé, pokud je tým plný pythonistů (jako třeba u nás) dělat něco v shellu, který málokdo ovládá. Pokud jsi mistr v Bashi a Python neznáš, je to samozřejmě jiná situace.
Nejak som nepochopil v com ma byt ten Anslible loop menej citatelny, autor tam neukazal alternativu v Bashible.
Ale ked si vezmem tento Bashible kod:
@ Kopiruji soubory - when true - || for i in foo bar baz; do - cp "$i" /dest done
Tak mne osobne pride Ansible alternativa citatelnejsia:
- name: Kopiruji soubory command: cp {{ item }} /dest loop: - foo - bar - baz
Pripadne priamo s copy modulom:
- name: Kopiruji soubory copy: src: "{{ item }}" dest: /dest remote_src: yes loop: - foo - bar - baz
ktore je sice trosku viac textu, ale ako bonus sa to nezadrhne na suboroch s medzerou v nazve.
Podobne nacitavanie zoznamu zo suboru v Bashible:
@ Kopiruji soubory - when true - || cat list.txt | grep foo | while read path; do - cp "$path" /dest done
..sa da v Ansible pomerne jednoducho napisat ako:
- name: Kopiruji soubory with_lines: cat list.txt | grep foo command: cp {{ item }} /dest
Mne osobne pride Bashible taky zaujimavy koncept ako implementovat nieco ako Ansible v bashi, ale co sa tyka praktickeho vyuzitia, pouzil by som bud Bash alebo Ansible.
Jen jsem teď viděl cdist, což vypadá trochu jako alternativa s podobnou filozofií: https://www.cdi.st/cdist-why.html tak jsem to sem chtěl přidat.