web-dev-qa-db-fra.com

Couleurs avec la commande Unix "watch"?

Certaines commandes que j'utilise des couleurs d'affichage, mais quand je les utilise avec la montre, les couleurs disparaissent:

watch -n 1 node file.js

Est-il possible de récupérer les couleurs d'une manière ou d'une autre?

92
never_had_a_name

Certaines versions plus récentes de watch prennent désormais en charge la couleur.

Par exemple watch --color ls -ahl --color.

Connexes .

116
Dennis Williamson

N'utilisez pas watch ... Lorsque vous utilisez des programmes de surveillance, vous pouvez détecter qu'ils n'écrivent pas sur un terminal, puis supprimer la couleur. Vous devez utiliser des indicateurs de programme spécifiques pour y conserver les codes de contrôle.

Si vous ne connaissez pas les drapeaux ou s'il n'y en a pas, vous pouvez faire regarder un pauvre en:

while sleep <time>; do clear; <command>; done

Il aura un peu de scintillement (la montre fonctionne en "double tampon") mais pour certains trucs, c'est assez utile.

Vous pourriez être tenté de fabriquer une montre pour homme pauvre à double tampon en utilisant

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done

Mais alors vous frapperez à nouveau la fonctionnalité "Je n'écris pas sur un terminal".

20
theist

Vous pouvez dupliquer l'opération fondamentale et sans fioritures de watch dans quelques lignes de script 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

Finalement, quelqu'un de très intelligent piratera une commande tr dans ce script qui supprime les caractères de contrôle, puis forcera l'utilisateur à utiliser --color pour désactiver cette logique. Pour l'instant, la pure naïveté de cette mise en œuvre éloigne le monstre mangeur de couleurs.

Si vous êtes dans une situation où watch n'a pas le --color option et vous ne pouvez pas mettre à jour le paquet pour quelque raison que ce soit, vous pouvez peut-être ajouter ceci.

15
Kaz

OUI

la montre fonctionne avec une sortie couleur. cela fait partie du paquetage procps (au moins dans debian) voici le rapport de bug pour votre question http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 où ils répondent , que vous devez mettre à jour le package procps

par exemple. avec ubuntu 11.04, ce paquet fonctionne http://packages.debian.org/wheezy/procps

tl; dr

mettre à jour procps

8
davidDavidson

Du manuel de la montre:

Les caractères non imprimables sont supprimés de la sortie du programme. Utilisez "cat -v" dans le pipeline de commandes si vous souhaitez les voir.

Cependant, je ne sais pas comment l'utiliser.

1
Benoit