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?

Zetah
quelle

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
Octavian A. Damiean
quelle
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

Kesavan Muthuvel
quelle
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'
Carlos Ricardo
quelle
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