Fórum Root.cz

Hlavní témata => Software => Téma založeno: Ħαℓ₸℮ℵ ␏⫢ ⦚ » 17. 04. 2020, 22:29:02

Název: Proč není výstup příkazů přes watch barevný?
Přispěvatel: Ħαℓ₸℮ℵ ␏⫢ ⦚ » 17. 04. 2020, 22:29:02
Pokud pustím příkaz iostat , automaticky ho mám v barvách. Pokud si chci pustit přes watch (šikovná  věc na periodické sledování výstupu příkazu), proč musí explicitně  být zadaná proměnná  pro zapnutí barev  (před či po)? (Týká se i příkazu ls, běžně vypisuje barevně, ale přes watch to musí být watch -c ls --color)
Kód: [Vybrat]
watch -c S_COLORS=always iostat
S_COLORS=always watch -c  iostat
Podle mě je tam nějaká zvláštní magie jako zjišťování parametrů terminálu (takové ty věci jako že výstup utility htop se přizpůsobí oknu). Napadla mě ještě jiná příčina a sice výchozí proměnné prostředí, které se nepředávají do subshellu.... Co z toho to je?


PS: co znamená "double buffered" IO příkazů (údajně watch, může způsobovat "blikání" ale věřím že to nemá níc společného s VSYNC a double bufferingem u grafických karet
Název: Re:Terminálová magie: výstup příkazů přes watch není defaultně barevný
Přispěvatel: Ondrej Nemecek 17. 04. 2020, 23:16:14
Tuším že přes isatty() program zjistí, zda je výstup terminál nebo pipa.
Název: Re:Terminálová magie: výstup příkazů přes watch není defaultně barevný
Přispěvatel: k3dAR 17. 04. 2020, 23:40:40
[...] proč musí explicitně  být zadaná proměnná  pro zapnutí barev [...]
protoze ji mas nastavenou na auto, viz:
Kód: [Vybrat]
set | grep ^S_COLORS
Název: Re:Terminálová magie: výstup příkazů přes watch není defaultně barevný
Přispěvatel: Filip Jirsák 17. 04. 2020, 23:54:48
Spousta aplikací zjišťuje, zda vypisuje na terminál (a pak využívají vlastností terminálu, třeba barvičky), nebo zda vypisuje do roury (pipe), tedy na vstup jiného programu –  takovém případě vypisují jen čistý text, protože ten jiný program by byl tím  „smetím“ okolo nejspíš zmaten. watch nebo less jsou ty čestné výjimky, které si s výstupem určeným pro terminál poradí. Ale ta vypisující aplikace nemá jak zjistit, kdo je na druhém konci té roury.
Název: Re:Proč není výstup příkazů přes watch barevný?
Přispěvatel: Ħαℓ₸℮ℵ ␏⫢ ⦚ » 18. 04. 2020, 11:09:52
OK, isatty.