14 February 2020

Asarlaíocht Khevin

iconv -l | tr -d '/' | shuf | while read x; do if echo "Rónán Mistéil" | iconv -f $x -t utf8 > /dev/null 2>&1 ; then AS=`echo "Rónán Mistéil" | iconv -f $x -t utf8 | tr -d "\n"`; echo "$AS"; break; fi; done


D'fhoilsigh Kevin Scannell an "script aon líne" thuas ar Twitter. Sampla bhreá atá ann de *nix - formhór na cláracha i Linux agus na Unix eile, oibríonn siad mar scagaire a ghlacann eolas isteach ó "sruth" amháin agus a sheolann ar aghaidh chuig "sruth" eile é.

Fágann sin gur féidir iad a chuir i bpíblíne mar atá thuas - nascann "|" sruth amach cláir amháin le sruth isteach cláir eile.
Clár atá in iconv a athraíonn ó ionchódú carachtar amháin go ionchódú eile.
"iconv -l" "cuir amach liosta de na hionchódú ar fad atá tacaíocht dóibh sa chlár".

Is minic rogha do chlár *nix ag feidhmiú le "-" roimhe, nó "--".

Ansin, tá "tr" ann - athraíonn nó scriosann "tr" carachtar.

Ciallaíonn "tr -d '/'" "bain aon / as an sruth isteach agus cuir gach rud eile sa sruth amach"

Déanann "shuf" an ionchur a mheascadh go randamach.

Tá lúb i gceist idir "while read x; do" agus "done"

Sé sin, fad is atá ionchur, chur san athróg x é, agus déan gach rud idir "do" agus "done".

Tá coinníoll eile idir "if" agus "then" - má tá an méid idir an "if" agus "then" fíor, deanfar gach rud suas go dtí an "fi" (cleas gránna - "if" droim ar ais).

Tá cúpla rud i gceist sa choinníoll.
" echo "Rónán Mistéil" | iconv -f $x -t utf8 > /dev/null 2>&1"

Cuireann "echo" an méid atá sa sruth isteach go dtí an sruth amach.

" iconv -f $x -t utf8"

Seo "iconv" arís. Tá an ionchódú a chuireann shuf ar fáil in x – ciallaíonn $x "bain feidhm as luach na athróige x".

Ciallaíonn "-f <ionchódú>" "athraigh ó <ionchódú>" agus "-t utf8" "go hionchódú utf8". 
UTF-8 an ionchódú is coitianta agus feiceálaí ar ríomhairí nua.

An rud atá i gceist le "/dev/null" ná gléas ar leith, folús dáiríre.

Bíonn trí sruth coitianta i Linux – STDIN (ionchur), STDOUT (aschur) agus STDERR (aschur d'eolas fabhtanna). 
Déanann an comhartha ">" STDOUT a sheoladh chuig an comhad atá luaite ina dhiadh –sa chás seo, /dev/null -> caithfear chun siúl é. 

Seasann 1 do STDOUT agus 2 do STDERR. An rud atá á dhéanamh ag "2>&1" ná ag atreorú STDERR go STDOUT.

Sa chás seo, níl suim againn ach in san luach a thugann an clár ar ais don gcóras oibriúcháin, toradh an chláir.

Beidh " echo "Rónán Mistéil" | iconv -f $x -t utf8 > /dev/null 2>&1" fíor más féidir an teaghrán "Rónán Mistéil" a iompú ón ionchódú x go utf8 – mar sin, is fiú leanacht ar aghaidh leis.

An chéad rud atá le déanamh ná:
AS=`echo "Rónán Mistéil" | iconv -f $x -t utf8 | tr -d "\n"`;

Chonaic muid na céimeanna idir eatarthu cheana.

Tá cleas nua ann áfach – an tic siar "`". An rud atá ag tarlú ná go gcuirfear an aschur ar na cláir idir an dá tic siar isteach san athróg AS.

 Seasann "\n" do deireadh líne; bainfear é sin, toisc go gcuirfidh "echo" ar ais é ar aon nós, agus is mian linn línte bána a sheachaint san toradh deiridh.

An rud a dhéanann "break" ná briseadh amach as an lúb – mar sin, ní athrófar "Rónán Mistéil" ach uair amháin gach uair a ritear an píblíne.

Agus sin agaibh an t-oideas ina iomláine!

Bíonn ainmneacha gairide ag go leor cláir *nix mar gur céad cumadh iad ag am go raibh daoine nasctha le hollríomhairí tríd córais cumarsáide a bhí sách mall, agus mar sin bhí gontacht de dhíth.

Cuireadh ceist ar duine de chumadóirí Unix, Ken Thompson, tráth, faoi cén athraithe a dhéanadh sé dá mbeadh sé ag tosú as an nua. "Litreoinn creat le 'e'". (Clár a chruthaíonn nó a osclaíonn comhad is ea creat).

Is féidir eolas faoi clár *nix a fháil go hiondúil ach "man <ainm>" a chlóscríobh – seasann man do "manual", i. Lámhleabhar. Feidhmíonn sin mar chuardach Google freisin ....