J'ai un script ksh qui doit fonctionner à la fois sur Linux et Solaris. J'essaie de colorer la sortie de commandes spécifiques. Il fonctionne sur Linux (spécifiquement RHEL6), mais pas sur Solaris (SunOS 5.10).
Commande sous linux (la sortie "test" est correctement colorée en rouge):
[amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
test
Commande sur solaris (la sortie "test" n'est pas colorée):
[amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
x1B[31mtestx1B[0m
Existe-t-il un moyen de créer cette commande de telle sorte que la sortie soit rouge, sans les codes bruts dans la sortie? Je ne peux pas changer la commande 'echo' car c'est juste un complément pour la commande que j'exécute réellement.
cat |sed
trop thx!Ce serait plus facile à utiliser
tput
ou
Cela met le premier plan en rouge, exécute
somecommand
qui affiche ensuite la sortie en rouge puis efface la séquence de couleurs. Cela fonctionne au moins avecbash
,zsh
etksh
.Voir
tmux(1)
etterminfo(5)
pour plus d'informations sur ce que vous pouvez faire avectput
.la source
Certains terminaux (comme bash dans iterm pour moi) vous permettent d'appuyer sur les touches "ctrl-v" suivies de "ctrl + [" et cela mettra le caractère d'échappement littéral dans la chaîne d'entrée. Si cela fonctionne, vous verrez probablement les caractères "^ [" imprimés à l'écran, mais si vous déplacez votre curseur autour de lui, il le traitera comme un seul caractère car il est vraiment dans les coulisses.
Pour comprendre ce qui se passe (et pour tester si cela est possible), vous pouvez taper ctrl + v suivi de ctrl + i. Vous devez voir que le caractère de tabulation a été inséré dans votre chaîne d'invite. Il y a un historique CS pour expliquer pourquoi c'est le cas: mais il s'avère que le clavier vraiment ancien avait ctrl + I câblé pour envoyer le caractère de tabulation; et la touche de tabulation envoie également le même signal électrique.
Pour cette raison héritée, bash pour de nombreux terminaux interprète toujours certains codes Ctrl pour mapper à ces mêmes caractères.
Ctrl + I correspond au caractère de tabulation, et ctrl + [correspond au caractère d'échappement ascii.
la source