<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sirex web log (Posts about shell)</title><link>https://sirex.lt/</link><description></description><atom:link href="https://sirex.lt/tags/shell.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:sirexas@gmail.com"&gt;Sirex&lt;/a&gt; </copyright><lastBuildDate>Fri, 15 Jul 2022 12:01:54 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>ZSH Tips</title><link>https://sirex.lt/posts/2011/zsh-tips/</link><dc:creator>Sirex</dc:creator><description>&lt;section id="failu-saraso-isskleidimas"&gt;
&lt;h2&gt;Failų sąrašo išskleidimas&lt;/h2&gt;
&lt;p&gt;Elementariausias pavyzdys:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls *&lt;/pre&gt;
&lt;p&gt;Šiuo atveju, bus išskleidžiami visi failai, esantis aktyviame kataloge.&lt;/p&gt;
&lt;p&gt;Zsh failų sąrašo išskleidimui galima naudoti modifikatorius, kuriuos reikia
nurodyti skliausteliuose. Pavyzdys:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls -lt **/*.rst(.om[0,8])&lt;/pre&gt;
&lt;p&gt;Pavyzdyje &lt;code class="docutils literal"&gt;**/&lt;/code&gt; rekursyviai išskleis visus failus ir katalogus su
pakatalogiais ir failais juose. &lt;code class="docutils literal"&gt;*.rst&lt;/code&gt; išskleidžia bet kokius failus ar
katalogus, su galūne &lt;code class="docutils literal"&gt;.rst&lt;/code&gt;. Toliau skliausteliuose nurodomi modifikatoriai,
iš kurių &lt;code class="docutils literal"&gt;.&lt;/code&gt; išskleidžia tik paprastus failus, &lt;code class="docutils literal"&gt;om&lt;/code&gt; rezultatą rūšiuoja
pagal failo keitimo datą, &lt;code class="docutils literal"&gt;[0,8]&lt;/code&gt; išskleidžia tik pirmus aštuonis failus.&lt;/p&gt;
&lt;section id="failo-tipo-modifikatoriai"&gt;
&lt;h3&gt;Failo tipo modifikatoriai&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(/)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik katalogus&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(.)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik failus&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(@)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik simbolines nuorodas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(=)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik socket failus&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(p)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik named pipe (FIFO)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(*)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik vykdomuosius failus (bet ne katalogus)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(%)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik įrenginių failus (simbolių arba blokų tipo)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(%b)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik blokų tipo specialiuosius failus&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;*(%c)&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik simbolių tipo specialiuosius failus&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pavyzdžiai:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls *(/)&lt;/pre&gt;
&lt;p&gt;Parodyti aktyviame kataloge esančius pakatalogius.&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls *(*)&lt;/pre&gt;
&lt;p&gt;Parodyti aktyviame kataloge esančius vykdomuosius failus.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="failu-teisiu-modifikatoriai"&gt;
&lt;h3&gt;Failų teisių modifikatoriai&lt;/h3&gt;
&lt;p&gt;Pagal failų skaitymo, rašymo ir vykdymo teises:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;ul class="simple"&gt;
&lt;li&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;gali skaityti&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;gali rašyti&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;gali vykdyti&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;savininkas&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(r)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(w)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(x)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;grupė&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(A)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(I)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(E)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;visi&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(R)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(W)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(X)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pagal tiksliai nurodytas failų teises:&lt;/p&gt;
&lt;pre class="literal-block"&gt;*(fCHMOD)&lt;/pre&gt;
&lt;p&gt;Išskleisti tik tuos failus, kurių teisės tiksliai atitinka nurodytą CHMOD
teisių aprašą. CHMOD turi būti septintainis skaičius, pavyzdžiui: &lt;em&gt;0755&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Pagal specialiąsias failų teises:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(s)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik setuid failus (04000)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(S)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik setgid failus (02000)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(t)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;tik failus su sticky bitu (01000)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Pagal failų savininkus ir grupes:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(U)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;savininkas yra einamasis naudotojas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(G)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;grupė yra einamojo naudotojo grupė&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(uUID)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;savininkas yra UID&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;*(gGID)&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;savininkas yra GID&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section id="failu-atidarymo-ir-keitimo-modifikatoriai"&gt;
&lt;h3&gt;Failų atidarymo ir keitimo modifikatoriai&lt;/h3&gt;
&lt;p&gt;Gali būti tokie modifikatoriai:&lt;/p&gt;
&lt;pre class="literal-block"&gt;*(a[Mwhm][-|+]n)
*(m[Mwhm][-|+]n)
*(c[Mwhm][-|+]n)&lt;/pre&gt;
&lt;p&gt;Pirmoji raidė reiškia:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;a&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;failo atidarymo laikas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;m&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;failo informacijos keitimo laikas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;c&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;failo turinio keitimo laikas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Antroji raidė reiškia:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;M&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;mėnuo&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;w&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;savaitė&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;h&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;valanda&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;m&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;minutė&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Jei antroji raidė nenurodyta, laikas bus skaičiuojamas dienomis.&lt;/p&gt;
&lt;p&gt;Trečiasis simbolis gali būti (-) - nurodo išskleisti failus, kurių nurodytas
laiko parametras yra mažesnis už &lt;em&gt;n&lt;/em&gt;, (+) - nurodo išskleisti failus, kurių
nurodytas laiko parametras yra didesnis nei &lt;em&gt;n&lt;/em&gt;. Jei trečiasis simbolis
nenurodytas, bus išskleidžiami tik tie failai, kurie tiksliai atitinka nurodytą
laiko parametrą.&lt;/p&gt;
&lt;p&gt;Paskutinis simbolis arba likę simboliai yra skaičius, kuris nurodo laiko kiekį.&lt;/p&gt;
&lt;p&gt;Pavyzdys:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls *(c-3)&lt;/pre&gt;
&lt;p&gt;Bus išskleisti failai, kurių turinys buvo keistas trijų dienų bėgyje.&lt;/p&gt;
&lt;pre class="literal-block"&gt;ls *(ch+5)&lt;/pre&gt;
&lt;p&gt;Bus išskleisti failai, kurių turinys buvo keistas daugiau nei prieš 5 valandas.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="naudotu-komandu-pernaudojimas"&gt;
&lt;h2&gt;Naudotų komandų pernaudojimas&lt;/h2&gt;
&lt;p&gt;Pernaudoti anksčiau panaudotas komandas, galima šauktuko (&lt;code class="docutils literal"&gt;!&lt;/code&gt;) simbolio
pagalba. Pavyzdžiai:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!!&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;prieš tai įvesta komandos eilutė&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!#&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;visa, šiuo metu įvesta komanda, komandų eilutėje&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!1&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;pirma įvesta komanda iš komandų istorijos&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;!-2&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;antra nuo galo komanda&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;!?ls&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;paskutinė komanda iš komandų istorijos, prasidedanti &lt;code class="docutils literal"&gt;ls&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;section id="komandu-argumentu-pernaudojimas"&gt;
&lt;h3&gt;Komandų argumentų pernaudojimas&lt;/h3&gt;
&lt;p&gt;Galima pernaudoti ne tik visą komandų eilutę, bet tik tam tikrus jos
argumentus. Žemiau pateikti pavyzdžiai su prieš tai įvesta komanda:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!^&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;pirmas argumentas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!$&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;paskutinis argumentas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!*&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;visi argumentai&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!:2&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;antras argumentas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!:3*&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;visi argumentai, nuo trečio iki pabaigos&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;!:3-&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;visi argumentai, nuo trečio iki pabaigos, išskyrus paskutinį&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;!:1-3&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;argumentai, nuo antro iki trečio&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="keitiniai"&gt;
&lt;h2&gt;Keitiniai&lt;/h2&gt;
&lt;p&gt;Kelio keitiniai:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:h&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;pašalina vieną kelio elementą, nuo kelio pabaigos&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:t&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;grąžina paskutinį kelio elementą (failo ar katalogo pavadinimą)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:r&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;pašalina failo plėtinį&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:e&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;palikti tik failo plėtinį&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:a&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;absoliutus kelias&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:A&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;absoliutus kelias, išskleidžiant simbolines nuorodas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Raidžių keitimas didžiosiomis/mažosiomis:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:l&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;keičia raides mažosiomis&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:u&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;keičia raides didžiosiomis&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Kabučių valdymas:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:q&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;uždeda kabutes, kad keitinį būtų galima naudoti kitiems keitiniams&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:x&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;uždeda kabutes visoms dalims, atskirtoms tarpais&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:Q&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;pašalina kabutes&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Žodžių paieška ir keitimas:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:s&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;randa ir keičia žodžius, pvz.: &lt;code class="docutils literal"&gt;:s/abc/xyz/&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:&amp;amp;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;kartoti paskutinį &lt;code class="docutils literal"&gt;:s&lt;/code&gt; keitinį dar kartą&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:g&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;globaliai taikyti &lt;code class="docutils literal"&gt;:s&lt;/code&gt; arba &lt;code class="docutils literal"&gt;&amp;amp;&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Kita:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;:p&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;išveda keitinį, jo nevykdydamas&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;</description><category>shell</category><category>zsh</category><guid>https://sirex.lt/posts/2011/zsh-tips/</guid><pubDate>Wed, 05 Oct 2011 21:00:00 GMT</pubDate></item><item><title>Radio stočių surinkimas į audacious</title><link>https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Internete galima rasti daug nuorodų į internetines radio stotis. Štai vienas iš
pavyzdžių:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://rock-radio.50webs.com/"&gt;http://rock-radio.50webs.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ten pateikta gan nemažai nuorodų į internetines radio stotis. Šiuo metu kai
rašau, yra 42 nuorodos. Peržiūrėti ir paklausyti visas šias radio stotis yra
gan sudėtinga, jei kiekvieną nuorodą reikėtų įkelti į grojaraštį rankiniu būdu.&lt;/p&gt;
&lt;p&gt;Štai būdas, kaip visas nuorodas galima surinkti ir įkelti į audacious:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code sh"&gt;&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-1" name="rest_code_5f67b42ce31544adadcecdd688398f93-1" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-1"&gt;&lt;/a&gt;wget http://rock-radio.50webs.com/ -O- &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-2" name="rest_code_5f67b42ce31544adadcecdd688398f93-2" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-2"&gt;&lt;/a&gt;    egrep -o &lt;span class="s1"&gt;'http://[^"]+'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-3" name="rest_code_5f67b42ce31544adadcecdd688398f93-3" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-3"&gt;&lt;/a&gt;    egrep &lt;span class="s1"&gt;'(pls|m3u)$'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-4" name="rest_code_5f67b42ce31544adadcecdd688398f93-4" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-4"&gt;&lt;/a&gt;    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; url &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-5" name="rest_code_5f67b42ce31544adadcecdd688398f93-5" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-5"&gt;&lt;/a&gt;        audacious2 -e &lt;span class="nv"&gt;$url&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_5f67b42ce31544adadcecdd688398f93-6" name="rest_code_5f67b42ce31544adadcecdd688398f93-6" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_5f67b42ce31544adadcecdd688398f93-6"&gt;&lt;/a&gt;    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Įvykdžius šią komandą, visos nuorodos į radio stotis, pateiktos toje svetainėje
atsidurs audacious grojaraštyje, vienu sartu.&lt;/p&gt;
&lt;p&gt;Tą patį galima padaryti ir su &lt;a class="reference external" href="http://www.klausyk.lt/lt/visos_radijo_stotys/"&gt;lietuviškomis radio stotimis&lt;/a&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code sh"&gt;&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-1" name="rest_code_0625eeb81f27444186017737e60ae9d2-1" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-1"&gt;&lt;/a&gt;wget http://www.klausyk.lt/lt/visos_radijo_stotys/ -O- &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-2" name="rest_code_0625eeb81f27444186017737e60ae9d2-2" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-2"&gt;&lt;/a&gt;    egrep -o &lt;span class="s1"&gt;'http://[^"]+'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-3" name="rest_code_0625eeb81f27444186017737e60ae9d2-3" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-3"&gt;&lt;/a&gt;    egrep &lt;span class="s1"&gt;'(pls|m3u)$'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-4" name="rest_code_0625eeb81f27444186017737e60ae9d2-4" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-4"&gt;&lt;/a&gt;    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; url &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-5" name="rest_code_0625eeb81f27444186017737e60ae9d2-5" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-5"&gt;&lt;/a&gt;        audacious2 -e &lt;span class="nv"&gt;$url&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_0625eeb81f27444186017737e60ae9d2-6" name="rest_code_0625eeb81f27444186017737e60ae9d2-6" href="https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/#rest_code_0625eeb81f27444186017737e60ae9d2-6"&gt;&lt;/a&gt;    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Gero klausymosi.&lt;/p&gt;
&lt;aside class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;Pateikta informacija tinka visoms unix-like operacinėms sistemoms.&lt;/p&gt;
&lt;/aside&gt;</description><category>audacious</category><category>floss</category><category>shell</category><guid>https://sirex.lt/posts/2011/radio-stociu-surinkimas-i-audacious/</guid><pubDate>Wed, 20 Jul 2011 21:00:00 GMT</pubDate></item><item><title>Naudok priemonę labiausiai tinkančią užduočiai spręsti</title><link>https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Kadangi esu programuotojas, mėgstu įvairias užduotis automatizuoti.  Kartais
automatizavimas sutaupo labai daug laiko, kartais galima sugaišti labai daug
laiko automatizuojant, bet šį kartą ne apie tai...&lt;/p&gt;
&lt;p&gt;Trumpai apžvelgsiu priemones, kurias naudoju užduočių automatizavimui.&lt;/p&gt;
&lt;section id="makefile"&gt;
&lt;h2&gt;Makefile&lt;/h2&gt;
&lt;p&gt;Labai naudinga priemonė ypač programuotojams, tačiau aš tai naudoju ne tik
programavime. Pavyzdžiui esu pasidaręs Neo Freerunner sinchronizavimą su
kompiuterių. Dažnai kataloge tiesiog aprašau Makefile, pamirštu ką jis daro ir
kam jis skirtas, bet jei matau, kad kataloge yra Makefile, tai nesigilindamas
rašau make ir darbas atliktas.&lt;/p&gt;
&lt;p&gt;Tikriausiai 90% visų atviro kodo paketų naudoja Makefile, todėl įrankis tikrai
laiko ir naudotojų gausos išbandytas ir atidirbtas. Gėris.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="shell-skriptai"&gt;
&lt;h2&gt;Shell skriptai&lt;/h2&gt;
&lt;p&gt;Jei kažką sunkiai sekasi aprašyti Makefile'uose, į pagalbą galima
pasitelkti shell skriptus. Jei dar nežinote, tai nustebsite kiek daug
galima pasiekti naudojant shell skriptus. Mano namų bin kataloge yra
visa gausybė shell skriptų visiems gyvenimo atvejams. Šiuo metu ten yra:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ ls ~/bin | wc -l
65&lt;/pre&gt;
&lt;p&gt;65 skriptai.&lt;/p&gt;
&lt;p&gt;Štai paprastas shell skripto pavyzdys, kuris gali praversti kas dieną:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_53ab5b3014db45b1a1120d918af32923-1" name="rest_code_53ab5b3014db45b1a1120d918af32923-1" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_53ab5b3014db45b1a1120d918af32923-1"&gt;&lt;/a&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;
&lt;a id="rest_code_53ab5b3014db45b1a1120d918af32923-2" name="rest_code_53ab5b3014db45b1a1120d918af32923-2" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_53ab5b3014db45b1a1120d918af32923-2"&gt;&lt;/a&gt;&lt;span class="nv"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'http://translate.google.lt/translate_t?q='&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s1"&gt;'#auto|lt'&lt;/span&gt;
&lt;a id="rest_code_53ab5b3014db45b1a1120d918af32923-3" name="rest_code_53ab5b3014db45b1a1120d918af32923-3" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_53ab5b3014db45b1a1120d918af32923-3"&gt;&lt;/a&gt;w3m -dump &lt;span class="nv"&gt;$URL&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;/dev/null &lt;span class="p"&gt;|&lt;/span&gt; egrep &lt;span class="s1"&gt;'^Žodynas'&lt;/span&gt; -A10
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Rezultatas gaunasi toks:&lt;/p&gt;
&lt;pre class="literal-block"&gt;test.sh shell
Žodynas

