bAndie9100 blogja

[[ is not a "better version" of [

[ is a just a command like everything else in your bash script. you should expect everything what you expect from other commands and not more.

[[ and ]] are reserved words in between which your expections about shell's behavior, which hold in every other area in the script, and learned oddities which you may found unintuituve when you started to learn shell but later get used to, should be suspended.

[ "$BASH" != "/bin/sh" ]

Ez egy bejegyzés a Debiános base-files által szállított /etc/profile szkript és a bash közti kooperációs bugról.

Az /etc/profile-ban vagy egy olyan kondíció hogy

if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]

, ami arra hivatott, hogy ha a bash szimulált sh módban fut (ld. man: "If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible [...]", akkor ne töltse be a /etc/bash.bashrc fájlt.

Vizsgálatom szerint viszont a $BASH változó nem csak akkor veszi fel a "/bin/sh" értéket, ha "sh" néven indítottuk a bash-t. Aki nem tudná, az hogy "milyen néven" indítunk egy processzt, azaz a programm nulladik argumentuma, az nem feltétlen azonos a programm fájl nevével, hanem futtatáskor felülírható (ld. execve(2), és a bash built-in exec "-a" kapcsolója).

git prompt for bash (yet another)

Aki natúr parancssorból dolgozott már gittel, bizonyára sokszor hivogatta a különbözõ státusz lekérdezõ parancsokat, git status, git branch, git log, stb. Magam is ebben a cipõben járván akartam felokostani a promptomat.

"Git prompt" kifejezésre keresve talál az ember elég sok megoldást a problémára; szépek, színesek, de valahogy egyik se felelt meg az igényemnek. Egyes - számomra alapvetõnek számító - információkat nem jelenít meg a repóról, más lényegtelen infót meg megmutat.

Itt egy kis ízelítõ a legújabb git prompt implementációból:
















bash bug? declare array in alias

nem tudom ismeretes-e ez a bug:

[code]
## értékadás scalar változónak aliaszból
alias setvar='s=foobar;'
setvar
echo s=$s
# s=foobar
## test passed

## ugyenez több sorban több változónak
alias setvars='a=foo
b=bar;'
setvars
echo a=$a b=$b
# a=foo b=bar
## test passed

## értékadások plusz valami parancs
alias setvars='a=foo
b=bar
pwd;'
setvars
echo a=$a b=$b
# /tmp
# a=foo b=bar
## test passed

## értékadás tömbnek aliaszból
alias setarray='a=(q w e);'
setarray
echo a=${a[@]}
# a=q w e
## test passed

## értékadás tömbnek aliaszból plusz valami
alias setarray='a=(q w e)
pwd
'
setarray
echo a=${a[@]}
# a=pwd q w e
## test failed

Local Email Viewer and Composer

Pár hete a hupon is kérdezősködtem, ismer-e valaki olyan email klienst, email nézegető programot, ami nem kapcsolódik előre konfigurált accountokhoz, meg lehet vele nézni egy standalone nyers email fájlt.
Mivel nem igazán találtam ilyet, elkezdtem fejleszteni a sajátomat.
Mostmár elég jó stádiumhoz ért.
Továbbá igaza lett, azoknak, akik nem hitték, hogy ilyen kevés tudás-igényem van a program iránt: a tervezettnél több feature került bele, de még mindig elég lightweight az eredeti célhoz.

download gemlv

másodperc pontosságú feladatütemezés Linuxon

Felmerült bennem az őrült igény, miszerint másodperc pontossággal szeretnék job-ot indítani. Erre a hagyományos unix daemonok nem látszottak megfelelő segítséget nyújtani. Gányoltam sleep-eléssel a megadott idopont előtti egész perckor elindított job-ban, de az nem az igazi, mert ugyebár akkor a job már elindult és pl. az "utolsó pillanatban" nem lehetne törölni.

Bohó opensource aktivistához hűen bele is másztam először az `at' ősi forráskódjába - mondván talán az kisebb falat lesz mint a cron.
És még a vártnál is egyszerűbbre sikeredett a "sec-prec" (seconds precision) patch: Ugye az at-nek `-t' kapcsolóval meg lehet adni az indítási időt, viszont direkt úgy írták meg, hogy ne vegye figyelembe, csapja le a másodperceket!
Tehát miután töröltem a `timer -= timer % 60' sort így nagyjából megoldottam a topic indító problémát, még maradt is időm egy párat fícsörözni: az at job-ot az aktuális (at parancs meghívásakori) SHELL-lel futtassa; report email-ben X-At-Job header-ben adja vissza a job számát; az üzeneteiben ne paddolja feleslegesen space-ekkel a job számát.

df --local

Mindenki használja a `df` parancsot, de vajon tudod-e, hogy mit csinál a --local kapcsoló?
Az én megszokásom `df -hPlT` alakban meghívni, ha hirtelen a fájlrendszerek kihasználtságára vagyok kiváncsi,

a kapcsolók gyakorlati jelentése:
-h használjon méret mértékegységeket
-P hosszú device name esetén se tördelje a sorokat
-T fájlrendszer tipusát is mutassa
-l csak helyi fájlrendszereket listázzon - ezt a lassú elérésű nfs/glusterfs/sshfs-ek tanították meg nekem.

De mi minősül a df számára lokálisnak?
Debián coreutils 8.5-be belenézve hamar megtalálható egy ME_REMOTE makró, ami teljesül ha
1. a fájrendszer neve kettőspontot (:) tartalmaz, vagy
2. smbfs vagy cifs tipusú ÉS perperrel (//) kezdődik.

bash capture both stdout and stderr without named pipe or temporary file

Körülbelül a blogbejegyzés címével megegyező kulcsszavakkal próbaltam megoldást találni arra a triviális IPC programozási problémára, ami a shell tipusú szkriptnyelveken kívül minden nyelvben egyszerű, straight-forward megvalósítható, nem kell hozzá mágia, trükk.
bash-ben még kell.
Remélem, hogy csak még ilyen a helyzet, és egyszer fejlesztenek bele olyat amivel ez megoldható.
különben van bizodalmam a jó irányú fejlődése iránt. pl. nagyon örültem, amikor belekerült a "<>" redirection, a /dev/tcp álfájl, a "caller" és "coproc" parancs.

deb.uucp.hu

A fórum olvasói észrevehették már, hogy aláírásomban egy sources.list sorral spam-elem az igényesebb topikok olvasóit.
Ezen saját debian repó létrejöttéről írok.

A weben is böngészhető csomagok között van amit magam gyúrtam deb csomaggá, ezek foglalnak helyet a 'yazzy' tárolóban - nem összetévesztendő a debián 'jessie' kiadással,
az ipszilonos kódnevet már hamarabb kitaláltam :-)
Továbbá itt a 'yazzy' nem is release-t jelöl, hanem tárolókomponenst.

A 'repack' komposensben olyan csomagok vannak, amik a hivatalos debián repóban is léteznek azonos néven.
Valami sajátos igény miatt átírtam, bővítettem őket; igyekszem a Description mezőbe vagy a changelog-ba vezetni.
Hiányosságom továbbá, hogy a módosított forrás nem deb-src tárolóból érhetőek el, hanem a csomagban /usr/src/[Package] alatt.
De ha nem akarja az ember ezeket a változtatásokat igénybe venni, akkor egyszerűen kihagyja a 'repack' komposenset.

yet another hupper extension (hupera)

Operásoknak (köztük magamnak) írok hupozáskönnyítõt!
Kódneve: hupera.

Mirror:
http://bandie91.x3.hu/pub/?t=2&dir=L211bmthbS91c2VyanMvSHVwZXJh

Install
- másold be a fenti fájlt az Opera Userjs könyvtárába (ami alapról ~/.opera/userjs/) .js kiterjesztéssel.

Features
- hozzászólás és komment szerkesztés helyben
- új kommentek tételes felsorolása idõrendben, tagok nevével a jobb oszlopban
-- tetszés szerinti szinezése
-- elolvasott kommentek megjelölése
- quasi törölt kommentek elrejtése
- google keresõ mezõ nem _blank -ban nyílik meg
- többoldalas topicok egy oldalon
- szín beállítása a saját név kiemelésére (musthave!!!!!111)
- közvetlen saját tracker link legfelül
- háttérben figyeli az új hozzászólásokat
-- állítható idõzítõvel
- indentálások méretezése
- update mechanizmus (javítva)
- feliratkozni lehet a topikokra (beküld egy subscribe hozzászólást)
- kijelölt szöveg idézése a hozzászólásban
- bejelentkezési ablak az orrod elõtt