Wie bekomme ich eine farbige Ausgabe von einem Bash-Skript?


9

Wenn ich grepinnerhalb des Gnome-Terminals ausführe , erhalte ich eine farbige Ausgabe - leicht erkennbare Übereinstimmung, Zeilennummern (-n) mit verschiedenen Farben usw.

Aber wenn ich genau den gleichen grepBefehl über ein Bash-Skript ausführe, erhalte ich eine Ebenenausgabe ohne Färbung

Gibt es eine Möglichkeit, mithilfe eines Bash-Skripts eine farbige Ausgabe zu erhalten?

Antworten:


9

Die Verwendung der --colorOption funktioniert für mich, wenn ich grep in Shell-Skripten ausführe.

Hier ist ein Beispiel dafür, was Sie wollen.

grep -n --color=auto "PATTERN" FILE

In der Tat danke. Ich habe die Grep-Manpage durchsucht, --color[=WHEN], --colour[=WHEN]mich aber verwirrt, obwohl es gut erklärt wurde
Zetah

3

Hier ist ein kleines Skript, mit dem Sie herausfinden können, wie tput mit bash funktioniert

#!/bin/bash
#@auth kesavan.muthuvel
#@desc - bash with colors :)

B=`tput bold`           #BOLD
D=`tput dim`            #DIM
U=`tput sgr 0 1`        #UNDERLINE
U2=`tput smul`          #UNDERLINE2
NOU=`tput rmul`         #NO UNDERLINE
H=`tput smso`           #HIGHLIGHT
X=`tput sgr0`           #RESET
C='tput setaf '         #COLOR


for i in 0 1 2 3 4 5 6 7 ; do
        c=`$C$i` && echo $c${B}I${U}always$NOU $D love \
           ${U2}colors$NOU \& $c${H}GNU/Linux$X
done;

Dadurch wird die folgende Ausgabe mit Formaten wie BOLD , UNDERLINE, Highlighting und Farben gedruckt.

BASH Script-Drucke mit Textformatierung und FARBEN


0

Haben Sie versucht, diesen Alias ​​zu Ihrem hinzuzufügen ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

Ja, diese Zeilen sind vorhanden, aber die Ausgabe ist leider dieselbe (ohne Farbgebung), wenn grep über das Bash-Skript ausgeführt wird.
Zetah

Shell-Aliase wirken sich standardmäßig nur auf interaktive Shell-Sitzungen aus. Sie müssen entweder 1) die --colorOption grepexplizit zum Befehl hinzufügen (sicher) oder 2) die expand_aliasesShell-Option aktivieren und source ~/.bashrc(aufgrund möglicher anderer Aliase anfällig für Probleme). Sie können 1) verfeinern und eine Variable definieren GREP="grep --color=auto"und später verwenden, $GREPanstatt grepüberall in Ihrem Skript.
David Foerster
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.