apt-get 업그레이드 오류를 빨간색으로 표시하도록 터미널 출력 형식 설정

apt-get 업그레이드 오류를 빨간색으로 표시하도록 터미널 출력 형식 설정

나는 내 노트북을 열 때마다 apt-get update, apt-get upgrade, apt-get dist-upgrade및 e를 실행할 필요가 없도록 Kali Linux 배포판을 위한 매우 간단한 bash 스크립트를 작성했습니다 .apt-get autocleanapt-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

관련 정보