GNU/Linux >> Znalost Linux >  >> Linux

Kam jdou únikové kódy Ansi, když přejdu do jiného procesu? Mohu si je nechat?

Někdy chci dát barevně kódovaný výstup z procesu, např. grep... ale když to přenesu do jiného procesu, např. sed, barevné kódy jsou ztraceny…

Je nějaký způsob, jak udržet tyto kódy nedotčené?

Zde je příklad, který ztrácí barevný výstup:

echo barney | grep barney | sed -n 1,$\ p   

Přijatá odpověď:

Mnoho programů, které generují barevný výstup, zjišťuje, zda píší do TTY, a vypínají barvy, pokud ne. Je to proto, že barevné kódy jsou nepříjemné, když chcete zachytit pouze text, takže se automaticky snaží „udělat správnou věc“.

Nejjednodušší způsob, jak zachytit barevný výstup z takového programu, je říct mu, aby psal barvu, i když není připojen k TTY. Budete si muset přečíst dokumentaci k programu, abyste zjistili, zda má tuto možnost. (např. grep--color=always možnost.)

Můžete také použít expect skript unbuffer vytvořit pseudo-tty, jako je tento:

echo barney | unbuffer grep barney | sed -n 1,$\ p

Linux
  1. Jak zobrazit výstup běžícího procesu v jiné relaci Bash?

  2. Výstup procesní substituce je mimo provoz?

  3. Kam jdou soubory, když je vydán příkaz Rm?

  1. Jak nasměruji nebo přesměruji výstup curl -v?

  2. Jak mohu udržet proces při životě po ukončení relace putty?

  3. Jak mohu znát absolutní cestu běžícího procesu?

  1. Terminál, který podporuje únikový kód ANSI kurzívou?

  2. Co dělat, když Ctrl + C nemůže zabít proces?

  3. Jak analyzuji výstup příkazu find, když názvy souborů obsahují mezery?