วิธีการรับเอาต์พุตสีจากสคริปต์ทุบตี?


9

เมื่อฉันดำเนินการgrepจากภายในเทอร์มินัล GNOME ฉันได้รับเอาต์พุตสี - การจับคู่ที่เห็นได้ง่ายอย่างง่ายดายหมายเลขบรรทัด (-n) ที่มีสีต่างกัน ฯลฯ

แต่เมื่อฉันรันgrepคำสั่งเดียวกันโดยใช้สคริปต์ทุบตีฉันจะได้ผลลัพธ์เป็นระนาบ

มีวิธีที่ฉันสามารถเอาท์พุทสีโดยใช้สคริปต์ทุบตี?

คำตอบ:


9

การใช้--colorตัวเลือกใช้งานได้สำหรับฉันเมื่อฉันเรียกใช้ grep ภายในเชลล์สคริปต์

นี่คือตัวอย่างของสิ่งที่คุณต้องการ

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

ขอบคุณจริงๆ ฉันเรียกดูหน้าคน grep แต่--color[=WHEN], --colour[=WHEN]ฉันสับสนแม้ว่ามันจะอธิบายได้ดี
zetah

3

นี่เป็นสคริปต์ขนาดเล็กที่ช่วยให้คุณเข้าใจวิธีการทำงานของ tput กับ 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;

สิ่งนี้จะพิมพ์ผลลัพธ์ต่อไปนี้ด้วยรูปแบบเช่นBOLD , UNDERLINE, การไฮไลต์และสี

BASH Script พิมพ์ด้วยการจัดรูปแบบข้อความและสี


0

คุณพยายามเพิ่มนามแฝงเหล่านี้ในของคุณ~/.bashrcหรือไม่

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

ใช่บรรทัดเหล่านั้นมีอยู่ แต่ผลลัพธ์ออกมาไม่เหมือนกัน (ไม่มีสี) เมื่อ grep ถูกเรียกใช้จากสคริปต์ทุบตี
zetah

นามแฝงเชลล์มีผลกับเซสชันเชลล์แบบโต้ตอบเท่านั้นโดยค่าเริ่มต้น คุณต้อง 1) เพิ่ม--colorตัวเลือกในgrepคำสั่งอย่างชัดเจน (ปลอดภัย) หรือ 2) เปิดใช้งานexpand_aliasesตัวเลือกเชลล์และsource ~/.bashrc(มีแนวโน้มที่จะเกิดปัญหาเนื่องจากนามแฝงอื่น ๆ ที่เป็นไปได้) คุณสามารถปรับแต่ง 1) และกำหนดตัวแปรGREP="grep --color=auto"และใช้ในภายหลัง$GREPแทนgrepทุกที่ในสคริปต์ของคุณ
David Foerster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.