Saya datang ke sini untuk menggunakan watchdengan git diff. FWIW, untuk mendapatkan yang bekerja Anda harus lulus dalam --color=alwaysuntuk git diff(misalnya watch --color git diff --color=always.
theabraham
30
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".
Mungkin digunakan while sleep <time>; do clear; <command> | tee /tmp/file; donesebagai pengganti >dan cat?
André Leria
mmm Saya tidak mengerti @ AndréLeria ... | tee akan menghapus kode warna seperti watchdo dan tidak mencegah perintah berkedip
theist
Ini adalah saran untuk contoh kedua, yang juga tidak memberi saya warna. Atau mungkin saya melakukan sesuatu yang salah?
André Leria
1
@ AndréLeria "Contoh" kedua adalah contoh yang salah (Seperti yang dikatakan di baris las). Intinya adalah begitu Anda menekan pipa, Anda kehilangan kode warna karena Anda tidak menulis ke terminal. Itu ada untuk menunjukkan betapa salahnya mencoba mengkompensasi flicker karena selang waktu antara jelas dan eksekusi perintah target menggunakan pipa untuk bekerja dengan buffer sepertiwatch
theist
5
Dalam bash: 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.
Géza Török
17
Anda dapat menduplikasi operasi fundamental tanpa embel-embel watchdalam beberapa baris skrip shell.
$ cat cheapwatch #!/bin/sh# Not quite your Rolexwhile 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 movementdone
$ ./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.
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
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?
Danoram
@Danoram Apa yang tidak jelas bagi Anda? Apakah Anda memerlukan bantuan untuk mengganti <command>dengan program tertentu yang ingin Anda jalankan dengan warna?
Avamander
@Avamander Saya akan menulis komentar itu karena pertanyaan itu ditandai. Jika Anda memeriksa riwayat edit, Anda akan melihat penulis memperbarui jawabannya. Tidak ada yang tidak jelas. Komentar saya sudah tidak relevan lagi ..
Danoram
1
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.
Hal ini menyebabkan karakter kontrol terlihat pada keluaran untuk saya, daripada menyebabkan pewarnaan. Misalnya watch -c "ls --color|cat -v"acara ^[[0m^[[01;34mAgent^[[0muntuk baris pertama.
Jawaban:
Beberapa versi yang lebih baru
watch
sekarang mendukung warna.Misalnya
watch --color ls -ahl --color
.Terkait .
sumber
watch
dengangit diff
. FWIW, untuk mendapatkan yang bekerja Anda harus lulus dalam--color=always
untukgit diff
(misalnyawatch --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:
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
Tapi kemudian Anda akan menekan lagi fitur "Saya tidak menulis ke terminal".
sumber
while sleep <time>; do clear; <command> | tee /tmp/file; done
sebagai pengganti>
dancat
?watch
do dan tidak mencegah perintah berkedipwatch
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.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.sumber
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
sumber
Sementara jawaban lain memecahkan masalah ini, cara termudah untuk melakukannya adalah dengan menggunakan
unbuffer
alat tersebut. Untuk menggunakannya cukup lakukan: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
.sumber
'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.
sumber
watch -c "ls --color|cat -v"
acara^[[0m^[[01;34mAgent^[[0m
untuk baris pertama.watch --color ls --color=always .