Bash

通過濾色器傳送命令

  • August 1, 2019

Unix中是否存在類似的東西?

$ echo "this should show in red" | red
$ echo "this should show in green" | green
$ echo "this should show in blue" | blue

在這裡,我並不是說要出現文字顏色程式碼文本(例如,要粘貼到文件中)。我的意思是讓文本在終端中實際顯示為該顏色。這可能嗎?

這是一個可以做到這一點的小腳本。將其保存color在您的目錄中$PATH(例如,~/bin如果它在您的目錄中$PATH):

#!/usr/bin/env perl

use strict;
use warnings;
use Term::ANSIColor; 

my $color=shift;
while (<>) {
   print color("$color").$_.color("reset");
} 

然後,通過腳本傳遞您的文本,.作為要匹配的模式並指定顏色:

執行腳本的終端螢幕截圖

支持的顏色取決於終端的功能。有關更多詳細資訊,請參閱包的文件Term::ANSIColor

你會用tput它:

tput setaf 1
echo This is red
tput sgr0
echo This is back to normal

這可用於建構管道:

red() { tput setaf 1; cat; tput sgr0; }
echo This is red | red

基本顏色分別為黑色(0)、紅色(1)、綠色、黃色、藍色、品紅色、青色和白色(7)。您將在terminfo(5)手冊頁中找到所有詳細資訊。

引用自:https://unix.stackexchange.com/questions/276471