Вопрос или проблема
Мне нужно различать команду и вывод с помощью цвета
например так
$ cat file-name (это должно быть какого-то цвета, скажем, красного)
некоторый тест в файле OUTPUT (этот вывод должен быть другого цвета, скажем, зеленого)
чтобы я мог легко различать команду и ее вывод в случае команд с большим выводом
И я должен сделать так, чтобы это работало для каждой команды, вводимой в терминале, если возможно, даже команда “не найдена” могла бы отображаться другим цветом
Добавьте это в свой ~/.bashrc
:
RED="\[\033[0;31m\]"
YELLOW="\[\033[1;33m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[1;34m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
CYAN="\[\033[0;36m\]"
LIGHT_CYAN="\[\033[1;36m\]"
WHITE="\[\033[1;37m\]"
LIGHT_GRAY="\[\033[0;37m\]"
COLOR_NONE="\[\e[0m\]"
# Установить цвет после приглашения
PS1="$PS1${LIGHT_RED}"
# Сбросить цвета после команды
trap '[[ -t 1 ]] && tput sgr0' DEBUG
- Переменные с кодами цветов не обязательны, но они упрощают процесс. Измените
LIGHT_RED
на другие цвета по мере необходимости. - Трап
DEBUG
выполняется перед каждой командой, just before execution.[[ -t 1 ]]
проверяет TTY на stdout, а tput sgr0 сбрасывает цвет. Фактически, он сбрасывает цвет каждый раз, когда выполняется команда (в противном случае вывод команды будет окрашен так же).
Эффект:
Вам нужно будет загрузить .bashrc
, чтобы изменения вступили в силу:
. .bashrc
LIGHT_RED
на самом деле не очень светло-красный для меня из-за профиля цвета, который я установил для терминала.
Источники:
Вы можете попробовать это
grep --color=always . file-name
Точка является важной в данном случае, это регулярное выражение для соответствия любому одному символу.
Вы можете использовать ANSI escape последовательности, чтобы различать команду и ее вывод, например так:
echo -e "\e[31m"; echo "ls -al"; echo -e "\e[0m"; echo -e "\e[32m"; ls -al --color=never ; echo -e "\e[0m";
Источник: http://misc.flogisoft.com/bash/tip_colors_and_formatting
Ответ или решение
Чтобы различать команды и их вывод в терминале с помощью цвета, можно настроить цвета для команд и результатов их выполнения в файле конфигурации вашего интерпретатора командной строки, например, в файле ~/.bashrc
.
Вот как это можно сделать:
-
Определение цветовых кодов: В начале файла
~/.bashrc
добавьте следующее:RED="\[\033[0;31m\]" GREEN="\[\033[0;32m\]" COLOR_RESET="\[\e[0m\]"
Здесь мы определили переменные для красного и зеленого цветов, а также переменную для сброса цвета.
-
Настройка строки приглашения: Затем вам нужно настроить строку приглашения (prompt), чтобы команды отображались в выбранном вами цвете. Добавьте следующую строку:
PS1="${RED}\u@\h:\w\$ ${COLOR_RESET}"
В этом примере команда будет отображаться красным цветом.
-
Сброс цвета после выполнения команды: Чтобы вывести результат команды в другом цвете (например, зеленом), можно использовать обработчик сигналов. Добавьте следующий код в конец вашего
~/.bashrc
:preexec() { echo -e "${COLOR_RESET}" # Сброс цвета } trap 'preexec' DEBUG
-
Обработка цвета вывода: Вы можете также настроить цвет вывода по умолчанию. Это можно сделать, используя конструкцию
echo -e
перед выполнением каждой команды:alias run_command='echo -e "\e[31m$1\e[0m"; eval $1; echo -e "\e[32m$(eval $1 --color=never)\e[0m"'
Однако имейте в виду, что это только базовый пример. Для более комплексной настройки отображения можно использовать более продвинутые скрипты или функции.
-
Применение изменений: После внесения всех изменений вам нужно будет обновить настройки терминала, выполнив команду:
source ~/.bashrc
-
Обработка ошибок: Если команда не найдена, вы можете изменить обработку ошибок, чтобы выводить сообщение в другом цвете. Используйте следующий код в блоке для обработчика сигналов:
command_not_found_handle() { echo -e "${RED}Команда не найдена: $1${COLOR_RESET}" }
Теперь ваши команды будут отображаться красным цветом, а вывод — зеленым. При этом команды, которые не могут быть найдены, будут выделены красным цветом. Таким образом, вы сможете легко различать команды и их вывод в терминале.
Обратите внимание, что приведенные выше примеры и настройка могут варьироваться в зависимости от вашей оболочки и настроек терминала. При необходимости вы можете менять цветовые коды в соответствии со своими предпочтениями.