ls -l --color=auto | tee output.log
Boru / tee olmadan renklidir. Kullanırken renkli kalması için nasıl yapabilirim tee
(sadece ekranda renkli olabilir, günlüklerde renkleri umursamıyorum).
ls -l --color=auto | tee output.log
Boru / tee olmadan renklidir. Kullanırken renkli kalması için nasıl yapabilirim tee
(sadece ekranda renkli olabilir, günlüklerde renkleri umursamıyorum).
Yanıtlar:
unbuffer
Herhangi bir komuttan önce, aslında başka bir yürütülebilir dosyaya bağlansa bile etkileşimli bir çıktıya yazdığını düşünmesini sağlamak için basitçe ekleyin . Bu durumda rengi koruyacaktır ls
.
Örneğin
unbuffer ls -l --color=auto | tee output.log
Zaten yüklü değilse, Ubuntu ve diğer Debian-ish Linux dağıtımlarında unbuffer
yaparak yükleyebilirsiniz .
sudo apt-get install expect-dev
xcodebuild
- bunun yerine renksiz kesik çizgiler oldu. unbuffer xcodebuild | less -R
Ancak kusursuz çalıştı.
expect-dev
Pakete ihtiyacınız yok . expect
yeterlidir.
Ls seçeneğini kullanın --color=always
--color=auto
çıktıyı bir boru hattına renklendirmez - açık nedenlerden dolayı.
Ana sayfa aşağıdakileri söylüyor:
--Color = auto ile, renk kodları yalnızca standart çıkış bir terminale bağlı ise verilir (tty).
ls -l
sadece bir örnekti. Tamamen farklı bir komuta sahibim (heroku logları) tee
. Ve yürüttüğüm komutu değil, tee / pipoyu "düzeltmek / değiştirmek" istiyorum.
ls
. Heroku kayıtları da dahil olmak üzere tüm programlar için sorunu gideren cevabımı görün.
Ben genişletmek edeceğiz script
kabul cevabın yorumunda verilen çözüm. Kullanılması script
yapamazsın ya yüklemek istemiyorum durumda yararlı olabilir bekliyoruz içeren paketi unbuffer
komutunu.
ls
Çıktıyı stdout'a ve renk kodlarıyla dosyaya yazdır :
script -efq output.log -c "ls -l --color=auto"
nerede ( man script
):
-e, --return Return the exit code of the child process. Uses the same format as bash termination on signal termination exit code is 128+n. -f, --flush Flush output after each write. This is nice for telecooperation: one person does `mkfifo foo; script -f foo', and another can supervise real-time what is being done using `cat foo'. -q, --quiet Be quiet (do not write start and done messages to either standard output or the typescript file).
Görüntüle renklerle çıkış dosyasını:
less -r output.log
-e
aynı --return
- her ikisine de gerek yok; -efq
olduğunu --return --flush --quiet
.