Formata a saída do terminal para mostrar erros de atualização do apt-get em RED

2

Eu tenho um script bash muito simples escrito para a minha distribuição do Kali Linux, então não preciso executar apt-get update , apt-get upgrade , apt-get dist-upgrade , apt-get autoclean e apt-get autoremov e toda vez que eu abro meu laptop.

Depois de ler a sintaxe por alguns dias, ainda não consigo corrigi-la. Eu estou tentando adicionar algo no script para formatar a saída do terminal onde ele irá mostrar "Erros" em vermelho. Qualquer ajuda seria muito apreciada em adicionar algo ao meu script que mostrará erros no RED para saída do apt-get upgrade. Obrigado antecipadamente.

Apenas FYI aqui é meu script de duas linhas ...

apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get autoremove -y && apt-get autoclean -y
    
por Will Hughes 13.11.2014 / 20:00

2 respostas

2

Eu escrevi um pequeno script que irá colorir qualquer string que você der:

#!/usr/bin/env perl
use Getopt::Std;
use strict;
use Term::ANSIColor; 

my %opts;
getopts('hic:l:',\%opts);
    if ($opts{h}){
      print<<EoF; 
Use -l to specify the pattern(s) to highlight. To specify more than one 
pattern use commas. 

-l : A Perl regular expression to be colored. Multiple expressions can be
     passed as comma separated values: -l foo,bar,baz
-i : makes the search case sensitive
-c : comma separated list of colors;

EoF
      exit(0);
    }

my $case_sensitive=$opts{i}||undef;
my @color=('bold red','bold blue', 'bold yellow', 'bold green', 
           'bold magenta', 'bold cyan', 'yellow on_magenta', 
           'bright_white on_red', 'bright_yellow on_red', 'white on_black');
if ($opts{c}) {
   @color=split(/,/,$opts{c});
}
my @patterns;
if($opts{l}){
     @patterns=split(/,/,$opts{l});
}
else{
    $patterns[0]='\*';
}

# Setting $| to non-zero forces a flush right away and after 
# every write or print on the currently selected output channel. 
$|=1;

while (my $line=<>) 
{ 
    for (my $c=0; $c<=$#patterns; $c++){
    if($case_sensitive){
        if($line=~/$patterns[$c]/){
           $line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ge;
        }
    }
    else{
        if($line=~/$patterns[$c]/i){
          $line=~s/($patterns[$c])/color("$color[$c]").$1.color("reset")/ige;
        }
      }
    }
    print STDOUT $line;
}

Se você salvá-lo como color em um diretório que esteja no seu $PATH e torná-lo executável ( chmod +x /usr/bin/color ), poderá colorir o que quiser:

sudo apt-get install nonexistent-package 2>&1 | color -l "E:,error"

O 2>&1 é necessário para redirecionar as mensagens de erro para a saída padrão.

    
por 13.11.2014 / 21:12
1

Você pode usar hhlighter. Você precisará de git e ack (possivelmente ack-grep dependendo da sua distro).

git clone https://github.com/paoloantinori/hhighlighter.git

Você pode editar seu arquivo .bashrc de duas maneiras. Você poderia adicionar um caminho para o seu arquivo h.sh assim:

. ~/hhlighter/h.sh

ou você pode simplesmente copiar e colar a função h () em .bashrc. De qualquer forma, você terá que sair e voltar para reiniciar bash ou você pode executar o seguinte comando:

source ~/.bashrc

Exemplo de uso:

sudo apt-get dist-upgrade -y | h -i error

ou

sudo apt-get dist-upgrade -y | h -i error:

Clique aqui para mais informações: github.com/paoloantinori/hhighlighter

    
por 14.11.2014 / 00:59

Tags