Terminál někde ztrácí text

Terminál někde ztrácí text
« kdy: 28. 01. 2024, 14:44:18 »
Mám vzdáleně otevřený ssh terminál, shell bash. Ve schránce mám 20kB text. Když zadám příkaz wc, Enter, vložím pravým tlačítkem text, Dám Ctrl D, tak mi to ukáže
1 1 4096.
 Což je nesmysl. Ale přesto vidím, že se tam vložil celý text podle začátku a konce.

WTF !


Proč se toto děje, kde se chyba děje (jestli to třeba nedělá PuTTy, zatím jsem to nezkoušel napřímo)? V jakém článku Schránka windows-Putty-ssh-bash-wc-
Jak tuto brutální chybu opravit?  Případně nějaký  specifick ýcheckbox v putty :

Jako workarkound zatím mám  že zadám wc <<< "Vložených 20kbtextu" s mezerou na začátku aby mi to nezasralo $HISTFILE 20kB vatou
« Poslední změna: 28. 01. 2024, 19:40:40 od Petr Krčmář »



Re:Terminál někde ztrácí text
« Odpověď #2 kdy: 30. 01. 2024, 17:41:49 »
No to už je pro mě trochu hrabání ve vnitřnostech.
 Ten druhyy link na stackoverflow mám pocit, že tam radí odpověď na něco jiného - na limit délky argumentů nějakého příkazu exec(ve)
Má to nějaké řešení (normální)  user friendly řešení?

RDa

  • *****
  • 2 787
    • Zobrazit profil
    • E-mail
Re:Terminál někde ztrácí text
« Odpověď #3 kdy: 30. 01. 2024, 20:41:58 »
Tohle jsem nezazil.. bezne pastuji mezi strojema data stylem gzip|base64 a na druhe strane opacne.. a rekl bych ze ten pastnutej selection ma vice nez 4096

Kód: [Vybrat]
~ # wc
(Middle mouse button)
(Ctrl+D)
   1096    1111   89552
~ #
« Poslední změna: 30. 01. 2024, 20:44:31 od RDa »

Jinde a Hůř:
No tak applí terminál se chová uplně divně (tedy ne ssh).  Ve schránce mám nějaký JSON obsahující např.  \u00ed. (to ale je uplně jedno, když před vložení napíšu 12345 tak se to vloží o pět znaků méně) Dám wc , Enter, Ctrl + V a vloží mi 1024 znaků a pak to pětkrát zahraje zvuk "Chyba" (jako když do políčka pro číslo se pokouším zadat písemno nebo v Windows Win+R blabalba Enter) a nejde psát nic, písmena ani enter ani control D. Jde maximálně Control D  a nebo umazat backscapem několik znaků. Ale nejde pak připsat pak do stejného počtu. To vysvětluje, že nejde Ctrl+D ani. Po stisku Enter se  nový řádek chová stejně - opět max 1024.

 Vypadá to jako když nějaká komponenta v řetězu readline /wc / bash /apple / tim cr00k zabrání vložit rádek delší než 1024 písmen.

Je tohle normální? Nebo snad chci moc ,když chci vložit jako stdin příkazu text který je bez mezer nebo CR/LF? (Mezery mezi slovy nehrají roli)
« Poslední změna: 31. 01. 2024, 23:26:32 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »


RDa

  • *****
  • 2 787
    • Zobrazit profil
    • E-mail
Re:Terminál někde ztrácí text
« Odpověď #5 kdy: 31. 01. 2024, 23:45:31 »
ok, takze TDE3 terminal + ssh, linux/linux taky nevezme delsi nez 4096 byte vstup, pokud je to na jednom radku.

Plati to, co linkoval nekdo uz driv:
4096 je limit buffra tty
https://github.com/torvalds/linux/blob/v5.11/drivers/tty/n_tty.c#L1681

Edit: tady je k tomu vic: https://unix.stackexchange.com/questions/643777/is-there-any-limit-on-line-length-when-pasting-to-a-terminal-in-linux

Vypnuti editoru samozrejme pomuze:
Kód: [Vybrat]
$ saved=$(stty -g); stty -icanon icrnl; head -n1 | wc; stty "$saved"                       
(paste)
(ctrl+D)
      1       1  176822

Re:Terminál někde ztrácí text
« Odpověď #6 kdy: 01. 02. 2024, 00:14:21 »
Super. Takové znalosti , to se jen tak nevidí.

Já jsem marně zkoušel (exec wc ; sleep 5) případně bez závorek nebo read prom ;

Druhý nejrychlejší workaround je spustit python Enter a='...';len(a) Nerozumím tomu, ale tipuji, že python udělá to podobné, že přečte a upraví setty a pak ho vrátí zpět? Vtipné na tomhle nebo s tím wc<<< "Vložení" ; je, že to vkládání trvá as 3 sekundy a procesor žere 40W.
« Poslední změna: 01. 02. 2024, 00:17:59 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »

Re:Terminál někde ztrácí text
« Odpověď #7 kdy: 01. 02. 2024, 01:03:31 »
Dodám, že šlo o 18kB textu.

Ještě mě napadlo mkfifo temp ; nano ; Vložit, Uložit jako fif, UOK ;  wc temp ; s vhodným & místo ;  aby to nečekalo.
Funkční je až { o=$(wc fifotemp) ; sleep 0.1 ; echo $o; } &  nano .
Neexisuje nějaká konstrukce shellu něco jako « wc fifotemp ; sleep 0.1 ;  » &  nano s tím, že výstup se bufferuje a  vypíše až po skončení závorky ?
« Poslední změna: 01. 02. 2024, 01:09:52 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »