Portál AbcLinuxu, 1. května 2025 01:29

Pseudo-konfigurační soubor

20.2.2005 14:42 | Přečteno: 1334× | © | poslední úprava: 20.2.2005 15:09

Máte rádi některý program a štve vás ta šíleně dlouhá řádka parametrů, která způsobuje, že program vypadá přesně tak, jak si to přejete? Jedním z mnoha možných řešení, které je především vysoce přehledné, může být vytvoření pseudo-konfiguračního souboru v domácím adresáři a aliasu či krátkého scriptu.

Například já si pro svůj oblíbený ATerm vytvořil v domácím adresáři jednoduchý pseudo-konfigurační soubor ~/.atermrc.

-geometry 88x31
-tn xterm
-sl 10000
-fn -misc-fixed-medium-r-*-*-14-*-*-*-*-iso8859-2
-bg black
-fg white
-cr red3
--color1 darkred
--color3 orange
--color4 navyblue
--color5 magenta
--color6 deepskyblue
--color7 white
-txttype true
-bgtype notile 

Pak již stačilo jen vytvořit jednoduchý scriptík /usr/local/bin/xaterm.

#!/bin/bash
LC_CTYPE=cs_CZ.ISO8859-2 aterm `cat ~/.atermrc` $*

A je to! Programu aterm je při zavolání scriptu xaterm předán obsah ~/.atermrc, který obsahuje zapsané parametry pro příkazový řádek programu aterm. Jednoduché, že? Obdobně lze pseudo-konfigurační soubory utvářet i pro jiné programy.

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

20.2.2005 15:07 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
Rozbalit Rozbalit vše Je to hezké...
... jen mi tam někde chybí volání toho atermu. Takže takto popsaný postup nefunguje. Takže pokud se nemílím, tak by v souboru xaterm mělo být
#!/bin/bash
LC_CTYPE=cs_CZ.ISO8859-2 aterm `cat ~/.atermrc` $*
Nebo jsem něco nepochopil?? :-)
20.2.2005 15:09 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: Je to hezké...
Dik. Selhalo copy/paste. Fixed!
20.2.2005 15:21 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Proč nepoužít třeba .Xdefaults?
[tsunami@vodik]$ cat ~/.Xdefaults 
aterm.fading: 90 
aterm.cursorColor: rgb:66/77/99
aterm.cursorColor2: rgb:18/18/18
aterm.cursorUL: rgb:d0/90/70
aterm.colorBD: rgb:70/80/a0
aterm.transparent: true
aterm.transpscrollbar: true
aterm.title: aterm
aterm.shading: 30
aterm.saveLines: 2048
aterm.foreground: rgb:cc/cc/cc
aterm.font: -misc-fixed-medium-r-normal-*-*-120-*-*-*-*-iso8859-2
aterm.termName: xterm
-- Nezdar není hanbou, hanbou je strach z pokusu.
20.2.2005 15:29 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
ještě jsem zapměl na načtení .Xdefaults z .xinitrc:

xrdb -merge ~/.Xdefaults
-- Nezdar není hanbou, hanbou je strach z pokusu.
20.2.2005 17:03 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Jasně, ale aterm je danej jen jako příklad. :-D
21.2.2005 12:54 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Nevím proč, ale mám takovej pocit, že programy, který nepodporují Xresources, nemají své vlastní konfigurační soubory a zárovň mají tolik parametrů, aby to stálo za to, tvoří množinu která je nápadně podobná prázdné množině. Pokud náhodou není, lze to mnohem snadněji vyřešit pomocí příslušného alias v .bashrc. Nu což, jako cvičení to není špatné, ale praktický význam nulový.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
21.2.2005 14:19 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Alias je fajn věc, dá se sice zapsat i na několik řádků, ale akorát to zbordelí ~/.bashrc. Tohleto používám, když je parametrů fakt hodně, třeba i 30, a je to krásně přehledné. :-D
22.2.2005 09:35 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Hm a příkaz . (source) znáš? Co třeba
for i in ~/.bashrc.d/*
do
  [ -x "$i" ] && . "$i"
done
napsáno v ~/.bashrc a je vymalováno. Představa, že se mi při každém spuštění mé oblíbené aplikace spustí subproces shellu, rozparsuje nějakej texťák a ten poté co narazí na příkaz exec provede výměna toho běžícího procesu za můj oblíbený program, mě děsí. Co je horší, to tvoje řešení tam ten subshell nechá běžet! Fuj!
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
23.2.2005 02:46 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Source samosebou znám. Hm, `ps -A | grep cat mi nic nevypisuje'. Jakej subproces kde běží?
23.2.2005 09:43 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
prohlédni si ps xf. To co popisuješ udělá
11228 ?        S      0:00  \_ rxvt
11229 pts/4    Ss     0:00      \_ bash
11367 pts/4    S      0:00          \_ /bin/sh bin/rxvt
11368 pts/4    S      0:00          |   \_ rxvt
11369 pts/5    Ss+    0:00          |       \_ bash
11381 pts/4    R+     0:00          \_ ps xf
Přitom stačí napsat před ten tvůj aterm exec a bude tam místo toho (teda já používám rxvt, ale proces jako proces)
11228 ?        S      0:00  \_ rxvt
11229 pts/4    Ss     0:00      \_ bash
11338 pts/4    S      0:00          \_ rxvt
11339 pts/5    Ss+    0:00          |   \_ bash
11351 pts/4    R+     0:00          \_ ps xf
Teda o celý jeden proces míň. Ten cat provede ten shell ještě před spuštěním toho terminálu, ale důležité je, že ten tvůj script nechá běžet ten shell. Nicméně to stejně znamená, že ten shell se spouští úplně zbytečně a úplně zbytečně se se čte z disku nějaký wrapper a úplně zbytečně se parsuje a úplně zbytečně se spouští nějaká cat, který úplně zbytečně čte nějaký konfigurák a úplně zbytečné je tam pak nechat ještě ten shell hnít v paměti a nepoužít exec.

Nicméně místo
#!/bin/bash
LC_CTYPE=cs_CZ.ISO8859-2 aterm `cat ~/.atermrc` $*
bych rozhodně napsal přinejmenším
#!/bin/bash
exec aterm $(<~/.atermrc)
protože ten aterm stejně spustí ~/.bashrc a nastavení LC_CTYPE=cs_CZ.ISO8859-2 a ostatní locale se aspoň u mě nastavuje tam, nespustí se cat, ale použijou se interní procedury bashe a hlavně se ten bash nakonec nahradí procesem atermu a nezůstane tam zbytečně strašit. No, vlastně bych to vůbec neřešil tímhle způsobem a použil Xresources, nebo alias a včechny tyhle opičinky bych si ušetřil.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
25.2.2005 02:39 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: Proč nepoužít třeba .Xdefaults?
Locales nastavuji pro různé programy různě, takže to v ~/.bashrc nemám specifikováno.

Každopádně dík za vysvětlení a vylepšení scriptu.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.