设置终端输出格式以以红色显示 apt-get 升级错误

设置终端输出格式以以红色显示 apt-get 升级错误

我为我的 Kali Linux 发行版编写了一个非常简单的 bash 脚本,因此我不必 每次打开笔记本电脑时都运行apt-get updateapt-get upgradeapt-get dist-upgradeapt-get autoclean和e 。apt-get autoremov

在阅读了几天语法后,我仍然无法得到正确的结果。我试图在脚本中添加一些内容来格式化终端输出,它将以红色显示“错误”。在向我的脚本中添加一些内容时,我们将不胜感激,这些内容将以红色显示 apt-get 升级输出的错误。先感谢您。

仅供参考,这是我的两行脚本......

apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get autoremove -y && apt-get autoclean -y

答案1

我编写了一个小脚本,它将为您提供的任何字符串着色:

#!/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;
}

如果将其保存color在您的目录中$PATH并使其可执行(chmod +x /usr/bin/color),则可以为您喜欢的任何颜色:

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

需要2>&1将错误消息重定向到标准输出。

答案2

您可以使用 hhlighter。您将需要 git 和 ack(可能需要 ack-grep,具体取决于您的发行版)。

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

您可以通过两种方式编辑 .bashrc 文件。您可以将路径添加到 h.sh 文件,如下所示:

. ~/hhlighter/h.sh

或者您可以将 h() 函数复制并粘贴到 .bashrc 中。无论哪种方式,您都必须注销并重新登录才能重新启动 bash,或者您可以运行以下命令:

source ~/.bashrc

用法示例:

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

或者

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

点击这里查看更多信息:github.com/paoloantinori/hhighlighter

相关内容