wget zašlape jednořádkový výstup

wget zašlape jednořádkový výstup
« kdy: 30. 01. 2024, 18:09:31 »
V Wget je taková dost kuriozní chyba, autodestrukce výstupu indikátorem postupu při výstupu do terminálu (-O - - což je asi hned druhá varianta použití si výstup poslat do terminálu) V případě že jde o jednořádkové response bez znaku nového řádku. Typicky JSON volání nebo různé api . V defaultním chování wget ukazuje i ten slavný progressbar, který právě za tohle může.

Člověk je pak zmaten, proč mu to nedává žádnou odpověď. Nikdy by mě nenapadlo, že progressbar je právě tím viníkem.

Kód: [Vybrat]
$ admin ~ wget -O-  "https://www.flabgee.cz/wp-json/wp-statistics/v2/online"
--2024-01-30 18:02:44--  https://www.flabgee.cz/wp-json/wp-statistics/v2/online
Překládám www.flabgee.cz (www.flabgee.cz)… 31....50
Navazuje se spojení s www.flabgee.cz (www.flabgee.cz)|31.15.10.56|:443… spojeno.
HTTP požadavek odeslán, program čeká na odpověď… 200 OK
Délka: 77 [application/json]
Ukládám do: „STDOUT“

-                                                    0%[                                                                                                               ]       0  --.-KB/s               {-                                                  100%[==============================================================================================================>]      77  --.-KB/s    za 0s

2024-01-30 18:02:44 (2,17 MB/s) – zapsáno na standardní výstup [77/77]

$ wget .... -q
{vystupzstranky}$ admin@pc ~

V případě volby "--progressbar=" nebo --progressbar=dot se výstup zamíchá pod řádek Ukládám. V případě použití volby -q se zobrazí ten výstup, ničím nerušený. Sláva. Kdo to ale má dopředu tušit tuhle bombu   :o
curl tímto netrpí.

« Poslední změna: 30. 01. 2024, 20:23:59 od Petr Krčmář »


RDa

  • *****
  • 2 789
    • Zobrazit profil
    • E-mail
Re:wget zašlape jednořádkový výstup v defaultním nastavení.
« Odpověď #1 kdy: 30. 01. 2024, 20:21:26 »
Nikdy by me nenapadlo pouzit -O- nebo -S bez -q, ten bordel na vrchu i mimo progress bar tam proste nepatri.

_Jenda

  • *****
  • 1 607
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:wget zašlape jednořádkový výstup
« Odpověď #2 kdy: 31. 01. 2024, 03:37:32 »
Ve skutečnosti je to oddělené, jedno je stdout a jedno je stderr. Je ostuda, že to terminály pořád mixujou. Já bych si přál mít je třeba barevně odlišené.

Kód: [Vybrat]
wget -O -  "https://www.flabgee.cz/wp-json/wp-statistics/v2/online" > standardni 2> chybovy

tecka

  • ***
  • 160
    • Zobrazit profil
    • E-mail
Re:wget zašlape jednořádkový výstup
« Odpověď #3 kdy: 31. 01. 2024, 05:32:32 »
Je ostuda, že to terminály pořád mixujou.
Terminál zobrazuje data, co do něj sypeš a nemůže nijak řešit to, že program má na několika deskriptorech stejný terminál. To si můžeš pořešit ty (nebo shell) přesměrováním do různých terminálů.

RDa

  • *****
  • 2 789
    • Zobrazit profil
    • E-mail
Re:wget zašlape jednořádkový výstup
« Odpověď #4 kdy: 31. 01. 2024, 09:44:49 »
Je ostuda, že to terminály pořád mixujou.
Terminál zobrazuje data, co do něj sypeš a nemůže nijak řešit to, že program má na několika deskriptorech stejný terminál. To si můžeš pořešit ty (nebo shell) přesměrováním do různých terminálů.

Umi to treba screen splitnout? Nebo nejaky jiny textovy tiling tool?


tecka

  • ***
  • 160
    • Zobrazit profil
    • E-mail
Re:wget zašlape jednořádkový výstup
« Odpověď #5 kdy: 31. 01. 2024, 12:39:08 »
Umi to treba screen splitnout? Nebo nejaky jiny textovy tiling tool?
screen a tmux jde externě ovládat, takže by asi šlo napsat funkci "spliterr [command...]", která třeba vytvoří nové okno a přesměruje stderr "commandu" do něj.