답변:
여기에 작은 스크립트가 있습니다. 이 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
.
rgb001
, rgb123
등을 참조 perldoc.perl.org/Term/ANSIColor.html#Supported-Colors을 자세한 내용은.
당신은 그것을 위해 사용할 것 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)
맨 페이지 에서 모든 세부 정보를 찾을 수 있습니다.
(의견에서 논의했듯이 대신 사용tput
하십시오)
Bourne 쉘 및 사용 echo
은 ANSI 이스케이프 이해 (내장) 명령 \e
과 함께 -e
옵션 :
black() { IFS= ; while read -r line; do echo -e '\e[30m'$line'\e[0m'; done; }
red() { IFS= ; while read -r line; do echo -e '\e[31m'$line'\e[0m'; done; }
green() { IFS= ; while read -r line; do echo -e '\e[32m'$line'\e[0m'; done; }
yellow() { IFS= ; while read -r line; do echo -e '\e[33m'$line'\e[0m'; done; }
blue() { IFS= ; while read -r line; do echo -e '\e[34m'$line'\e[0m'; done; }
purple() { IFS= ; while read -r line; do echo -e '\e[35m'$line'\e[0m'; done; }
cyan() { IFS= ; while read -r line; do echo -e '\e[36m'$line'\e[0m'; done; }
white() { IFS= ; while read -r line; do echo -e '\e[37m'$line'\e[0m'; done; }
echo ' foo\n bar' | red
또는보다 일반적인 쉘 스크립트 (예 :) /usr/local/bin/colorize
:
#!/bin/sh
usage() {
echo 'usage:' >&2
echo ' some-command | colorize {black, red, green, yellow, blue, purple, cyan, white}' >&2
exit 1
}
[ -z "$1" ] && usage
case $1 in
black) color='\e[30m' ;;
red) color='\e[31m' ;;
green) color='\e[32m' ;;
yellow) color='\e[33m' ;;
blue) color='\e[34m' ;;
purple) color='\e[35m' ;;
cyan) color='\e[36m' ;;
white) color='\e[36m' ;;
*) usage ;;
esac
IFS=
while read -r line; do
echo -e $color$line'\e[0m'
done
IFS=
공백 트리밍을 방지하기 위해 필요합니다 (자세한 내용은 POSIX 참조).
tput
좋습니다.