Portál AbcLinuxu, 9. května 2025 21:08

Dotaz: náhrada read -n1

4.2.2015 10:42 RM
náhrada read -n1
Přečteno: 408×
Odpovědět | Admin
Nevíte někdo, čím se dá nahradit bashovská verze příkazu read? Záludnost je v tom, že jej používám v procesu, který se spouští na pozadí hlavního skriptu a musím tedy zadat také příslušné zařízení, ve kterém je skript spuštěn:

read -n1 k < /dev/tty1

proces běží jen v konzoli, kde zachytává stisk klávesy. Pod X.org to řešit nepotřebuju. Jde mi o to, uděla skript na bashi nezávislý.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.2.2015 13:25 logik
Rozbalit Rozbalit vše Re: náhrada read -n1
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi by bylo dobré napsat ne jaký shell nechceš používat, ale jaký shell používat CHCEŠ.
4.2.2015 13:44 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
chci aby to bylo POSIX compatible
4.2.2015 13:56 luky
Rozbalit Rozbalit vše Re: náhrada read -n1
Musite si prepnout terminal do "non-canonical" rezimu, coz jde udelat nekolika prikazy, ale zadny z nich IMO neni v POSIXu.
4.2.2015 14:48 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
Nad tímhle řešením jsem zatím nepřemýšlel, možná je to opravdu jediná cesta. Zatím mě spíš vrtá hlavou, proč to nejde pomocí dd. Náhrada za:

k="`dd if=/dev/tty1 bs=1 count=1 2>/dev/null`"

z nějakého důvodu nefunguje (v podprocesu, který je spuštěn na pozadí).
4.2.2015 15:04 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
aha...,ono se to stejně beze ^M neobejde. Zkusím si pak pohrát s přepnutím do non-canonical.
4.2.2015 16:46 luky
Rozbalit Rozbalit vše Re: náhrada read -n1
To radkovani dela primo kernel. Aplikace, co cte, ho musi explicitne vypnout.
4.2.2015 17:45 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
trochu mi zmátlo, proč v terminálu, kde jsem používal skript s read, se pak dd chovalo tak, že ^M nebylo potřeba; jenže po tom, co jsem se odhlásil a znovu přihlásil, se už dd chová jak jsem napsal. Jakoby si to read přepnul do non-canonical a pak už to nevrátil zpět. Celá ta záhada s dd (kdy jsem si už myslel, že to jde s dd vyřešit) je asi v tom, že podproces ukončuji pomocí kill -HUP a read to z nějakého důvodu už nevrátil na canonical.
4.2.2015 18:48 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
Existuje tedy nějaká utilitka, která by to dokázala explicitně z shellu vypnout a zapnout?
Řešení 1× (petr_p)
4.2.2015 19:31 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: náhrada read -n1
Můj manuál stty(1p) tvrdí, že POSIX-1.2008 zná parametr -icanon.
4.2.2015 22:55 RM
Rozbalit Rozbalit vše Re: náhrada read -n1
to je ono, díky

Založit nové vláknoNahoru

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

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