daiktavardis

1. apvalkalas
2. lukštas
3. karkasas
4. kiautas
5. įdėklas
6. šarvas veiksmažodis
7. sluoksnis&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="sed-awk-ir-draugai"&gt;
&lt;h2&gt;sed, awk ir draugai&lt;/h2&gt;
&lt;p&gt;Rašant shell skriptus šių komandų gan dažnai prireikia, norint apdoroti
kažkokią tekstinę informaciją. Čia daug ką kalbėti ir nebūtina, tiesiog
pateiksiu paprasčiausią pavyzdį komandos, kuri pakeičia visų lentelių
pavadinimus duomenų bazės faile:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ du -sh data.sql
2,1G
$ sed -i data.sql
$ time sed -i 's/site1_prefix_/site2_prefix_/g' data.sql
35,27s user 51,79s system 59% cpu 2:26,58 total&lt;/pre&gt;
&lt;p&gt;Visas failas pakeistas per 2,5 minutes! Įdomu per kiek laiko šį failą atidarytų
jūsų teksto redaktorius? :D&lt;/p&gt;
&lt;/section&gt;
&lt;section id="perl"&gt;
&lt;h2&gt;perl&lt;/h2&gt;
&lt;p&gt;Visi aukščiau išvardinti įrankiai yra puikūs, tačiau kai reikia atlikti šį tą
sudėtingesnio, visada verta prisiminti perl.&lt;/p&gt;
&lt;p&gt;Perl yra pilnavertė programavimo kalba, tačiau turi funkcijų panšių į sed ir
awk, ne gana to, perl dirba labai greitai:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ time perl -i -nle 's/site1_prefix_/site2_prefix_/g; print' data.sql
19,60s user 9,54s system 36% cpu 1:20,46 total&lt;/pre&gt;
&lt;p&gt;Perl tą patį darbą atliko minute greičiau, nei sed! Bet dirbant su perl, reikia
turėti kiek daugiau žinių, nei su sed.&lt;/p&gt;
&lt;p&gt;Perl gali puikiausiai apdoroti tekstinius duomenis, o rezultatą įrašyti į
duomenų bazę ar panašiai, kaip tai padaryta šiame pavyzdyje:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code perl"&gt;&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-1" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-1" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-1"&gt;&lt;/a&gt;&lt;span class="ch"&gt;#!/usr/bin/perl -nl&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-2" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-2" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-3" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-3" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;BEGIN&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-4" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-4" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-4"&gt;&lt;/a&gt;    &lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;DBI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-5" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-5" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-5"&gt;&lt;/a&gt;    &lt;span class="k"&gt;our&lt;/span&gt; &lt;span class="nv"&gt;$dbh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;DBI&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"dbi:SQLite:dbname=/tmp/lines.db"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-6" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-6" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-6"&gt;&lt;/a&gt;    &lt;span class="k"&gt;our&lt;/span&gt; &lt;span class="nv"&gt;$sth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dbh&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;prepare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"INSERT INTO lines VALUES (?)"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-7" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-7" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-7"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-8" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-8" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-9" name="rest_code_89f7f9e0d6b0493f8a68559d236e7b65-9" href="https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/#rest_code_89f7f9e0d6b0493f8a68559d236e7b65-9"&gt;&lt;/a&gt;&lt;span class="nv"&gt;$sth&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/section&gt;</description><category>floss</category><category>perl</category><category>shell</category><guid>https://sirex.lt/posts/2010/naudok-priemone-labiausiai-tinkancia-uzduociai-spresti/</guid><pubDate>Thu, 17 Jun 2010 05:40:00 GMT</pubDate></item><item><title>Muzika iš komandinės eilutės</title><link>https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Mėgstu klausytis muzikos ir patinka, kai muzika tiesiog groja. Ilgą laiką
naudojuosi MPD muzikos demonu, kuris nuolat sukasi kompiuteryje ir klauso kas
jam liepiama daryti.&lt;/p&gt;
&lt;p&gt;MPD yra geras tuo, kad jį galima paleisti kompiuteriu kraunantis nebijant, kad
tai apsunkins kompiuterio darbą, nes MPD demonas yra labai lengvas. Tada, bet
kuriuo metu pakanka nuspausti mygtuką klaviatūroje „Play“ ir MPD gavęs signalą,
pradeda groti muziką. Panašiai grojamą muziką galima pristabdyti, sustabdyti,
paleisti sekančią dainą ar grąžinti prieš tai buvusią.&lt;/p&gt;
&lt;p&gt;Tačiau, jei reikia paklausyti atsitiktinę dainą arba užkrauti vieną katalogą,
MPD nėra labai patogus, nes tenka žaisti su muzikos biblioteka, įvedinėti
visokias komandas ir pan.&lt;/p&gt;
&lt;p&gt;Greitam muzikos klausymui ir atrankai, kur kas labiau tinka muzikos grotuvas
CMUS, kuris yra paprastas, greitas ir turi panašumu su teksto redaktorių VIM.&lt;/p&gt;
&lt;p&gt;Kad MPD ir CMUS derėtų tarpusavyje, esu pasirašęs paprastą SHELL skriptą, kurio
pagalba paspaudus „Play“ patikrinama ar yra paleistas CMUS ir jei jis veikia,
tuomet paleidžiama groti daina per CMUS, o jei jis išjungtas, tuomet naudojamas
nuolat budintis MPD. Skriptas atrodo taip:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-1" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-1" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-1"&gt;&lt;/a&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-2" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-2" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-3" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-3" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-4" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-4" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-4"&gt;&lt;/a&gt;    toggle&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-5" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-5" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-5"&gt;&lt;/a&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -S ~/.cmus/socket &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-6" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-6" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-6"&gt;&lt;/a&gt;            cmus-remote --pause
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-7" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-7" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-7"&gt;&lt;/a&gt;        &lt;span class="k"&gt;else&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-8" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-8" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-8"&gt;&lt;/a&gt;            mpc toggle
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-9" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-9" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-9"&gt;&lt;/a&gt;        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-10" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-10" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-10"&gt;&lt;/a&gt;        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-11" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-11" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-11"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-12" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-12" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-12"&gt;&lt;/a&gt;    stop&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-13" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-13" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-13"&gt;&lt;/a&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -S ~/.cmus/socket &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-14" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-14" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-14"&gt;&lt;/a&gt;            cmus-remote --stop
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-15" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-15" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-15"&gt;&lt;/a&gt;        &lt;span class="k"&gt;else&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-16" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-16" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-16"&gt;&lt;/a&gt;            mpc stop
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-17" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-17" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-17"&gt;&lt;/a&gt;        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-18" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-18" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-18"&gt;&lt;/a&gt;        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-19" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-19" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-19"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-20" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-20" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-20"&gt;&lt;/a&gt;    next&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-21" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-21" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-21"&gt;&lt;/a&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -S ~/.cmus/socket &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-22" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-22" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-22"&gt;&lt;/a&gt;            cmus-remote --next
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-23" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-23" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-23"&gt;&lt;/a&gt;        &lt;span class="k"&gt;else&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-24" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-24" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-24"&gt;&lt;/a&gt;            mpc next
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-25" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-25" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-25"&gt;&lt;/a&gt;        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-26" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-26" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-26"&gt;&lt;/a&gt;        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-27" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-27" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-27"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-28" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-28" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-28"&gt;&lt;/a&gt;    prev&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-29" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-29" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-29"&gt;&lt;/a&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -S ~/.cmus/socket &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-30" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-30" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-30"&gt;&lt;/a&gt;            cmus-remote --prev
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-31" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-31" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-31"&gt;&lt;/a&gt;        &lt;span class="k"&gt;else&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-32" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-32" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-32"&gt;&lt;/a&gt;            mpc prev
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-33" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-33" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-33"&gt;&lt;/a&gt;        &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-34" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-34" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-34"&gt;&lt;/a&gt;        &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-35" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-35" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-35"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-36" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-36" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-36"&gt;&lt;/a&gt;    *&lt;span class="o"&gt;)&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-37" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-37" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-37"&gt;&lt;/a&gt;        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; {toggle|stop|next|prev}"&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-38" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-38" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-38"&gt;&lt;/a&gt;&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-39" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-39" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-39"&gt;&lt;/a&gt;
&lt;a id="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-40" name="rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-40" href="https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/#rest_code_42b78e4a40fa4cefbbecec23c55a5bf1-40"&gt;&lt;/a&gt;&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;section id="cmus"&gt;
&lt;h2&gt;CMUS&lt;/h2&gt;
&lt;p&gt;Kadangi CMUS yra labai paprastas, tai užtenka jį įdiegti, paleisti iš
komandinės eilutės:&lt;/p&gt;
&lt;pre class="literal-block"&gt;cmus&lt;/pre&gt;
&lt;p&gt;ir įkelti norima katalogą ar failą grojimui:&lt;/p&gt;
&lt;pre class="literal-block"&gt;:add ~/music&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="mpd"&gt;
&lt;h2&gt;MPD&lt;/h2&gt;
&lt;p&gt;MPD yra sudėtingesnis, nes veikia, kaip serveris. Pirmiausia, prieš pradedant
jį naudot, reikia aprašyti konfigūracinį failą &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;~/.mpdconf&lt;/span&gt;&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;music_directory "~/music/"
playlist_directory "~/.mpd/playlists"
db_file "~/.mpd/mpd.db"
log_file "~/.mpd/mpd.log"
error_file "~/.mpd/mpd.error"
pid_file "~/.mpd/mpd.pid"
state_file "~/.mpd/mpdstate"&lt;/pre&gt;
&lt;p&gt;Tada į kartu su kompiuteriu paleidžiamas programas įkelkite programą &lt;em&gt;mpd&lt;/em&gt;.
Norėdami patestuoti iš karto, komandinėje eilutėje įveskite &lt;em&gt;mpd&lt;/em&gt; ir paruoškite
grojaraštį:&lt;/p&gt;
&lt;pre class="literal-block"&gt;mpc update
mpc clear
mpc mpc listall | mpc add
mpc play&lt;/pre&gt;
&lt;p&gt;Viskas, MPD paruoštas, pasileis kartu su kompiuteriu ir bet kuriuo metu bus
pasiruošęs skleisti muzikos garsus.&lt;/p&gt;
&lt;p&gt;Norėdami kontroliuoti MPD, galite naudoti komandinės eilutės klientą mpc arba
ncurses klientą &lt;em&gt;ncmpcpp&lt;/em&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="media-klavisai"&gt;
&lt;h2&gt;Media klavišai&lt;/h2&gt;
&lt;p&gt;Paskutinis dalykas – media klavišų susiejimas, su aukščiau pateiktu &lt;em&gt;music.sh&lt;/em&gt;
skritpu. Tai padarysite, nurodydami tokias komandas, atitinkamiems klavišams:&lt;/p&gt;
&lt;pre class="literal-block"&gt;/home/naudotojovardas/bin/music.sh toggle
/home/naudotojovardas/bin/music.sh stop
/home/naudotojovardas/bin/music.sh next
/home/naudotojovardas/bin/music.sh prev&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="audio-scrobbler"&gt;
&lt;h2&gt;Audio scrobbler&lt;/h2&gt;
&lt;p&gt;Ar jums įdomu ką klausote? Man, taip, todėl naudojuosi audio scrobbling
technologija klausomos muzikos statistikai vestis. Visą informaciją apie
klausytą muziką siunčiu last.fm portalui, kur vėliau galiu parodyti draugams
kokią muziką mėgstu ir pats pasižiūrėti klausomos muzikos statistiką. Mano
last.fm profilis:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.last.fm/user/sirexas"&gt;http://www.last.fm/user/sirexas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MPD demonui naudoju &lt;a class="reference external" href="http://mpd.wikia.com/wiki/Client:Mpdscribble"&gt;mpdscribble&lt;/a&gt;. CMUS – &lt;a class="reference external" href="http://github.com/freshprince/cmuscrobbler"&gt;cmuscrobbler&lt;/a&gt;.  Turint taip
sukonfigūruotą sistemą, galima pamiršti apie muzikos programas ir tiesiog
dirbant savo darbus klausytis muzikos!&lt;/p&gt;
&lt;/section&gt;</description><category>floss</category><category>shell</category><guid>https://sirex.lt/posts/2010/muzika-is-komandines-eilutes/</guid><pubDate>Mon, 05 Apr 2010 19:43:00 GMT</pubDate></item><item><title>SSH pamokėlės</title><link>https://sirex.lt/posts/2010/ssh-pamokeles/</link><dc:creator>Sirex</dc:creator><description>&lt;section id="kas-yra-ssh"&gt;
&lt;h2&gt;Kas yra SSH?&lt;/h2&gt;
&lt;p&gt;SSH yra Secure SHell.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kas-yra-shell"&gt;
&lt;h2&gt;Kas yra Shell?&lt;/h2&gt;
&lt;p&gt;Shell yra programa suteikianti naudotojui tam tikrą sąsają. Linux pasaulyje,
Shell vadinama programa, kurios sąsajos dėka galite valdyti kompiuterį.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kuo-skiriasi-shell-nuo-ssh"&gt;
&lt;h2&gt;Kuo skiriasi Shell nuo SSH?&lt;/h2&gt;
&lt;p&gt;Paprasta Shell programa suteikia galimybę valdyti kompiuterį, kuriame ji
paleista, tuo tarpu SSH, suteikia galimybę valdyti kitą tinklo kompiuterį,
nuotoliniu būdu.&lt;/p&gt;
&lt;p&gt;Tarkime, norint iškviesti Shell programą &lt;code class="docutils literal"&gt;bash&lt;/code&gt;, reikia:&lt;/p&gt;
&lt;pre class="literal-block"&gt;bash&lt;/pre&gt;
&lt;p&gt;Norint iškviesti Shell programą bash kitame kompiuteryje reikia:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ssh kitas-kompiuteris bash&lt;/pre&gt;
&lt;p&gt;Kaip matote, viskas, ką daro SSH, tai suteikia saugią prieigą prie nutolusio
kompiuterio Shell programos.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kas-yra-ssh-raktas"&gt;
&lt;h2&gt;Kas yra SSH raktas?&lt;/h2&gt;
&lt;p&gt;SSH suteikia saugią prieigą prie kito kompiuterio, todėl jungiantis visą laiką
prašomas kito kompiuterio naudotojo prieigos slaptažodis. SSH raktų dėka,
galima susikurti vieną raktį nuo visų durų. Tai daroma taip:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ssh-keygen -C jusu@elpastas.lt
scp ~/.ssh/id_rsa.pub kitas-kompiuteris:.ssh/authorized_keys&lt;/pre&gt;
&lt;p&gt;Nuo šiol, prie kito kompiuterio galėsite jungtis be slaptažodžio, jei turite
veikiantį taip vadinamą, raktų agentą. Ubuntu sistemoje raktų agentas veikia,
todėl jungiantis prie kito kompiuterio, jūsų tik vieną kartą paklaus
slaptažodžio nuo raktinės.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kas-yra-ssh-keygen"&gt;
&lt;h2&gt;Kas yra ssh-keygen?&lt;/h2&gt;
&lt;p&gt;ssh-keygen yra programa, kuri sukuria viešąjį (&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;~/.ssh/id_rsa.pub&lt;/span&gt;&lt;/code&gt;) ir
privatųjį (&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;~/.ssh/id_rsa&lt;/span&gt;&lt;/code&gt;) SSH raktus. Raktai išsaugomi failuose, kuriuos
nurodžiau skliausteliuose.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kas-yra-ssh-authorized-keys"&gt;
&lt;h2&gt;Kas yra ~/.ssh/authorized_keys&lt;/h2&gt;
&lt;p&gt;Tai yra paprasčiausias tekstinis failas, kuriame gali būti surašyti viešieji
naudotojų raktai, kurie gali prisijungti naudodamiesi savo privažiuoju raktu.&lt;/p&gt;
&lt;p&gt;Faile, vienas viešasis raktas saugomas vienoje eilutėje.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kas-yra-scp"&gt;
&lt;h2&gt;Kas yra scp?&lt;/h2&gt;
&lt;p&gt;&lt;code class="docutils literal"&gt;scp&lt;/code&gt; yra Secure CoPy. Veikiai labai panašiai, kaip komanda cp, tik kopijuoja
iš vieno kompiuterio, į kitą:&lt;/p&gt;
&lt;pre class="literal-block"&gt;cp failas-a.txt failas-b.txt
scp failas-a.txt kitas-kompiuteris:failas-b.txt&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="kas-yra-sftp"&gt;
&lt;h2&gt;Kas yra sftp?&lt;/h2&gt;
&lt;p&gt;&lt;code class="docutils literal"&gt;sftp&lt;/code&gt; yra SSH File Transfer Protocol, veikia panašiai, kaip FTP, tik naudoja
tą patį SSH. Štai paprastas būdas prisijungti prie kito kompiuterio, per
&lt;code class="docutils literal"&gt;sftp&lt;/code&gt;, naudojantis failų naršymo programa nautilus:&lt;/p&gt;
&lt;pre class="literal-block"&gt;nautilus sftp://kitas-kompiuteris&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="ar-galiu-apjungti-shell-ir-ssh-komandas"&gt;
&lt;h2&gt;Ar galiu apjungti Shell ir SSH komandas?&lt;/h2&gt;
&lt;p&gt;Taip. Tarkime norite iš kitas-kompiuteris eksportuoti MySQL duomenų bazę ir
importuoti ją į savo kompiuterio MySQL duomenų bazę:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ssh kitas-kompiuteris 'mysqldump tavodb' | mysql manodb&lt;/pre&gt;
&lt;p&gt;Šiame pavyzdyje, nutolusiame kompiuteryje iškviečiate komandą &lt;code class="docutils literal"&gt;mysqldump
tavodb&lt;/code&gt;, kuri į ekraną išveda visą duomenų bazės turinį.  Toliau simbolio
&lt;code class="docutils literal"&gt;|&lt;/code&gt; pagalba, tai kas išvedama į ekraną, nukreipiate į kitą komandą 'mysql
manodb', kuri surenka visą duomenų bazės turinį ir importuoja jį į jūsų duomenų
bazę.&lt;/p&gt;
&lt;p&gt;Pasitaiko, kad tarp kompiuterių yra mažas tarptinklinis pralaidumas, todėl kad
pagreitinti duomenų perdavimą, galima perduodamus duomenis suspausti:&lt;/p&gt;
&lt;pre class="literal-block"&gt;ssh kitas-kompiuteris 'mysqldump tavodb | gzip -c' | gunzip -c | mysql manodb&lt;/pre&gt;
&lt;p&gt;Tai tiek. Tikiuosi „pagavote kampą“ kas yra SSH, ir kaip paprastai galima juo
naudotis sutaupant daug laiko.&lt;/p&gt;
&lt;/section&gt;</description><category>floss</category><category>shell</category><category>ssh</category><guid>https://sirex.lt/posts/2010/ssh-pamokeles/</guid><pubDate>Thu, 04 Feb 2010 17:41:00 GMT</pubDate></item><item><title>Kaip atsinaujinti Drupal modulius greitai?</title><link>https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Kaip žinia, mano blogas sukasi ant Drupal. Naudoju 25 papildomus modulius.
Anksčiau ar vėliau atsiranda naujesnės tų modulių versijos.  Kadangi aš retai
atsinaujinu, tai kai prisiruošiu patikrinti, praktiškai visi moduliai
reikalauja atnaujinimo...&lt;/p&gt;
&lt;p&gt;Koks tingus Windows naudotojas, ko gero siųstų visus atnaujinimus po vieną ir
keltį per FTP. Tačiau vikrus Linux naudotojas, toks kaip aš, darytų taip:&lt;/p&gt;
&lt;p&gt;Iš atnaujinimų puslapio &lt;code class="docutils literal"&gt;/admin/reports/updates&lt;/code&gt; išsaugome turinį į
&lt;code class="docutils literal"&gt;/tmp/updates.html&lt;/code&gt; ir įvedame kelias komandas:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-1" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-1" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-1"&gt;&lt;/a&gt;mkdir /tmp/updates &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/updates
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-2" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-2" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-2"&gt;&lt;/a&gt;egrep -o &lt;span class="s1"&gt;'http.*?\.tar\.gz'&lt;/span&gt; /tmp/updates.html &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-3" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-3" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-3"&gt;&lt;/a&gt;  grep -v &lt;span class="s1"&gt;'dev\.tar\.gz'&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-4" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-4" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-4"&gt;&lt;/a&gt;  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; f &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-5" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-5" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-5"&gt;&lt;/a&gt;      wget &lt;span class="nv"&gt;$f&lt;/span&gt; -O- &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-6" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-6" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-6"&gt;&lt;/a&gt;      tar -xzf - &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-7" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-7" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-7"&gt;&lt;/a&gt;  &lt;span class="k"&gt;done&lt;/span&gt;
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-8" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-8" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-8"&gt;&lt;/a&gt;lftp manosvetaine
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-9" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-9" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-9"&gt;&lt;/a&gt;lftp me@manosvetaine:/www&amp;gt; &lt;span class="nb"&gt;cd&lt;/span&gt; sites/all/modules
&lt;a id="rest_code_b53b101585d749d3b1dfbdb09e10988b-10" name="rest_code_b53b101585d749d3b1dfbdb09e10988b-10" href="https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/#rest_code_b53b101585d749d3b1dfbdb09e10988b-10"&gt;&lt;/a&gt;lftp me@manosvetaine:/www/sites/all/modules&amp;gt; mirror -R
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Aplankome &lt;code class="docutils literal"&gt;/update.php&lt;/code&gt; ir įdiegiame visus atnaujinimus.  Žinoma, prieš
darant tokius atnaujinimus, būtina pasidaryti atsargines kopijas.&lt;/p&gt;
&lt;p&gt;Ką tik, kaip tik taip atsinaujinau 18 modulių. Viskas suveikė sėkmingai ir be
priekaištų.&lt;/p&gt;</description><category>drupal</category><category>floss</category><category>shell</category><guid>https://sirex.lt/posts/2009/kaip-atsinaujinti-drupal-modulius-greitai/</guid><pubDate>Mon, 19 Oct 2009 21:09:00 GMT</pubDate></item><item><title>Kaip paleisti Web serverį, per 5 sekundes su Python</title><link>https://sirex.lt/posts/2009/kaip-paleisti-web-serveri-per-5-sekundes-su-python/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Jei kada nors prireiks greitai paleisti Web serverį ir nenorėsite gaišti laiko
konfigūruodami Apache ar panašiai, tuomet Python jums padės!&lt;/p&gt;
&lt;p&gt;Python savo didžiulėje standartinėje bibliotekoje turi HTTP serverio modulį.
Panaudoję šį labai paprastą HTTP serverio modulį, labai greitai galite paversti
bet kurį katalogą į Web serverio šakninį katalogą. Tam reikės turėti tik
įdiegtą Python.&lt;/p&gt;
&lt;p&gt;Tai labai naudinga, jei norite tinkle ar internete paviešintį kokius nors
failus. Serveris paleidžiamas vienos komandos pagalba.&lt;/p&gt;
&lt;p&gt;Tarkime norite paviešinti katalogą &lt;code class="docutils literal"&gt;/home/vardenis/public/&lt;/code&gt;. Tokiu
atveju įveskite šias komandas:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ cd /home/vardenis/public/
$ python -m http.server&lt;/pre&gt;
&lt;p&gt;Ir viskas! Tai tiesiog veikia, galite tuo įsitikinti naršyklėje atvėrę šį
adresą:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://localhost:8000/"&gt;localhost:8000&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plačiau apie tai galite pasiskaityti &lt;a class="reference external" href="http://www.linuxjournal.com/content/tech-tip-really-simple-http-server-python"&gt;linuxjournal.com&lt;/a&gt;.&lt;/p&gt;</description><category>floss</category><category>python</category><category>shell</category><guid>https://sirex.lt/posts/2009/kaip-paleisti-web-serveri-per-5-sekundes-su-python/</guid><pubDate>Wed, 23 Sep 2009 19:39:00 GMT</pubDate></item><item><title>w3m</title><link>https://sirex.lt/posts/2009/w3m/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Visų pirma noriu visus apšviesti, kad pirmoje vietoje internetą naršau su
Firefox, Chromium arba Opera. Tačiau kartais atverti svetainę tekstiniame
režime yra kur kas patogiau, išvengiant visokių mirguliuojančių spalvų, keistų
dizainerio ketinimų ir panašiai.&lt;/p&gt;
&lt;p&gt;Interneto naršymui tekstiniame režime esu išbandęs lynx, links, elinks ir w3m.
Ilgiau apsistojau prie elinks ir w3m, tačiau galiausiai pasirinkau w3m. Tokį
pasirinkimą lėmė tai, kad w3m pateiktas interneto svetainės tekstinis
variantas, daugeliu atvejų atrodo geriau, aiškiau ir tiksliau.&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://sirex.lt/images/w3m.png"&gt;&lt;img alt="/images/w3m.thumbnail.png" src="https://sirex.lt/images/w3m.thumbnail.png"&gt;&lt;/a&gt;
&lt;p&gt;Nors w3m naudoju jau gan seniai, tačiau tik visai neseniai nusprendžiau
nuodugniau patyrinėti šį įrankį ir radau visai įdomių dalykų...&lt;/p&gt;
&lt;section id="w3m-valdymas-klaviatura"&gt;
&lt;h2&gt;W3M valdymas klaviatūra&lt;/h2&gt;
&lt;p&gt;Naudoju nestandartinį LEKPa klaviatūros išdėstymą, todėl labai svarbu, kad
naudojamas įrankis lengvai pasiduotų konfigūruojamas šioje srityje.  Įtariu,
kad w3m kažkokiu būdų gali suprasti ir utf-8 klavišus, tačiau to išsiaiškinti
nepavyko. Visa kita veikia kuo puikiausiai. Daugiau ar mažiau, po klavišų
kombinacijų konfigūravimo, w3m galima valdyti beveik kaip vi teksto redaktorių.
Puiku!&lt;/p&gt;
&lt;p&gt;Klavišų konfigūravimą galima atlikti &lt;em&gt;~/.w3m/keymap&lt;/em&gt; faile. Štai maniškis:&lt;/p&gt;
&lt;pre class="literal-block"&gt;keymap  n   UP
keymap  e   DOWN
keymap  C-n NEXT_PAGE
keymap  C-e PREV_PAGE
keymap  p   BACK
keymap  i   PREV
keymap  b   SEARCH_NEXT
keymap  B   SEARCH_PREV
keymap  R   EDIT
keymap  L   RELOAD
keymap  U   VIEW_IMAGE
keymap  J   GOTO
keymap  E   NEXT_LEFT_UP
keymap  N   NEXT_RIGHT_DOWN
keymap  m   BEGIN
keymap  M   END&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="mailcap-ir-mime-types"&gt;
&lt;h2&gt;mailcap ir mime-types&lt;/h2&gt;
&lt;p&gt;w3m atpažįsta failo tipą ir sugeba atidaryti failą su tam skirta programa. Jei
svetainėje nuoroda veda į PDF failą, tai atvėrus tą nuorodą, failas bus
parsiųstas ir atidarytas su PDF peržiūros programa, nurodyta &lt;em&gt;~/.mailcap&lt;/em&gt;
faile. &lt;em&gt;~/.mailcap&lt;/em&gt; arba /&lt;em&gt;etc/mailcap&lt;/em&gt; failus naudoja daugelis programų. Failo
sintaksė nesudėtinga, todėl visiškai nesudėtinga pačia susitvarkyti programų
sąrašus ir priskirti juos atitinkamiems failų tipams. Štai maniškio failo
turinys:&lt;/p&gt;
&lt;pre class="literal-block"&gt;image/*; muttbgrun qiv %s
text/html; w3m %s; nametemplate=%s.html;
text/html; w3m -dump %s; nametemplate=%s.html; copiousoutput;
application/msword; antiword %s; copiousoutput;
application/octet-stream; antiword %s; copiousoutput;
application/pdf; muttbgrun xpdf '%s';
application/pdf; pdftotext %s -; copiousoutput;&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="nuorodos"&gt;
&lt;h2&gt;Nuorodos&lt;/h2&gt;
&lt;p&gt;Forumuose dažnai pasitaiko nuorodų, kurios užrašytos kaip paprastas tekstas,
todėl norint tokias nuorodas atverti, reikia jas pažymėti, nukopijuoti ir tada
įkėlus į naršyklės adreso eilutę atverti.&lt;/p&gt;
&lt;p&gt;w3m šioje vietoje turi puikią priemonę &lt;strong&gt;MARK_URL&lt;/strong&gt;. Pamačius tokias tekstines
nuorodas, užtenka paspausti dvitaškį „:“ ir visos nuorodas pavirsta tikromis,
aktyviomis nuorodomis, todėl galima tęsti įprastą naršymą, pamirštant apie
žymėjimą ir kopijavimą į adreso juostą.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="man-w3mman"&gt;
&lt;h2&gt;man → w3mman&lt;/h2&gt;
&lt;p&gt;Pasirodo, w3m galima naudoti &lt;strong&gt;man&lt;/strong&gt; puslapių naršymui! Iki šiol kankinausi dėl
LEKPa klaviatūros išdėstymo, nes man įrankio klaviatūros sąsaja nesutapdavo su
mano spaudomais klavišais. Bet kam tai rūpi, kai galiu naudoti tą patį puikiai
sukonfigūruotą w3m. Beje, man puslapiuose dažnai galima rasti nuorodas į
programos svetainę ir panašiai, su w3m galiu tas nuorodas atidaryti vienu
klavišo paspaudimu...&lt;/p&gt;
&lt;p&gt;w3mman man taip patiko, kad savo &lt;em&gt;~/.zshrc&lt;/em&gt; faile įrašiau tokią eilutę:&lt;/p&gt;
&lt;pre class="literal-block"&gt;alias man='w3mman'&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="less-w3m"&gt;
&lt;h2&gt;less → w3m&lt;/h2&gt;
&lt;p&gt;Iš w3m svetainės: „w3m is a text-based web browser as well as a pager like
`more' or `less'“. Ką gi, pabandžiau, patiko, tuo labiau, kad 'less' turi tų
pačių problemų su klavišų kombinacijomis, todėl w3m puikiausiai tinka naudoti
kaip „pagerį“. Tačiau dirbant su dideliais arba kintančio turinio failais, vis
tik less yra nepakeičiamas, todėl, kad šioje vietoje jis veikia tiesiog
žaibiškai greitai. w3m taip pat atidaro didelius failus, tačiau ne taip
greitai, nes atidarymas nuskaito visą failo turinį.&lt;/p&gt;
&lt;p&gt;Išvada: mažiems failams - w3m, dideliems arba kintančio turinio – less.  Tam
reikalui, keli įrašai į &lt;em&gt;~/.zshrc&lt;/em&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;alias less='w3m' alias more='/bin/less -S'&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="newsbeuter-w3m"&gt;
&lt;h2&gt;newsbeuter + w3m&lt;/h2&gt;
&lt;p&gt;RSS srautus skaitau tekstiniame režime naudodamas &lt;strong&gt;newsbeuter&lt;/strong&gt;. Kai noriu
atverti visą straipsnį iš RSS'o, naudoju w3m, kuris yra susietas su
&lt;strong&gt;newsbeuter&lt;/strong&gt;. Kodėl? Todėl, kad skaitant straipsnius, svarbiausia tekstas, o
jei tekste yra paveiksliukas, tai jį nesunkiai galima atverti paveiksliukų
peržiūros programoje, gebančioje paveiksliuką padidinti, sumažinti, pasukti ir
pan.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="mutt-w3m"&gt;
&lt;h2&gt;mutt + w3m&lt;/h2&gt;
&lt;p&gt;w3m puikiausiai atlieka html konvertavimą į paprastą tekstą. Dažnai laiškus
gaunu tik html formatu, todėl w3m pagalba, mutt programoje html laiškus,
skaitau, kaip paprastus tekstinius laiškus.&lt;/p&gt;
&lt;/section&gt;</description><category>floss</category><category>shell</category><category>w3m</category><guid>https://sirex.lt/posts/2009/w3m/</guid><pubDate>Mon, 31 Aug 2009 06:31:00 GMT</pubDate></item><item><title>GPG</title><link>https://sirex.lt/posts/2009/gpg/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Jau senai planavau susikurti GPG raktą ir susikonfigūruoti savo pašto klientą, kad šis automatiškai uždėtu GPG parašą ant mano siunčiamų laiškų. Šiandien pagaliau nusprendžiau tai padaryti. Pamaniau gal būt dar kam nors bus įdomu sužinoti kaip tai daroma.&lt;/p&gt;
&lt;section id="kam-reikalingas-elektroninis-parasas"&gt;
&lt;h2&gt;Kam reikalingas elektroninis parašas?&lt;/h2&gt;
&lt;p&gt;Elektroninis parašas užtikrina, kad pasirašytasis tekstas po pasirašymo nebuvo pakeistas ir išliko lygiai toks pats, koks buvo prieš pasirašant.  Taip pat yra galimybė patikrinti ar parašo savininkas tikrai pasirašė naudodamasis savo parašu.&lt;/p&gt;
&lt;p&gt;Trumpai tariant parašo dėka galima identifikuoti parašo savininką ir įsitikinti, kad pasirašytieji duomenys nebuvo pakeisi trečiųjų šalių.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="elektroninio-paraso-veikimo-principas"&gt;
&lt;h2&gt;Elektroninio parašo veikimo principas&lt;/h2&gt;
&lt;p&gt;El. paraše esminis dalykas yra privatusis ir viešasis raktai. Privatųjį rakta žino tik to rakto savininkas, o viešasis raktas žinomas visiems.  Vienu iš šių raktų galima duomenis užkoduoti, o kitu iškoduoti. Norint pasirašyti po kokiais nors duomenimis iš pradžių sukuriamas tų duomenų vienkryptis atvaizdas (&lt;em&gt;angl.  hash&lt;/em&gt;), tai reiškia kad duomenys paverčiami į nedidelę įvairių simbolių eilutę.  Vėliau panaudojant privatų raktą gautoji duomenų eilutė užkoduojama ir gaunamas parašas.  Kaip ir minėjau, kas yra užkoduota naudojant vieną raktą, kito pagalba gali būti atkoduojama. Šiuo atveju parašas gali būti atkoduotas naudojant viešąjį raktą. Atkodavus parašą gaunamas duomenų atvaizdas.  Pasirašytuosius duomenis pavertus į duomenų atvaizdą ir palyginus jį su iškoduotu raktu galima įsitikinti ar duomenys buvo keisti ar ne.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="kaip-susikurti-savo-privatu-ir-viesaji-raktus"&gt;
&lt;h2&gt;Kaip susikurti savo privatų ir viešąjį raktus?&lt;/h2&gt;
&lt;p&gt;Susikurti savo privatų ir viešąjį raktus nesudėtinga. Paleiskite komandą ir sekite instrukcijas:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --gen-key&lt;/pre&gt;
&lt;p&gt;Po kurio laiko bus sugeneruoti raktai. Juos galite pamatyti įvykdę tokią komandą:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --list-keys&lt;/pre&gt;
&lt;p&gt;Savo viešąjį raktą reikia išeksportuoti ir paviešinti, galima jį persiųsti savo
draugams, patalpinti savo asmeninėje svetainėje arba bendruose raktų
serveriuose. Raktas išeksportuojamas taip:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg -a --export tavo-el-pasto@adresas.lt &amp;gt; tavoviesasisraktas.asc&lt;/pre&gt;
&lt;p&gt;# Kaip sužinoti savo rakto ID ir fingerprint?&lt;/p&gt;
&lt;p&gt;Įvedus tokią komandą:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --list-public-keys el.pastas@example.com
pub   11111/AAAAAAAA 2001-01-01
      Key fingerprint = AAAA AAAA AAAA AAAA AAAA  AAAA AAAA AAAA AAAA AAAA
uid                  Name Surname &amp;lt;el.pastas@example.com&amp;gt;
sub   22222/BBBBBBBB 2001-01-01&lt;/pre&gt;
&lt;p&gt;Į ekraną bus išvestas rakto ID ir fingerpring. Šiuo atveju rakto ID yra
&lt;cite&gt;AAAAAAAA&lt;/cite&gt;, o fingerpring yra tai kas parašyta po „Key fingerpring = “ eilute.&lt;/p&gt;
&lt;p&gt;# Kaip išsiųsti savo raktą į raktų serverį?&lt;/p&gt;
&lt;p&gt;Savo raktą į raktų serverį išsiųsite taip:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --send-keys AAAAAAAA&lt;/pre&gt;
&lt;p&gt;# Kaip importuoti kito žmogaus raktą į savo raktinę?&lt;/p&gt;
&lt;p&gt;Jei žinote rakto ID:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --recv-keys AAAAAAAA&lt;/pre&gt;
&lt;p&gt;Jei žinote tik el. pašto adresą arba rakto savininko vardą:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --search-keys vardas@example.com&lt;/pre&gt;
&lt;p&gt;Suradus ieškomą raktą, galima jį importuoti pagal ID, taip kaip aprašyta aukščiau.&lt;/p&gt;
&lt;p&gt;Jei turite viešojo rakto failą, jį importuoti galima taip:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --import &amp;lt;failo/vardas.asc&amp;gt;&lt;/pre&gt;
&lt;p&gt;# Kaip pasirašyti kitą viešąjį raktą?&lt;/p&gt;
&lt;p&gt;Norint pasirašyti kieno nors raktą, pirmiausia reikia importuoti to žmogaus
raktą į savo raktinę. Kai raktas jau yra importuotas į raktinę, pasirašyti
raktą galima taip:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --sign-key AAAAAAAA&lt;/pre&gt;
&lt;p&gt;Papildomai galima nustatyti rakto patikimumo lygį naudojant šią komandą:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ pgp --edit-key AAAAAAAA&lt;/pre&gt;
&lt;p&gt;Paleidus šią komandą reikia įvesti subkomandą &lt;cite&gt;trust&lt;/cite&gt; ir sekti instrukcijas. Atlikus pakeitimus reikia įvesti &lt;cite&gt;save&lt;/cite&gt; subkomandą.&lt;/p&gt;
&lt;p&gt;Galiausiai raktą reikia išsiųsti į raktų serverį tokiu būdu:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --send-keys AAAAAAAA&lt;/pre&gt;
&lt;/section&gt;
&lt;section id="gpg-ir-mutt"&gt;
&lt;h2&gt;GPG ir mutt&lt;/h2&gt;
&lt;p&gt;Kai visi reikiami raktai sukurti, galima sukonfigūruoti programas, kurios su tuo dirbs. Pašto programa &lt;em&gt;mutt&lt;/em&gt; konfigūruojama labai paprastai, tiesiog faile &lt;cite&gt;~/.mutt/muttrc&lt;/cite&gt; reikia įrašyti tokias eilutes:&lt;/p&gt;
&lt;pre class="literal-block"&gt;set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f"
set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f"
set pgp_import_command="gpg --no-verbose --import -v %f"
set pgp_export_command="gpg --no-verbose --export --armor %r"
set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
set pgp_autosign=yes
set pgp_sign_as=0xABCABCAB
set pgp_replyencrypt=yes
set pgp_timeout=1800
set pgp_good_sign="^gpg: Good signature from"&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Pastaba:&lt;/strong&gt; pakeiskite viešojo rakto kodą &lt;em&gt;ABCABCAB&lt;/em&gt; savuoju. Jį galima sužinoti iš &lt;cite&gt;gpg --list-keys&lt;/cite&gt; komandos išvesties (kodas yra paryškintas):&lt;/p&gt;
&lt;pre class="literal-block"&gt;pub   1024D/ABCABCAB 2007-10-13
uid                  Vardas Pavardaitis
sub   2048g/A3BA3BA 2007-10-13&lt;/pre&gt;
&lt;p&gt;Po to, kai išsaugosite &lt;em&gt;mutt&lt;/em&gt; konfigūracinį failą ir bandysite siųsti laišką, prie jo bus prisegamas parašas.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="gpg-ir-gajim"&gt;
&lt;h2&gt;GPG ir Gajim&lt;/h2&gt;
&lt;p&gt;Pokalbiams naudoju Jabber klientą Gajim. Kai kurie Jabber serveriai naudoja apsaugotą SSL protokolą žinučių perdavimui. Tačiau Jabber protokolas veikia decentralizuotai, tai reiškia, kad žinutės gali keliauti ir į kitus serverius, kurie nebūtinai yra apsaugoti SSL. Jei žinutės keliauja neapsaugotais kanalais, tada bet kas gali tas žinutes perskaityti. Naudojant GPG galima žinutes užkoduoti, tada jos iš siuntėjo, iki pat gavėjo keliaus užkoduotos ir jas perskaityti galės tik tas, kam jos skirtos.&lt;/p&gt;
&lt;p&gt;Kad žinutės keliautu užkoduotos, Gajim kontaktų sąraše reikia pasirinkti „Edit – Accounts“, atsidariusiame lange reikia pasirinkti redaguoti prieigą. Prieigos lange, „Personal Information“ žymelėje reikia nurodyti savo viešąjį raktą.  Kitas žmogus, su kuriuo bendraujama Jabber protokolu, turėtu atlikti panašius veiksmus. Taip pat reikia turėti kito pašnekovo viešąjį raktą ir jį importuoti:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ gpg --import kitas_pasnekovas.asc&lt;/pre&gt;
&lt;p&gt;Importavus kito pašnekovo viešąjį raktą, Gajim kontaktų sąraše, dešiniuoju pelės klavišu paspaudus ant kito pašnekovo ir pasirinkus „Assign OpenPGP Key“ nurodomas to pašnekovo raktas. Po šių veiksmų visos žinutės bus koduojamos.&lt;/p&gt;
&lt;/section&gt;</description><category>floss</category><category>gpg</category><category>shell</category><guid>https://sirex.lt/posts/2009/gpg/</guid><pubDate>Wed, 10 Jun 2009 20:14:00 GMT</pubDate></item><item><title>Youtube video iš komandinės eilutės</title><link>https://sirex.lt/posts/2009/youtube-video-is-komandines-eilutes/</link><dc:creator>Sirex</dc:creator><description>&lt;p&gt;Ar bandėte kada nors žiūrėti Youtube video, HD formatu? Nežinau, kaip pas jus,
bet pas mane tuos HD rodo labai sunkiai. CPU dirba pilnu pajėgumu, o video
rodymas labai stabdo...&lt;/p&gt;
&lt;p&gt;Kas iš tos HD kokybės, jei vis tiek ja negali pasidžiaugti.. :) Visiškai
nesenai, radau paprastą sprendimą:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://bitbucket.org/rg3/youtube-dl"&gt;youtube-dl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tai python skriptas, kuris geba parsiųsti video failą į kompiuterį vėlesniam
peržiūrėjimui. Tai, kas parsiųsta, galima žiūrėti su mplayer, be jokio
stabdymo, kaip normalų filmą.&lt;/p&gt;
&lt;p&gt;Nerašysiu kaip įsidiegti youtube-dl, pateiksiu tik keletą variacijų, kaip jis
gali būti naudojamas.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tarkime gavote youtube nuorodą ir nenorite jungti naršyklės, norite tik
peržiūrėti video.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sprendimas:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ youtube-dl -g "http://www.youtube.com/watch?v=EWBwWHHD1Pc" | xargs mplayer&lt;/pre&gt;
&lt;p&gt;Jei turite greitą interneto ryšį, pridėjus -b parametrą, bus siunčiama
geriausia prieinama video kokybė.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tarkime, naršote Youtube ir ieškote įdomių filmukų, kuriuos norėsite
peržiūrėti vėliau.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sprendimas: surašykite visas rastas filmukų nuorodas į vieną failą ir šios
komandos pagalba, iš karto galėsite viską parsisiųsti:&lt;/p&gt;
&lt;pre class="literal-block"&gt;$ youtube-dl -bta failas-su-nuorodomis.txt&lt;/pre&gt;
&lt;p&gt;Čia tik keli pavyzdžiai, kaip galima panaudoti šį skriptą.&lt;/p&gt;
&lt;p&gt;Atsiminkite, kad yra toks skriptas, pasitelkite išradingumą, fantaziją ir
ateityje tikrai rasite kur jį pritaikyti.&lt;/p&gt;</description><category>shell</category><category>youtube</category><guid>https://sirex.lt/posts/2009/youtube-video-is-komandines-eilutes/</guid><pubDate>Thu, 04 Jun 2009 20:41:00 GMT</pubDate></item></channel></rss>