web-dev-qa-db-fra.com

Comment écrire stdout dans un fichier avec des couleurs?

Un grand nombre de fois (pas toujours), la sortie standard est affichée en couleurs. Normalement, je conserve également chaque journal de sortie dans un fichier différent. Naturellement dans le fichier, les couleurs ne sont plus affichées. 

enter image description here

J'aimerais savoir s'il existe un moyen (sous Linux) d'écrire la sortie dans un fichier avec des couleurs. J'essaie d'utiliser tee pour écrire la sortie de vagrant dans un fichier, de cette façon je peux toujours voir la sortie (quand elle s'applique). Je veux l'utiliser spécifiquement pour vagabond (cela peut changer dans le futur, bien sûr ...) 

Merci! 

29
AAlvz

Étant donné que de nombreux programmes n'émettent des séquences de couleurs que si leur sortie standard est un terminal, une solution générale à ce problème nécessite de les inciter à croire que le canal dans lequel ils écrivent est un terminal. Ceci est possible avec la commande script de bsdutils:

script -q -c "vagrant up" filename.txt

Cela écrira la sortie de vagrant up dans filename.txt (et le terminal). Si l'écho n'est pas souhaitable, 

script -q -c "vagrant up" filename > /dev/null

l'écrira uniquement dans le fichier.

25
Wintermute

Vous pouvez également colorer votre sortie avec écho avec différentes couleurs et enregistrer la sortie colorée dans un fichier. Exemple

echo -e '\E[37;44m'"Hello World" > my_file

Vous devez également connaître les codes de couleur du terminal.

Utiliser un tee

< command line > |tee -a 'my_colour_file'

Ouvrez votre fichier dans chat

cat 'my_colour_file'

L'utilisation d'un canal nommé peut également permettre de rediriger toutes les sorties du canal avec des couleurs vers un autre fichier.

par exemple

Créer un tuyau nommé 

mkfifo pipe.fifo

chaque ligne de commande le redirige vers le tuyau comme suit

<command line> > pipe.fifo

Dans un autre terminal, redirigez tous les messages du tuyau vers votre fichier

cat pipe.fifo > 'my_log_file_with_colours'

ouvrez votre fichier avec chat et voyez les résultats attendus.

6
repzero

J'ai découvert qu'en utilisant l'outil appelé ansi2html.sh

Est le moyen le plus simple d’exporter des données de terminal colorées vers un fichier HTML,

Les commandes à utiliser sont:

ls --color=always | ansi2html.sh --palette=solarized > ~/Desktop/ls.html
  • Il suffit d’envoyer la sortie à l’aide d’un tuyau, puis de sortir le stdout au format HTML
1
Pini Cheyni