बैश स्क्रिप्ट से रंगीन आउटपुट कैसे प्राप्त करें?


9

जब मैं grepगनोम-टर्मिनल के भीतर से निष्पादित करता हूं , तो मुझे रंगीन आउटपुट मिलते हैं - आसानी से ध्यान देने योग्य मैच, विभिन्न रंगों आदि के लिए लाइन-नंबर (एन)।

लेकिन जब मैं grepबैश स्क्रिप्ट के माध्यम से एक ही कमांड निष्पादित करता हूं तो मुझे बिना रंग के प्लेन आउटपुट मिलता है

क्या कोई तरीका है जो मैं bash script का उपयोग करके रंगीन आउटपुट प्राप्त कर सकता हूं?

जवाबों:


9

--colorविकल्प का उपयोग करना मेरे लिए तब काम करता है जब मैं शेल स्क्रिप्ट के अंदर grep चलाता हूं।

यहाँ एक उदाहरण है कि आप क्या चाहते हैं।

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

वास्तव में धन्यवाद। मैंने grep मैन पेज को ब्राउज़ किया --color[=WHEN], --colour[=WHEN], लेकिन मुझे भ्रमित कर दिया, हालांकि यह ठीक समझाया गया है
zetah

3

यहाँ एक छोटी सी स्क्रिप्ट है जो आपको यह समझने में मदद करती है कि बैश के साथ tput कैसे काम करता है

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

यह निम्न आउटपुट को BOLD , UNDERLINE, हाइलाइटिंग और रंगों जैसे प्रारूपों के साथ प्रिंट करेगा ।

BASH स्क्रिप्ट पाठ बनाने और रंग के साथ प्रिंट करता है


0

क्या आपने इन उपनामों को अपने साथ जोड़ने की कोशिश की ~/.bashrc?

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

हां, वे लाइनें मौजूद हैं, लेकिन आउटपुट दुर्भाग्य से (w / o रंग) है जब bre स्क्रिप्ट से grep चलाया जाता है।
zetah

शेल उपनामों का केवल डिफ़ॉल्ट रूप से इंटरैक्टिव शैल सत्रों पर प्रभाव पड़ता है। आपको या तो 1) कमांड --colorको विकल्प को grepस्पष्ट रूप से (सुरक्षित) या 2 में जोड़ने की आवश्यकता है expand_aliasesशेल विकल्प और source ~/.bashrc(संभावित अन्य उपनामों के कारण समस्याओं के लिए प्रवण ) सक्षम करें । आप 1 को परिष्कृत कर सकते हैं GREP="grep --color=auto"और अपनी स्क्रिप्ट में हर जगह के $GREPबजाय एक चर और बाद में उपयोग को परिभाषित कर सकते हैं grep
डेविड फ़ॉस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.