1

Я хотел бы изменить цвет переднего плана в зависимости от того, какая программа запущена. Это возможно в Bash или PowerShell?

2 ответа2

2

В Powershell вы можете использовать командлет Write-Host, который имеет параметр -ForeGround, чтобы управлять основным текстом для текста. Имейте в виду, что текст, записанный в консоль с помощью этого командлета, не попадает в конвейер, что может привести к неожиданному поведению, если вы собираетесь работать с текстом позже в конвейере.

Вот пример:

(get-help write-host).Description.Text | write-host -ForegroundColor Cyan
1

В bash вы можете определить несколько функций:

function command_name
{
    trap ':' 2
    command to set desired color(s)
    full_path_to_command "$@"
    command to restore default color(s)
}

для каждой команды / программы вы хотите иметь разные цвета.  Например,

function date
{
    trap ':' 2
    echo "\033[31m\c"
    /bin/date "$@"
    echo "\033[30m\c"
}

Команда trap заставляет функцию продолжать работать, если вы прервете программу (нажав Ctrl+C).  Без этого, если вы нажмете Ctrl+C во время работы цветной программы, ваш терминал останется в цвете для этой команды.  (Там могут быть лучшие способы справиться с этим.)

"$@" заменяется аргументами, которые вы вводите в функцию, поэтому, если вы говорите « date -u , она знает, как передать параметр -u команде /bin/date .

Возможно, вы захотите определить функцию, которая ничего не делает, кроме как восстановить цвета по умолчанию.  Поскольку для этого не нужно принимать аргументы, это можно сделать как alias .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .