Sziasztok, deluge torrent kliens-től parancssorban lehet információkat kérni:
'deluge-console info' -t parancssorba beírva szépen kiír mindent az éppen futó letöltésekről.
de: ha ezt átirányítom fájlba, akkor ugyan az a szöveg, amit az előbb teljesen jól kiírt a konzolra,
hibaüzenettel megszakad:
-------------------------------
deluge-console info >> teszt.txt
teszt.txt-ben:
Error getting torrent info: [Failure instance: Traceback: : 'ascii' codec can't encode character u'\xe9' in position 13: ordinal not in range(128)
... és még sok sor.
----------------------------------------------------
próbáltam így is: deluge-console info 1> teszt.txt, eredmény ugyan az.
Kérdés 1: hogy lehetséges, hogy más a kimenet fájlba, mint konzolra? Eddig azt hittem, hogy az átirányított programnak tudomása sincs az átirányítás tényéről, itt pedig látszik, hogy az elképzelésemmel ellentétben nem igaz, hogy program->kimenet-> másik fájl, hanem program->másik fájl átirányítás történik, és a kiíró program számára más felület látszódik, mint egy normális konzol.
Kérdés 2: hogy lehet úgy lementeni a konzol kimenetét, hogy a kiemenetet író program azt higgye, hogy konzolra ír?
próbáltam még 'deluge-console info | tee fajlnev.txt' módon is átirányítani, úgy sem ment.
Köszönöm dio
- 1843 megtekintés
Hozzászólások
(ez csak subscribe kíváncsiságból, eddig végül mindig megúsztam hogy utána kelljen nézni, de azért annyira fura nem kellene legyen számodra, hisz nagyon sok program van ami a konzolra mindenféle szépítéseket, fénylő betűk, aláhízások szerepelnek, amik már fájlba/csőbe irányítva nem, vagy egy tipikusan bináris kimenettel rendelkező program (pl kitömörítő) beszól ha véletlen a konzolra irányítod...)
- A hozzászóláshoz be kell jelentkezni
Szia, persze ez lehetséges hogy vannak egyedi formázások egy kimenetben, de alaposan megnéztem: tök sima egyszerű betűket ír ki a 'deluge-console info'
ráadásul az átirányított kimenetbe elkezdi a szöveget belerakni, majd jó pár olvasható sor után jön a unicode hiba.
vagyis valahol szerintem van egy karakter, amit a konzolra ki tud írni, de az átirányításon nem megy át.
Ezt nem értem, hogy hogy lehet hogy van olyan betű ami olvasható, rendezett szövegben látszik a konzolon, de az átirányításban nem.
Szia, dio
- A hozzászóláshoz be kell jelentkezni
maga a program kapja meg hogy hova írjon, nem egy levegőben lógó cső a kimenete amit pl a shell kezel, azaz látja hova csatlakozik
hibás a deluge, próbál más kimenetet adni a konzolra mint a "stdout"-ra; most kapásból gugli://"deluge-console redirect" pl ezt adta: http://dev.deluge-torrent.org/ticket/1248 itt azt írja fixed, szóval vagy mégsem vagy régi a deluge-d
esetedben az a karakter ahol elakad ha jól látom a "Ú", ami kilóg az ascii-ból ahogy írja is
tehát ha a deluget nem tudod rávenni hogy jól működjön, akkor a konzolt magát kell átirányítanod
- A hozzászóláshoz be kell jelentkezni
Ügyes vagy, én a hibaüzenetre kerestem rá, de a te keresésed ötletesebb, köszönöm!
dio
- A hozzászóláshoz be kell jelentkezni
Szia,
a /dev/ttyS0 átirányításra gondolsz?
Keresem hogy hogy lehetne megoldani, ha esetleg van rá megoldási javaslatod, kérlek írd le, ilyet még nem csináltam, nem tudom hogy hogy kell.
Szia dio
- A hozzászóláshoz be kell jelentkezni
igazából a shellre gondoltam, de a te ötleted is működhet pl:
script -a -c "deluge-console info" teszt.txt
vagy amit kb "script" csinál:
cat /dev/tty >> tesz.txt &
PID=$$
deluge-console info
kill $PID
(de csak tippelek)
- A hozzászóláshoz be kell jelentkezni
Ez működik, tökéletes!
a script -a -c "deluge-console info" teszt.txt -t kipróbáltam, jól rögzíti a kimenetet!
köszönöm
dio
- A hozzászóláshoz be kell jelentkezni
Egyetlen UNIX program esetén sem szabad feltételezni, hogy átirányítással ugyanaz lesz a kimenet, mint anélkül:
$ perl -E 'say "STDOUT is ", -t STDOUT ? "a tty" : "not a tty"'
STDOUT is a tty
$ perl -E 'say "STDOUT is ", -t STDOUT ? "a tty" : "not a tty"' | cat
STDOUT is not a tty
Nem tudom, hogy ez jelentette-e a problémát, de gondoltam segíthet.
- A hozzászóláshoz be kell jelentkezni
Pontosabban attol hogy terminalra vagy masra (file, pipe) ir.
- A hozzászóláshoz be kell jelentkezni
Azért azt is tegyük hozzá, hogy egyetlen UNIX-program esetén sem kéne másként működnie attól függően, hogy terminálra, vagy nem terminálra van-e az az STDOUT állítva. (Ellenpéldáról tudok - kezdve az ls-sel, folytatva a more/pg/less/egyéb lapozókkal -, de ettől még nem kéne így működniük.) És persze nem *magával* az átirányítással van a baj, hanem hogy az STDOUT éppen terminál, vagy nem (pl. az isatty(3) szerint). Lásd:
$ ls
$ ls | cat
$ ls > /dev/tty
parancsokat. Ahol a végeredmény mind a 3-nál a képernyőn jelenik meg, ebből az 1. és a 3. esetén ugyanúgy, pedig a 2. és a 3. esetén is van átirányítás :-) Csak ugy az STDOUT az 1. és 3. esetben terminál, míg a 2. esetben egy cső. (Ahogy itt felettem írták is.)
- A hozzászóláshoz be kell jelentkezni
Azért azt is tegyük hozzá, hogy egyetlen UNIX-program esetén sem kéne másként működnie attól függően, hogy terminálra, vagy nem terminálra van-e az az STDOUT állítva.
Nem flame-nek szánom, de nem értek egyet. Kifejezetten hasznos, hogy egy grep a pattern matchet színnel is kiemeli, ha terminálra ír (újabban). Ha nem terminálba ír, akkor a színezést adó vezérlő karakterek elég sok gondot okoznának, ezért "kihagyja" őket. Ez kényelmi kérdés, és nem is sérti a UNIX filozófiát.
A gömb nem attól jó, hogy kocka formájú.
- A hozzászóláshoz be kell jelentkezni