Команда Pipable для печати в цвете?

Сначала вы настраиваете Virtualbox для использования мостовой сети

Затем вы устанавливаете dnsmasq на свой DNS-сервер. Я предполагаю, что это Ubuntu с IP-адресом 192.168.178.10, соответственно отрегулируйте

sudo apt-get install dnsmasq

Затем вы добавляете свой сервер виртуальных серверов в /etc/hosts на сервере dns (dnsmasq)

# Graphical
gksu gedit /etc/hosts

# Command line
sudo -e /etc/hosts

Добавьте на свой сервер

192.168.178.91 example.server www.example.server

Затем вы указываете своим клиентам использовать сервер dns (dnsmasq) для dns. Вы можете сделать это с помощью сетевого менеджера, поместите 192.168.178.10 в качестве сервера DNS.

bridge

7
задан 11 May 2012 в 04:03

5 ответов

Я не знаю никакой утилиты для цветной печати, но вы можете сделать это легко с помощью такой функции оболочки:

# colorize stdin according to parameter passed (GREEN, CYAN, BLUE, YELLOW)
colorize(){
    GREEN="\033[0;32m"
    CYAN="\033[0;36m"
    GRAY="\033[0;37m"
    BLUE="\033[0;34m"
    YELLOW="\033[0;33m"
    NORMAL="\033[m"
    color=\$${1:-NORMAL}
    # activate color passed as argument
    echo -ne "`eval echo ${color}`"
    # read stdin (pipe) and print from it:
    cat
    # Note: if instead of reading from the pipe, you wanted to print
    # the additional parameters of the function, you could do:
    # shift; echo $*
    # back to normal (no color)
    echo -ne "${NORMAL}"
}
echo hi | colorize GREEN

Если вы хотите проверить другие цвета, посмотрите в этом списке. Вы можете добавить поддержку для любого цвета, просто создав дополнительную переменную в этой функции с правильным именем и значением.

8
ответ дан 25 May 2018 в 11:35
  • 1
    Поэтому я просто помещал это в файл «раскрасить», отмечал его как исполняемый файл и помещал его в / etc / bin? – TenorB 11 May 2012 в 04:15
  • 2
    Вы можете просто скопировать функцию на ваш .bashrc. – elias 11 May 2012 в 04:17
  • 3
    Хорошо, спасибо! это помогает! – TenorB 11 May 2012 в 04:19
  • 4
    Если вы действительно хотите выполнить исполняемый файл, вам нужно скопировать все из функции (внутри скобок) и поместить в файл «раскрасить», пометить его как исполняемый файл и поместить в какой-либо каталог в переменной $ PATH ( /usr/local/bin - хорошее место) – elias 11 May 2012 в 04:19
  • 5
    Если вы похожи на меня и просто пытаетесь узнать больше о сценариях bash, , вот еще один скрипт , который делает очень похожее. Интересно сравнить эти два сценария. Я собираюсь объединить их. – hangtwenty 5 November 2012 в 05:12

Я создал эту функцию, которую я использую в сценариях bash.

# Function to echo in specified color echoincolor () { case $1 in "red") tput setaf 1;; "green") tput setaf 2;; "orange") tput setaf 3;; "blue") tput setaf 4;; "purple") tput setaf 5;; "cyan") tput setaf 6;; "gray" | "grey") tput setaf 7;; "white") tput setaf 8;; esac echo "$2"; tput sgr0 }

Тогда я просто назову это так echoincolor green "This text is in green!"

В качестве альтернативы используйте printf [!d2 ] # Function to print in specified color colorprintf () { case $1 in "red") tput setaf 1;; "green") tput setaf 2;; "orange") tput setaf 3;; "blue") tput setaf 4;; "purple") tput setaf 5;; "cyan") tput setaf 6;; "gray" | "grey") tput setaf 7;; "white") tput setaf 8;; esac printf "$2"; tput sgr0 }

Затем просто назовите его следующим образом: colorprintf green "This text is in green!"

Помните, что echo предоставляет новую завершающую строку, а printf - нет.

2
ответ дан 25 May 2018 в 11:35

Я использую этот старый скрипт, имена hilite.pl, взятые из Интернета, уже с линией «неизвестного автора»!

#!/usr/bin/perl -w
### Usage: hilite <ansi command> <target string>
### Purpose: Will read text from standard input and perform specified highlighting
### command before displaying text to standard output.
### License: GNU GPL
# unknown author 

$|=1; # don't buffer i/o
$command = "$ARGV[0]";
$target = "$ARGV[1]";
$color = "\e[" . $command . "m";
$end = "\e[0m";

while(<STDIN>) {
    s/($target)/$color$1$end/;
    print $_;
}

Тогда я могу использовать его в трубах, чтобы «hilite» log output или другие вещи, используя regexp / PCRE:

 echo 'hello color world!!' | hilite.pl 34 "[Hh]el[^ ]*" | hilite.pl 43 .orld | hilite.pl 32 "\scolor\s"

Это будет рисовать привет в синем, цвет в зеленом и мире на желтом фоне

Вы можете увидеть список цветов с помощью (вы можете расширить выражение bash до {01..255}, если хотите):

for i in {01..10}  {30..49} {90..110}  ; do echo $i | hilite.pl $i $i ; done
1
ответ дан 25 May 2018 в 11:35

Есть более элегантный ответ, чем любой из них:

sudo apt-get install grc

(который также устанавливает grcat)

Теперь выполните:

echo "[SEVERE] Service is down" | grcat ~/conf.username

Где conf.myusername содержит:

regexp=SEVERE
colours=on_red
count=more

(по какой-то причине я не могу найти правильное регулярное выражение для «всего между кавычками»)

0
ответ дан 25 May 2018 в 11:35

Существует более элегантный ответ, чем любой из них:

sudo apt-get install grc

(который также устанавливает grcat)

Теперь выполните:

echo "[SEVERE] Service is down" | grcat ~/conf.username

Где conf.myusername содержит:

regexp=SEVERE
colours=on_red
count=more

(по какой-то причине я не могу найти правильное регулярное выражение для «всего между кавычками»)

1
ответ дан 7 August 2018 в 18:43

Другие вопросы по тегам:

Похожие вопросы: