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 watchsekarang mendukung warna.
Misalnya watch --color ls -ahl --color.
Terkait .
watchdengan git diff. FWIW, untuk mendapatkan yang bekerja Anda harus lulus dalam --color=alwaysuntuk 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; donesebagai pengganti >dan cat?
watchdo 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 watchdalam 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 trperintah ke skrip ini yang menghapus karakter kontrol, dan kemudian memaksa pengguna untuk menggunakan --coloruntuk menonaktifkan logika itu. Untuk saat ini, kenaifan belaka dari penerapan ini adalah menjauhkan monster pemakan warna itu.
Jika Anda berada dalam situasi di mana watchtidak memiliki --coloropsi 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 unbufferalat 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 --colorbendera 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^[[0muntuk baris pertama.
watch --color ls --color=always .