Como faço para alterar a cor de primeiro plano com base em qual programa de linha de comando está sendo executado? (Bash e PowerShell)

1

Gostaria de alterar a cor de primeiro plano com base no programa em execução. Isso é possível no Bash ou no PowerShell?

    
por mcandre 13.09.2012 / 21:34

2 respostas

2

No PowerShell, você pode usar o cmdlet Write-Host, que possui o parâmetro -ForeGround para controlar o primeiro plano do texto. Esteja ciente, entretanto, que o texto gravado no console por meio desse cmdlet não vai para o pipeline, o que pode levar a um comportamento inesperado se você espera trabalhar com o texto posteriormente no pipe.

Aqui está um exemplo:

(get-help write-host).Description.Text | write-host -ForegroundColor Cyan
    
por 13.09.2012 / 21:40
1

No bash você pode definir várias funções:

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

para cada comando / programa que você deseja ter em uma cor diferente. Por exemplo,

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

O comando trap faz com que a função continue em execução se você interromper o programa (digitando Ctrl + C ). Sem ele, se você digitar Ctrl + C enquanto seu programa colorido estiver rodando, seu terminal ficará na cor daquele comando. (Pode haver maneiras melhores de lidar com isso.)

"$@" é substituído pelos argumentos que você digita para a função, portanto, se você diz date -u , ele sabe passar a opção -u para o comando /bin/date .

Você pode querer definir uma função que não faz nada além de restaurar suas cores padrão. Como isso não precisa levar argumentos, isso pode ser feito como alias .

    
por 13.09.2012 / 22:32