2009-10-02 9 views
5

Czy można dokonywać wyborów lub ankiet na deskryptorach plików w bashu? Istotą tego, co staram się robić to w ten sposób:Odpowiednik wyboru lub ankiety w bashu

mkfifo fifo 
exec 3<fifo 
PROMPT_COMMAND="while read -t 0 line; do echo \$line; done <&3" 

exec jest nie do utrzymania rury otwarty (inaczej byłoby zamknięte na końcu każdej pętli). Teoretycznie mogłoby to wyprowadzić wszystko, co wchodziło w rurę przed każdym monitem. Wydaje się jednak, że nie działa, tak jak przy -t0 nawet nie próbuje czytać.

-t 1 działa jak urok, ale to zmusza jednosekundowe opóźnienie przy każdej podpowiedzi, co nie jest tym, czego chcę.

Optymalnie byłoby zrobić select z .2 sekundowym limitem czasu (jeśli wykonuję polecenie, które z kolei powoduje, że coś ma być zapisane w rurze, z opóźnieniem będzie krótkie, ponieważ pracuję z asynchronicznym wiadomości) i to opóźnienie, z którym mogę żyć. Limit czasu zerowego prawdopodobnie byłby w porządku, a następnie po prostu utworzę program, który będzie miał opóźnienie w sekundach.

Wszelkie pomysły?

Odpowiedz

1

stumbled on this ja dzisiaj, a to rzeczywiście rozwiązuje mój problem dość elegancko. screen pozwala na podzielenie bieżącego okna terminala, w którym mogę zredukować jedną część okna do zaledwie kilku linii, w których zachowuję dane wejściowe, i tylko cat fifo w drugiej części okna.

Ekran zdecydowanie kołysze o wiele więcej, niż już wiedziałem (samo odłączenie czyni go jednym z najlepszych narzędzi w historii).

0

Czy poniższe wyrażenia nie są równoważne?

$> tail -f kolejka

Można również określić okresy snu ('-s'), ponownych prób i --max-niezmienione-Stats itp

+0

Ogon nie (ogon jest dla plików, które można wyświetlić), kot zrobiłby to, co sugerujesz, ale zepsułoby to twoją linię poleceń, jeśli dane pojawią się podczas pisania polecenia. Lub musisz to zrobić w innej konsoli, jeśli ją masz. – falstro