Bagaimana cara mendapatkan hasil berwarna dari skrip bash?

9

Ketika saya mengeksekusi grepdari dalam gnome-terminal, saya mendapatkan keluaran berwarna - pertandingan yang mudah terlihat, nomor-baris (-n) dengan warna berbeda dll

Tetapi ketika saya menjalankan grepperintah yang persis sama melalui skrip bash saya mendapatkan output pesawat, tanpa pewarnaan

Apakah ada cara saya bisa mendapatkan hasil berwarna dengan menggunakan skrip bash?

zetah
sumber

Jawaban:

9

Menggunakan --coloropsi berfungsi untuk saya ketika saya menjalankan grep di dalam skrip shell.

Ini adalah contoh dari apa yang Anda inginkan.

grep -n --color=auto "PATTERN" FILE
Oktavianus A. Damiean
sumber
Memang terima kasih. Saya melihat-lihat halaman manual grep tetapi --color[=WHEN], --colour[=WHEN]membingungkan saya, meskipun dijelaskan dengan baik
zetah
3

Berikut ini skrip kecil yang membantu Anda memahami bagaimana tput bekerja dengan 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;

Ini akan mencetak output berikut dengan format seperti BOLD , UNDERLINE, Highlighting, dan warna.

BASH Script mencetak dengan format Teks dan WARNA

Kesavan Muthuvel
sumber
0

Apakah Anda mencoba menambahkan alias ini ke Anda ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
Carlos Ricardo
sumber
Ya, garis-garis itu ada, tetapi sayangnya sayangnya hasilnya sama (tanpa pewarnaan) ketika grep dijalankan dari skrip bash.
zetah
Alias ​​Shell hanya memiliki efek pada sesi shell interaktif secara default. Anda perlu 1) menambahkan --coloropsi ke grepperintah secara eksplisit (aman) atau 2) mengaktifkan expand_aliasesopsi shell dan source ~/.bashrc(rentan terhadap masalah karena kemungkinan alias lain). Anda dapat memperbaiki 1) dan mendefinisikan variabel GREP="grep --color=auto"dan kemudian menggunakan $GREPalih-alih grepdi mana saja dalam skrip Anda.
David Foerster