Tengo un script ksh que debe funcionar tanto en Linux como en Solaris. Estoy tratando de colorear la salida de comandos específicos. Funciona en Linux (específicamente RHEL6), pero no en Solaris (SunOS 5.10).
Comando en Linux (la "prueba" de salida está correctamente coloreada en rojo):
[amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
test
Comando en solaris (la "prueba" de salida no está coloreada):
[amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
x1B[31mtestx1B[0m
¿Hay alguna manera de elaborar este comando de modo que la salida sea roja, sin los códigos sin formato en la salida? No puedo cambiar el comando 'echo' porque eso es solo un relleno para el comando que realmente estoy ejecutando.
cat |sed
thx demasiado!Sería más fácil de usar
tput
o
Esto establece el primer plano en rojo, las ejecuciones
somecommand
que luego mostrarán la salida en rojo y luego borran la secuencia de colores. Esto funciona al menos conbash
,zsh
yksh
.Consulte
tmux(1)
yterminfo(5)
para obtener más información sobre lo que puede hacer contput
.fuente
Algunos terminales (como bash in iterm para mí) le permiten presionar las teclas "ctrl-v" seguidas de "ctrl + [" y colocará el carácter de escape literal en la cadena de entrada. Si funciona, probablemente verá los caracteres "^ [" impresos en la pantalla, pero si mueve el cursor alrededor de él, lo tratará como un carácter porque realmente está detrás de escena.
Para comprender lo que está sucediendo (y probar si esto es posible), puede escribir ctrl + v seguido de ctrl + i. Debería ver que el carácter de tabulación se insertó en su cadena de solicitud. Hay un historial de CS de por qué este es el caso: pero resulta que el teclado realmente viejo tenía Ctrl + I conectado para enviar el carácter de tabulación; y la tecla tab también envía esa misma señal eléctrica.
Por esa razón heredada, bash para muchos terminales todavía interpreta ciertos códigos Ctrl para asignar a esos mismos caracteres.
Ctrl + I se asigna al carácter de tabulación y ctrl + [coincide con el carácter de escape ASCII.
fuente