Jak uzyskać kolorowe wyjście ze skryptu bash?


9

Kiedy wykonuję grepz terminala gnome, otrzymuję kolorowe wyjście - łatwo zauważalne dopasowanie, numery linii (-n) o różnych kolorach itp.

Ale kiedy wykonuję dokładnie to samo greppolecenie za pomocą skryptu bash, otrzymuję wyjście samolotu, bez kolorowania

Czy istnieje sposób na uzyskanie kolorowych wyników za pomocą skryptu bash?

Odpowiedzi:


9

Użycie tej --coloropcji działa dla mnie, gdy uruchamiam grep w skryptach powłoki.

Oto przykład tego, czego chcesz.

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

Rzeczywiście dzięki. --color[=WHEN], --colour[=WHEN]
Przejrzałem

3

Oto mały skrypt, który pomoże Ci zrozumieć, jak tput działa z bash

#!/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;

Spowoduje to wydrukowanie następujących danych wyjściowych w formatach takich jak BOLD , UNDERLINE, Podświetlanie i kolory.

Druk BASH Script z formatowaniem tekstu i kolorami


0

Czy próbowałeś dodać te aliasy do swojego ~/.bashrc?

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

Tak, te linie są obecne, ale dane wyjściowe są niestety takie same (bez kolorowania), gdy grep jest uruchamiany ze skryptu bash.
zetah

Aliasy powłoki domyślnie wpływają tylko na interaktywne sesje powłoki. Musisz albo 1) wyraźnie dodać --coloropcję do greppolecenia (bezpiecznie) lub 2) włączyć expand_aliasesopcję powłoki i source ~/.bashrc(podatne na problemy z powodu możliwych innych aliasów). Możesz sprecyzować 1) i zdefiniować variabl, GREP="grep --color=auto"a później używać go $GREPzamiast grepwszędzie w skrypcie.
David Foerster,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.