míchá se vstupní a vystupní text
Mám as 7000b vstupního base64 textu po výstupu je to utf-8text český 105 lajn,600 slov,4357 znaků(wc)
Chci ale vysvětlit,proč po zadání v terminálu (base64 -d enter vložit enter ctrld)
Je promixovaný vstup a výstup
V jednom terminálu na úrovni řádků (asi 4 řezy :vstup,výstup,vstup,výstup)a v druhém jen na pár místech, pár řádků má před sebou base64text (třeba do délky půlky řádku)
Proč to není oddělené,proč to není deterministické a proč na jiné platfotmě je malformace jiná?
Vstup je ok,base64 nehlásí žádnou chybu, režim řádků na outuputu je vždy cr+lf
Terminal kde?
Treba krome textu jsou tam nejake ridici znaky.
Terminál v linuxu a androidu. Shell je bash a sh.
Říď.znaky ram nejsou, jde o psaný. Text
Chcelo by to byť konkrétnejší, konkrétne b64 dáta, v akom termináli sa to takto správa? Správa sa to takto pri akomkoľvek texte, alebo len pri tomto?
Zvláštní že při příkazu cat|base64 -d se vynoří uplně jiné chování:
Na jedné platformě se NIC nezmění,na druhé problém kompletně vymizí (tj po příkazu se zobrazí nejdřív zakodovaný tdxt vložený zschránky a poté drkódovaný)
Myslím že se tam děje něco pod povrchem,objasníte co?
prostě se ti začnou kromě bufferů od base64 a terminálu motat i buffery od toho cat
Jestli chápu popis, tak ti jde o to, že máš program, který čte standadní vstup a vypisuje to na standardní výstup.
Ty tam pastneš blok textu, ono ho to hned začne číst a zpracovávat a vypisovat dřív, než se terminál popasuje s tím pastnutým vstupem, který tam ještě hrne, takže ve výsledku to máš na obrazovce promíchané.
takže pokud by sis ten vstup například pastnul do nějakého souboru (jménem x.txt) a pak tam přesměroval ten soubor
base64 -d <x.txt
tak by ti vyjel celý výstup, jak si ho představuješ, nerušený vstupními řádky
Naopak, pokud by sis přesměroval výstup do souboru
base64 -d >y.txt
a pastnul tam ten vstup, tak bys viděl celý vstup pěkně pastnutý a žádný výstup (ten by byl celý v tom y.txt)
A co se toho promíchávání týče, tak je to tak nějak dané jednak konkrétním programem, jednak velikostí vstupních a výstupních bufferů, taky typem terminálu a rychlostí zpracování a samozřejmě to můžou ovlivnit i procesy běžící na pozadí.
Ony obecně tyhle filtry nečekají na ukončení vstupu, ale začnou zpracovávat to, co dostanou, když to dostanou a sypat ven co mají, když to mají a když si na jednom terminálu mícháš jak vstup, tak výstup, tak to pochopitelně je často nějak promíchané.
Hmm a nejde tato nepříjemnost odstínit? Opravdu nechci tvořit (i dočasné) soubory.
Jak*mi všemi metodami?
Base64-d <<<
Echo "ctrl+v" |base64-d
Která je nejsprávnější
While read justcaptured ... ; base64-d <(echo $justcsptured)
Ten "program" je(cat|)base64 -di tečk.
Proč máš problém s dočasnými soubory ??? Ona ta "|" může být ve skutečnosti přes dočasný soubor ...
Otázka je, proč to takhle chceš, co si od toho slibuješ, proč ty soubory nevyhovují?
Ale samozřejmě se to dá řešit i různými jinými způsoby.
Například si otevřeš jeden terminál a spustíš tam program tty, který ti řekne na jakém tty byl spuštěný
otevřeš si druhý terminál, kde spustíš ten program a jeho výstup přesměruješ na ten první terminál a na jeho vstup pak vesele pastneš všechna potřebná data a nebudeš si lámat hlavu s tím, že nevidíš nic zajímavého
A pak se podíváš na ten první terminál a on tam bude ten výsledek
Ano tak to je: nezajímavý text,který ruší .A kdo zvás to má, rozumět on-the fly base64 textu?
Díky za příklad. To je zajímavé