對(duì)于Linux管理員來(lái)說(shuō),grep是日常最常用的命令,可以把匹配的字符輸出,同樣可以輸出顏色。
創(chuàng)新互聯(lián)長(zhǎng)期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鳳陽(yáng)企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,鳳陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
# grep --color 'test' /var/log/maillog
無(wú)聊練功:?用perl 實(shí)現(xiàn)grep --color
# vi colorgrep
#!/usr/bin/perl
use Term::ANSIColor;
my $test;
if (@ARGV != 2){
die "Please use (colorgrep 'some key word' filename)\n";
}
$test = shift @ARGV;
while(){
if(/$test/i){
print "$`";
print color "bold red";
print "$";
print color 'reset';
print "$'";
}
}
這里調(diào)用了Term::ANSIColor 函數(shù) color 有以下的參數(shù):
clear, reset, dark, bold, underline, underscore, blink, reverse, concealed, black, red, green, yellow, blue, magenta, cyan, white, on_black, on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, and on_white
還有以下的簡(jiǎn)化使用方法
2) use Term::ANSIColor qw(:constants);
如果使用這種方法,可以直接把顏色屬性放在要輸出的問題前面,從而簡(jiǎn)化輸出步驟。這些顏色屬性有:
CLEAR, RESET, BOLD, DARK, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, ON_BLACK, ON_RED, ON_GREEN, ON_YELLOW, ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE
等。
例如:
print BOLD BLUE ON_WHITE “Text”, RESET, “\n”;
如果你打印完之后想清除掉字符串的格式,一定要記得在最后加上一個(gè)RESET的屬性值。
例如:
use Term::ANSIColor qw(:constants);
print BOLD, BLUE, “This text is in bold blue.\n”, RESET;
3) $Term::ANSIColor::AUTORESET = 1;
對(duì)于2)的方法,如果你不想在每條打印語(yǔ)句后面加上RESET的話,你可以直接把$Term::ANSIColor::AUTORESET的值設(shè)為true。這樣每次打印完字符,只要你的屬性值之間沒有逗號(hào),系統(tǒng)將自動(dòng)幫你清除掉顏色屬性。
看一個(gè)完整的例子:
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
print BOLD BLUE “This text is in bold blue.\n”;
print “This text is normal.\n”;
這三種方法,使用起來(lái)各有千秋,可根據(jù)要打印的復(fù)雜程度選用。
linux無(wú)顏色輸出步驟如下。
1、打開終端輸入exportTERM=xterm-mono,這個(gè)命令會(huì)將終端的顏色設(shè)置為單色模式,從而關(guān)閉了彩色輸出。
2、執(zhí)行需要輸出的命令echo"Thisisatestmessage",則看到輸出的文字是黑白灰色而沒有彩色,則說(shuō)明無(wú)顏色輸出已經(jīng)生效。
Linux下printf輸出顏色 printf(“\033[字背景顏色;字體顏色m字符串 \033[0m “); 參考: printf(“ \033[41;32m 字體背景是紅色,字是綠色\033[0m\n”)
在linux命令行里輸出帶顏色的字符,需要使用ascii碼里的字符屬性設(shè)置描述符。
\033[0m 關(guān)閉所有屬性
\033[1m 設(shè)置高亮度
\033[30m 至 \33[37m 設(shè)置前景色
\033[40m 至 \33[47m 設(shè)置背景色
其中顏色代碼是:
背景顏色范圍:40----49
40:黑
41:深紅
42:綠
43:黃色
44:藍(lán)色
45:紫色
46:深綠
47:白色
字(前景)顏色:30-----------39
30:黑
31:紅
32:綠
33:黃
34:藍(lán)色
35:紫色
36:深綠
37:白色
例如你要輸出紅色的“hello world”:
\033[31mheool world \033[0m