Nyt menee kyllä yli hilseen:
Huomasinpa, että zsh-skriptissäni nimeltä checkcdrom.zsh on pieni bugi: Se jättää tutkimatta hakemistot ja tiedostot, joitten nimi alkaa pisteellä, koska sen for-looppi alkaa näin:
for f in **/*(.) do
Päätin kokeilla, että saisko koko helahoidon muutettua POSIX:in mukaiseksi shelliskriptiksi. Kokeilin jotain tällälailla alkavaa for-looppia
for f in `find ./ -type f` do
Muuten hyvä juttu, mutta se alkoi sekoilla, jos tiedostojen nimissä on välilyöntejä. Päätin luopua tiukasta POSIX:in mukaisuudesta ja koittaa jotain tällaista GNU-spesifistä juttua:
IFS="`printf \000`" export IFS for f in `find ./ -type f -print0` do
Eli koitin määrittää ympäristömuuttujan IFS arvoksi null-characterin ja sitten käskeä find-komentoa erottamaan tiedostojen nimet null-charactereilla. Mutta paskat se for-looppi välittänyt mun null-charreista alkuunkaan. Välillä koitin tuon find-komennon tulosteen putkitusta xargs:ille, joka puolestaan koitti jokaisen tiedostonnimen antamista funktiolle, mutta xargs osaa kai syöttää tiedostonimiä yms. argumentteja vain ulkoisille komennoille. Tein siitä funktiosta erillisen skriptin, homma kyllä muuten toimi, mutta lopuksi se skriptiä kutsuva skripti tai kutsuttu skripti valitti, ettei löydä tiedostoa nimeltä "". Kummaa...
Tällaisen virityksen sain jotenkuten toimimaan:
IFS=" " export IFS for f in `find ./ -type f -print` do mytestfile.sh "${f}" done
Eli tiedoston luettavuuden tarkistava funktio onkin nyt korvattu erillisellä skriptillä. Mutta tuo vetää herneen nenään, jos tiedostonimessä on rivinvaihto. Tokihan sellainen on aika harvinaista, mutta eihän sitä koskaan tiedä...
Mutta zsh:ssa tällainen pelittää:
setopt SH_WORD_SPLIT setopt GLOB_DOTS unsetopt MARK_DIRS for f in **/*(.) do
Mutta en kyllä itsekään aivan täysin ymmärrä, miksi se pelittää. Se ei säikähdä edes tiedostonnimissä olevia rivinvaihtoja saatikka välilyöntejä. Jokatapauksessa tiedoston luettavuus tutkitaan näin:
for f in **/*(.) do echo "=======" echo "$f" echo "=======" file "$f" > /dev/null A="$?" if test "$A" != "0" then echo "file-error detected in file $f" >&2 echo "$f" >> $FILE_ERRORS_LOG fi FILE_ERRORS=$(( $FILE_ERRORS + $A )) stat "$f" > /dev/null A="$?" if test "$A" != "0" then echo "stat-error detected in file $f" >&2 echo "$f" >> $STAT_ERRORS_LOG fi STAT_ERRORS=$(( $STAT_ERRORS + $A )) cat "$f" > /dev/null A="$?" if test "$A" != "0" then echo "cat-error detected in file $f" >&2 echo "$f" >> $CAT_ERRORS_LOG fi CAT_ERRORS=$(( $CAT_ERRORS + $A )) done
Mutta olis kyllä kiva, jos tollaisen saisi toteutettua ihan vaan POSIX:in mukaisella shelliskriptauksella. Jokatapuksessa, uploadaanpa sen korjatun zsh-skriptini WWW:hen tarjolle.
Kumma juttu.. Pendemonium-firman sivulla nimeltä A Few Thoughts on Fountain Pen Inks sanotaan tällaista:
Sheaffer Inks
Jet Black - I'd rank this black about a 7 out of 10 for deepest, most opaque black qualities. Tends to pick up some of those grey tones, especially in broader pens.
Parker Quink Ink
Black - I give it an 8 out of 10 on the dark black scale.
Elikkäs Parkerin mustan täytekynämusteen muka pitäisi olla mustempaa kuin Sheafferin vastaavan. Kumma kyllä, ainaskin minulla Sheaferin musta täytekynämuste näyttää niin mustalta kuin vain voi enkä ikinä ole havainnut siinä mitään "undertoneja" mutta Parkerin mustassa musteessa sellaisia huomaan vähän väliä. En kyllä tiedä, onko jotain merkitystä sillä, kun Sheaffer jokin aika sitten siirsi mustevalmistuksensa Yhdysvalloista Sloveniaan ja siinä samalla muutti musteittensa koostumusta. Ostamissani Sheafferin mustepateissa itsessäänkin lukee, että "Slovenia". Oliskohan tuo em. arvostelu peräisin ajalta ennen Sheafferin musteen koostumuksen muutosta? Toisaalta Parkerin mustepatien pakkauksessa ei enää lue, että "Quink", mutta en ole kuullut heidän vaihtaneen musteittensa koostumusta.
Oli miten oli, kai noista mustearvosteluista jotain osviittaa saa, mutta kannattaa myös muodostaa omia kokemuperäisiä mielipiteitä. Sitäpaitsi ei se kovin kallista ole ostaa paljon erilaisia täytekynämusteita ja kokeilla niitä. Kokeilemista varten patruunat kyllä tulevat halvemmiksi, mutta pullotetulla musteella taitaa olla pienempi litrahinta.
Meenpä nukkumaan.
Hereillä taas. On muuten vähän vittumaista koittaa nukkua, kun ne tekee sitä yhtä kerrostaloa viereisellä rakennustyömaalla. Räjäyttely kyllä loppui jo viikkoja sitten, mutta muuta mökää kyllä riittää.
Jaahas... Täytyypä painua suihkuun ja sitten fillaroida kaupungille. Jyväskylän Setan 15-vuotisjuhlallisuudet alkavat tänään saunaillalla ja sinne on kutsuttu mm. minä, meikäläinen ja allekirjoittanut. Huomenna olis sitten ensin juhlaillallinen ja sitten tavalliset homobileet Ilokivessä.