Tanpa pipa / tee warnanya. Bagaimana saya bisa membuatnya agar tetap berwarna saat menggunakan tee(hanya bisa diwarnai di layar, saya tidak peduli tentang warna dalam log).
Cukup masukkan unbuffersebelum perintah apa saja untuk membuatnya berpikir itu menulis ke output interaktif bahkan jika itu sebenarnya piping ke executable lain. Ini akan mempertahankan warna dalam kasus ls.
Sebagai contoh
unbuffer ls -l --color=auto | tee output.log
Jika Anda belum menginstalnya, pada Ubuntu dan distribusi Linux Debian-ish lainnya Anda dapat menginstal unbufferdengan melakukan.
Ini menyebabkan file yang dihasilkan berisi kode warna (tentu saja); apakah ada cara untuk mencetak file dengan cara yang menggunakan kode warna dan menampilkan warna di terminal dengan benar?
Kyle Strand
2
Ugh, itu membuat entri kata sandi menunjukkan kata sandi Anda di teks lengkap!
AndiDog
@ Tgr Solusi itu tidak berhasil bagi saya di OS X mencoba untuk mendapatkan output berwarna mentah xcodebuild- sebagai gantinya saya mendapat garis cincang tanpa warna. unbuffer xcodebuild | less -RNamun, bekerja dengan sempurna.
Slipp D. Thompson
2
Anda tidak membutuhkan expect-devpaket itu. expectcukup.
Yajo
11
Gunakan opsi ls --color=always
--color=auto tidak akan mewarnai output ke pipa - untuk alasan yang jelas.
Halaman utama mengatakan sebagai berikut:
Dengan --color = auto, kode warna hanya keluaran jika keluaran standar terhubung ke terminal (tty).
BAIK. Itu menjelaskannya. Tapi bisakah saya masih bisa melihat warna di layar? (Lagipula itu TTY). Saya tidak keberatan TIDAK memilikinya di logfile, tapi saya pasti ingin mereka ada di layar saya.
Paweł Gościcki
Saya pikir saya membuat diri saya tidak cukup jelas. ls -lhanyalah sebuah contoh. Saya memiliki perintah yang sama sekali berbeda (log heroku) yang menghapus warna saat disalurkan ke tee. Dan saya ingin "memperbaiki / mengubah" tee / pipa, bukan perintah yang saya jalankan.
Paweł Gościcki
1
@ Pamel, Anda tidak dapat dengan mudah memperbaikinya di tee / pipa karena tee / pipa tidak melucuti kode warna ini. Masalahnya adalah bahwa perintah awal melihatnya bukan menulis ke terminal. Anda memerlukan pseudo-terminal yang bertindak seperti pipa tetapi perintah yang melihat sebagai terminal.
RedGrittyBrick
Hm ... cukup adil. Saya kira saya hanya perlu menerima bahwa memang begitulah adanya.
Paweł Gościcki
3
@ PawełGościcki jawaban ini hanya untuk memperbaiki masalah ls. Lihat jawaban saya yang memperbaiki masalah untuk semua program, termasuk log heroku.
Eamonn O'Brien-Strain
3
Saya akan memperluas scriptsolusi yang diberikan dalam komentar dari jawaban yang diterima. Menggunakan scriptmungkin berguna jika Anda tidak bisa atau tidak ingin menginstal paket harapan yang berisi unbufferperintah.
Cetakls output ke stdout dan file dengan kode warna :
script -efq output.log -c "ls -l --color=auto"
dimana ( 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).
Jawaban:
Cukup masukkan
unbuffer
sebelum perintah apa saja untuk membuatnya berpikir itu menulis ke output interaktif bahkan jika itu sebenarnya piping ke executable lain. Ini akan mempertahankan warna dalam kasusls
.Sebagai contoh
Jika Anda belum menginstalnya, pada Ubuntu dan distribusi Linux Debian-ish lainnya Anda dapat menginstal
unbuffer
dengan melakukan.sumber
xcodebuild
- sebagai gantinya saya mendapat garis cincang tanpa warna.unbuffer xcodebuild | less -R
Namun, bekerja dengan sempurna.expect-dev
paket itu.expect
cukup.Gunakan opsi ls
--color=always
--color=auto
tidak akan mewarnai output ke pipa - untuk alasan yang jelas.Halaman utama mengatakan sebagai berikut:
sumber
ls -l
hanyalah sebuah contoh. Saya memiliki perintah yang sama sekali berbeda (log heroku) yang menghapus warna saat disalurkan ketee
. Dan saya ingin "memperbaiki / mengubah" tee / pipa, bukan perintah yang saya jalankan.ls
. Lihat jawaban saya yang memperbaiki masalah untuk semua program, termasuk log heroku.Saya akan memperluas
script
solusi yang diberikan dalam komentar dari jawaban yang diterima. Menggunakanscript
mungkin berguna jika Anda tidak bisa atau tidak ingin menginstal paket harapan yang berisiunbuffer
perintah.Cetak
ls
output ke stdout dan file dengan kode warna :dimana (
man script
):Lihat file keluaran dengan warna:
sumber
-e
sama dengan--return
- tidak perlu untuk keduanya;-efq
adalah--return --flush --quiet
.