Я хотел бы изменить цвет переднего плана в зависимости от того, какая программа запущена. Это возможно в Bash или PowerShell?
2 ответа
В Powershell вы можете использовать командлет Write-Host, который имеет параметр -ForeGround, чтобы управлять основным текстом для текста. Имейте в виду, что текст, записанный в консоль с помощью этого командлета, не попадает в конвейер, что может привести к неожиданному поведению, если вы собираетесь работать с текстом позже в конвейере.
Вот пример:
(get-help write-host).Description.Text | write-host -ForegroundColor Cyan
В 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
.