Как различить команду и вывод с помощью цвета

Вопрос или проблема

Мне нужно различать команду и вывод с помощью цвета

например так

$ 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 сбрасывает цвет. Фактически, он сбрасывает цвет каждый раз, когда выполняется команда (в противном случае вывод команды будет окрашен так же).

Эффект:

RED
BLUE

Вам нужно будет загрузить .bashrc, чтобы изменения вступили в силу:

. .bashrc

LIGHT_RED на самом деле не очень светло-красный для меня из-за профиля цвета, который я установил для терминала.

Источники:

  1. Как я могу остановить цвет PS1 в оболочке bash, чтобы он прекращался в конце команды?
  2. Запрос командной строки bash с virtualenv и веткой git (для цветов)

Вы можете попробовать это

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";

enter image description here

Источник: http://misc.flogisoft.com/bash/tip_colors_and_formatting

Ответ или решение

Чтобы различать команды и их вывод в терминале с помощью цвета, можно настроить цвета для команд и результатов их выполнения в файле конфигурации вашего интерпретатора командной строки, например, в файле ~/.bashrc.

Вот как это можно сделать:

  1. Определение цветовых кодов: В начале файла ~/.bashrc добавьте следующее:

    RED="\[\033[0;31m\]"
    GREEN="\[\033[0;32m\]"
    COLOR_RESET="\[\e[0m\]"

    Здесь мы определили переменные для красного и зеленого цветов, а также переменную для сброса цвета.

  2. Настройка строки приглашения: Затем вам нужно настроить строку приглашения (prompt), чтобы команды отображались в выбранном вами цвете. Добавьте следующую строку:

    PS1="${RED}\u@\h:\w\$ ${COLOR_RESET}"

    В этом примере команда будет отображаться красным цветом.

  3. Сброс цвета после выполнения команды: Чтобы вывести результат команды в другом цвете (например, зеленом), можно использовать обработчик сигналов. Добавьте следующий код в конец вашего ~/.bashrc:

    preexec() {
        echo -e "${COLOR_RESET}"  # Сброс цвета
    }
    
    trap 'preexec' DEBUG
  4. Обработка цвета вывода: Вы можете также настроить цвет вывода по умолчанию. Это можно сделать, используя конструкцию echo -e перед выполнением каждой команды:

    alias run_command='echo -e "\e[31m$1\e[0m"; eval $1; echo -e "\e[32m$(eval $1 --color=never)\e[0m"'

    Однако имейте в виду, что это только базовый пример. Для более комплексной настройки отображения можно использовать более продвинутые скрипты или функции.

  5. Применение изменений: После внесения всех изменений вам нужно будет обновить настройки терминала, выполнив команду:

    source ~/.bashrc
  6. Обработка ошибок: Если команда не найдена, вы можете изменить обработку ошибок, чтобы выводить сообщение в другом цвете. Используйте следующий код в блоке для обработчика сигналов:

    command_not_found_handle() {
        echo -e "${RED}Команда не найдена: $1${COLOR_RESET}"
    }

Теперь ваши команды будут отображаться красным цветом, а вывод — зеленым. При этом команды, которые не могут быть найдены, будут выделены красным цветом. Таким образом, вы сможете легко различать команды и их вывод в терминале.

Обратите внимание, что приведенные выше примеры и настройка могут варьироваться в зависимости от вашей оболочки и настроек терминала. При необходимости вы можете менять цветовые коды в соответствии со своими предпочтениями.

Оцените материал
Добавить комментарий

Капча загружается...