Beberapa perintah yang saya gunakan menampilkan warna, tetapi ketika saya menggunakannya dengan arloji warnanya menghilang:
watch -n 1 node file.js
Apakah mungkin untuk mengembalikan warnanya?
Beberapa perintah yang saya gunakan menampilkan warna, tetapi ketika saya menggunakannya dengan arloji warnanya menghilang:
watch -n 1 node file.js
Apakah mungkin untuk mengembalikan warnanya?
Jawaban:
Beberapa versi yang lebih baru watch
sekarang mendukung warna.
Misalnya watch --color ls -ahl --color
.
Terkait .
watch
dengan git diff
. FWIW, untuk mendapatkan yang bekerja Anda harus lulus dalam --color=always
untuk git diff
(misalnya watch --color git diff --color=always
.
Jangan gunakan watch
... Ketika Anda menggunakan program jam tangan dapat mendeteksi mereka tidak menulis ke terminal dan kemudian menghapus warnanya. Anda harus menggunakan flag program tertentu untuk menyimpan kode kontrol di sana.
Jika Anda tidak tahu benderanya atau tidak ada, Anda dapat membuat orang miskin berjaga dengan cara:
while sleep <time>; do clear; <command>; done
Ini akan memiliki sedikit flicker (arloji berfungsi "buffer ganda") tetapi untuk beberapa hal itu cukup berguna.
Anda mungkin tergoda untuk membuat jam tangan pria malang dengan buffer ganda
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Tapi kemudian Anda akan menekan lagi fitur "Saya tidak menulis ke terminal".
while sleep <time>; do clear; <command> | tee /tmp/file; done
sebagai pengganti >
dan cat
?
watch
do dan tidak mencegah perintah berkedip
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Ini hanya menggunakan shell bawaan untuk membersihkan layar dan menampilkan output, oleh karena itu menjadi alternatif yang paling tidak berkedip.
Anda dapat menduplikasi operasi fundamental tanpa embel-embel watch
dalam beberapa baris skrip shell.
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while true ; do
clear
printf "[%s] Output of %s:\n" "$(date)" "$*"
# "$@" <- we don't want to do it this way, just this:
${SHELL-/bin/sh} -c "$*"
sleep 1 # genuine Quartz movement
done
$ ./cheapwatch ls --color # no problem
Akhirnya, seseorang yang sangat pintar akan meretas tr
perintah ke skrip ini yang menghapus karakter kontrol, dan kemudian memaksa pengguna untuk menggunakan --color
untuk menonaktifkan logika itu. Untuk saat ini, kenaifan belaka dari penerapan ini adalah menjauhkan monster pemakan warna itu.
Jika Anda berada dalam situasi di mana watch
tidak memiliki --color
opsi dan Anda tidak dapat memutakhirkan paket karena alasan apa pun, mungkin Anda dapat memasukkannya.
IYA
jam tangan bekerja dengan keluaran warna. itu adalah bagian dari paket procps (setidaknya dalam debian) di sini adalah laporan bug untuk pertanyaan Anda http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 di mana mereka menjawab, bahwa Anda harus memperbarui procps paket
misalnya dengan ubuntu 11.04 paket ini bekerja http://packages.debian.org/wheezy/procps
tl; dr
perbarui procps
Sementara jawaban lain memecahkan masalah ini, cara termudah untuk melakukannya adalah dengan menggunakan unbuffer
alat tersebut. Untuk menggunakannya cukup lakukan:
$ watch --color 'unbuffer <your-program>'
Dengan cara ini Anda tidak perlu mencari urutan kontrol yang mengaktifkan flag program Anda. Namun peringatannya adalah bahwa versi jam tangan Anda harus mendukung --color
bendera tersebut.
Anda dapat menginstal unbuffer di Debian atau Ubuntu menggunakan sudo apt-get install expect
.
'unbuffer <command>'
- Tanpa memberikan perintah khusus untuk digunakan, bagaimana cara ini menjawab pertanyaan?
<command>
dengan program tertentu yang ingin Anda jalankan dengan warna?
Dari arloji manual:
Karakter non-cetak dihilangkan dari keluaran program. Gunakan "cat -v" sebagai bagian dari pipeline perintah jika Anda ingin melihatnya.
Padahal, saya tidak yakin bagaimana cara menggunakannya.
watch -c "ls --color|cat -v"
acara ^[[0m^[[01;34mAgent^[[0m
untuk baris pertama.
watch --color ls --color=always .