如何根据运行的命令行程序更改前景色? (Bash和PowerShell)


1

我想根据正在运行的程序更改前景色。这在Bash或PowerShell中是否可行?

Answers:


2

在Powershell中,您可以使用具有-ForeGround参数的Write-Host cmdlet来控制文本的前景。请注意,通过此cmdlet写入控制台的文本可以 如果您希望稍后在管道中处理文本,那么转到可能导致意外行为的管道。

这是一个例子:

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

1

在bash中,您可以定义一堆函数:

function  COMMAND_NAME  {
    陷阱':'2  命令设置所需的颜色 
     full_path_to_command  “$ @”  命令恢复默认颜色  } 

对于您希望使用不同颜色的每个命令/程序。例如,

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.