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.

$ 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í.



RDa

  • *****
  • 3 343
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 687
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é.

wget -O -  "https://www.flabgee.cz/wp-json/wp-statistics/v2/online" > standardni 2> chybovy

tecka

  • ***
  • 185
Re:wget zašlape jednořádkový výstup
« Odpověď #3 kdy: 31. 01. 2024, 05:32:32 »
Citace od: _Jenda kdy 31. 01. 2024, 03:37: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

  • *****
  • 3 343
Re:wget zašlape jednořádkový výstup
« Odpověď #4 kdy: 31. 01. 2024, 09:44:49 »
Citace od: tecka kdy 31. 01. 2024, 05:32:32
Citace od: _Jenda kdy 31. 01. 2024, 03:37: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ů.

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


tecka

  • ***
  • 185
Re:wget zašlape jednořádkový výstup
« Odpověď #5 kdy: 31. 01. 2024, 12:39:08 »
Citace od: RDa kdy 31. 01. 2024, 09:44:49
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.