Technomorous

Práci strojům

Sdílet: Twitter - Facebook

Četl jsem kdesi, že správného unixáka poznáte tak, že raději píše hodinu skript, který za něj udělá nějakou práci, než by tu práci udělal za třicet minut sám ručně. Těší mě, že do této škatule evidentně naprosto přesně zapadám.

Potřeboval jsem pro X-Magazín projít šestnáct ZIP archivů, obsahujících 000 soubory (tj. binární soubory nacházející se na původních D40/D80 disketách), udělat z nich přímo obraz diskety ve formátu D80 a zároveň obraz pásky ve formátu TAP, každý zvlášť zabalit do ZIPu a nakonec to celé dát do jednoho adresáře určeného k publikaci. Při představě té manuální dřiny mě samozřejmě chytaly mrákoty.

#!/bin/bash
 
 for i in $(ls *zip); do
     fldr=${i:0:6}
     mkdir $fldr
     cp $i $fldr/
     unzip $fldr/$i -d $fldr/
     rm -f $fldr/$i
     0totap -o $fldr/$fldr.tap $fldr/*
     rm -f $fldr/*000
     tap2d80 $fldr/$fldr.tap $fldr/$fldr.d80
     zip -j -9 $fldr/$fldr.tap.zip $fldr/$fldr.tap
     zip -j -9 $fldr/$fldr.d80.zip $fldr/$fldr.d80
     rm -f $fldr/*d80
     rm -f $fldr/*tap
     mv $fldr/* ./
     rmdir $fldr
 done

Skript byl za dvacet minut hotov (i s otestováním). Je to vlastně jen krok po kroku zapsaný postup činnosti, kterou bych musel udělat manuálně. Počítači to trvalo přesně tři sekundy a bylo hotovo. Nevím jestli bych to ručně dělal déle nebo nikoliv, ale rozhodně vím, že to nikdy nezjistím. Od toho tu skriptovatelné shelly jsou a je to tak dobře.


Jméno
Web
E-Mail
Nejsem člověk
Text komentáře

1. dex (30. prosince 2018, 23:59)
Proč je první řádek tak složitý?
for i in $(ls *zip); do
Nestačilo by
for i in *.zip
do

2. Logout (31. prosince 2018, 9:24)
[1] Zcela určitě ano, takhle mi to ale umožňovalo přes rouru dávat další příkazy, do zdroje jednotlivých řádků nebo parametrizovat ls, takže jsem to tam nechal.


TOPlist