我想根据正在运行的程序更改前景色。这在 Bash 或 PowerShell 中可以实现吗?
答案1
在 Powershell 中,您可以使用具有 -ForeGround 参数的 Write-Host cmdlet 来控制文本的前台。但请注意,通过此 cmdlet 写入控制台的文本不会不是转到管道,如果您希望稍后在管道中处理文本,这可能会导致一些意外行为。
以下是一个例子:
(get-help write-host).Description.Text | write-host -ForegroundColor Cyan
答案2
在 bash 中你可以定义一组函数:
功能命令名称 { 陷阱':'2 命令设置所需颜色 命令的完整路径“$@” 恢复默认颜色的命令 }
为每个要使用不同颜色的命令/程序指定颜色。例如,
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
。