Portál AbcLinuxu, 1. května 2025 01:29
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.
Tiskni
Sdílej:
#!/bin/bash LC_CTYPE=cs_CZ.ISO8859-2 aterm `cat ~/.atermrc` $*Nebo jsem něco nepochopil??
[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
xrdb -merge ~/.Xdefaults
for i in ~/.bashrc.d/* do [ -x "$i" ] && . "$i" donenapsá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!
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 xfPř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 xfTeda 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.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.