У меня есть скрипт ksh, который должен работать как на Linux, так и на Solaris. Я пытаюсь раскрасить вывод определенных команд. Он работает на Linux (в частности, RHEL6), но не на Solaris (SunOS 5.10).
Команда на Linux (вывод «test» правильно окрашен красным):
[amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
test
Команда на солярис (вывод «тест» не окрашен):
[amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
x1B[31mtestx1B[0m
Есть ли способ создать эту команду так, чтобы вывод был красным, без необработанных кодов в выводе? Я не могу изменить команду 'echo', потому что это просто замена команды, которую я на самом деле выполняю.
cat |sed
слишком THX!Было бы проще в использовании
tput
или
Это устанавливает передний план на красный, запускает,
somecommand
который затем отображает вывод в красном, а затем очищает последовательность цветов. Это работает по крайней мере сbash
,zsh
иksh
.Смотрите
tmux(1)
иterminfo(5)
для получения дополнительной информации о том, что вы можете сделать сtput
.источник
Некоторые терминалы (например, bash in iterm для меня) позволяют вам нажимать клавиши «ctrl-v», а затем «ctrl + [», и это помещает буквенный escape-символ во входную строку. Если это сработает, вы, вероятно, увидите символы «^ [», напечатанные на экране, но если вы наведете курсор на него, он будет обрабатываться как один символ, потому что он действительно за кадром.
Чтобы понять, что происходит (и проверить, возможно ли это), вы можете набрать ctrl + v, а затем ctrl + i. Вы должны увидеть, что символ табуляции был вставлен в строку приглашения. Существует история CS, объясняющая, почему это так: но оказывается, что на действительно старой клавиатуре был ctrl + I, жестко запрограммированный для отправки символа табуляции; и клавиша Tab посылает тот же электрический сигнал тоже.
По этой традиционной причине bash для многих терминалов по-прежнему интерпретирует определенные коды Ctrl для сопоставления с теми же символами.
Ctrl + I отображается на символ табуляции, а ctrl + [совпадает с escape-символом ascii.
источник