Terminal atau konsol berwarna?

8

Saya suka warna di konsol saya, dan saya bertanya-tanya apakah ada cara untuk mendapatkan terminal (saya kira hanya perangkat lunak yang dapat melakukan itu) mencetak hampir semua warna. Tentu saja ada beberapa --color=autohal, tetapi berfungsi untuk beberapa perintah ( ls, grep...?). Apa yang saya inginkan, adalah sesuatu yang jauh lebih berwarna, yang berfungsi juga untuk perintah yang tidak dibuat menggunakan warna, saya tidak tahu apakah itu mungkin.

Misalnya, ada MobaXTerm untuk Windows (sesuatu seperti Cygwin) yang menggunakan banyak warna. Tentu saja itu bukan hanya terminal, tetapi perangkat lunak lengkap (lapisan lain) ... mungkin itu satu-satunya cara untuk mendapatkan sesuatu yang berwarna pekat?

Petunjuk apa pun akan sangat dihargai.

Guillaume Fenollar
sumber
2
Lihat Output penyorotan warna berdasarkan regex in shell pada StackOverflow.
manatwork
Terima kasih teman-teman untuk balasan Anda, tapi itu benar-benar bukan yang saya cari. Saya ingin sesuatu yang tidak perlu mengubah kebiasaan saya. Seperti perangkat lunak terminal yang menerapkan warna pada output ...
Guillaume Fenollar
1
Bagaimana dengan shell? Lihatlah fish, shell interaktif yang ramah .
manatwork

Jawaban:

6

Terima kasih untuk semua balasan, tetapi tidak ada yang cocok dengan kebutuhan saya. Saya menginginkan sesuatu yang tidak mengganggu, dan saya menemukannya di cw. Ini adalah soft yang bagus yang perlu Anda tambahkan di awal PATH Anda. Jadi tentu saja, itu tidak bekerja dengan setiap perintah (hanya yang sudah ditentukan), tetapi hasilnya terlihat sangat bagus! Lihatlah jika Anda tertarik: http://freecode.com/projects/cw

Guillaume Fenollar
sumber
3

Anda juga dapat menggunakan cope untuk ini.

cope adalah pembungkus di sekitar program yang output ke terminal, untuk memberi mereka warna untuk utilitas dan estetika sambil tetap menjaga mereka sama di tingkat teks.
jasonwryan
sumber
Terima kasih atas solusinya. Ini hampir sama dengan 'cw', kecuali bahwa, IMO, cw lebih mudah untuk diinstal. Tapi warnanya sama dan highlight bidangnya hampir sama. Selain itu, cw memiliki hampir seratus kemungkinan perintah, sedangkan cope memiliki ~ 40.
Guillaume Fenollar
1

Sesuatu yang sering saya lakukan adalah menyalurkan output dari perintah atau file log yang tidak menggunakan warna sendiri melalui skrip kecil yang membuatnya berwarna sesuai dengan aturan yang cocok dengan teks tertentu. Perl sangat pandai dalam hal ini.

Ini sedikit contohnya:

#!/usr/bin/perl -n

BEGIN {
  $exp = shift @ARGV;
  $color = shift @ARGV;
  die "Use: colourize regexp colour" unless $color;
}

if (/$exp/) {
  print"\e[${color}m";
}

print;

if (/$exp/) {
  print "\e[0m";
}

Simpan ini sebagai colourizetempat Anda PATH, chmod +xdan Anda dapat melakukan hal-hal seperti

command | colourize WARNING 31

agar semua baris yang mengandung PERINGATAN dicetak dengan warna merah. Angka 31 adalah kode warna ANSI untuk merah.

Bristol
sumber
0

Pertama, mengenai warna secara umum, skrip ini mungkin menarik bagi Anda. Ini berfungsi dengan baik di konsol (di terminal, lebar tab tidak diatur dengan benar).

#!/bin/bash

setterm -regtabs 4
Color_names="bla red gre yel blu mag cya whi"
Color_arr=($Color_names)

tput setaf 4
tput setab 7
echo -n "            normal             "
tput sgr0

echo -n " "

tput setaf 7
tput setab 4   
echo "            bright             "

tput sgr0
for cmd in sgr0 bold
do
    tput $cmd
    for m in 0 1 2 3 4 5 6 7
    do
        tput setaf $m
        echo -n ${Color_arr[$m]}" "
    done
done
echo

tput sgr0
cat /sys/module/vt/parameters/default_red \
    /sys/module/vt/parameters/default_grn \
    /sys/module/vt/parameters/default_blu | sed s/,0/", "/g | \
    sed s/^0/" "/g | \
    tr "," "\t"

Kedua, Anda dapat melakukan lebih banyak hal dengan ls dari sekadar --color=auto. Tapi, itu membutuhkan kerja keras untuk menyelesaikan semuanya. Saya menulis sebuah skrip untuk memfasilitasi pemahaman, serta untuk mewarnai file (berdasarkan ekstensi mereka) secara sistematis.

Jika terlalu lama untuk ditempelkan, periksa di sini .

#!/bin/bash

# must be sourced

# see `man dircolors`
# in particular `dircolors -p > coldb.txt` (-p, --print-database)

# attributes
# 00 = none
# 01 = bold (bright)
# 04 = underscore (white; disables color code)
# 05 = blink (gray background)
# 07 = reverse (color as background)
# 08 = concealed (doesn't do anything)

# colors
R='00;31' # red
G='00;32' # green
Y='00;33' # yellow (brown in my console)
B='00;34' # blue
M='00;35' # magenta
C='00;36' # cyan
W='00;37' # white

# bold (bright)
BR='01;31' # red
BG='01;32' # green
BY='01;33' # yellow
BB='01;34' # blue
BM='01;35' # magenta
BC='01;36' # cyan
BW='01;37' # white

# for di (below) and possible some others
BL='00;30' # black
GR='01;30' # gray

# background
BGBL='40' # blue
BGRE='41' # red
BGGR='42' # green
BGYE='43' # yellow
BGBL='44' # blue
BGMA='45' # magenta
BGCY='46' # cyan
BGWH='47' # white

RS="rs=0"         # reset
DI="di=$BB"       # directory
LN="ln=$C"        # link
MH="mh=00"        # multihardlink (file with more than one link)
PI="pi=$BY;$BGBL" # pipe (FIFO)
SO="so=$BM"       # socket
DO="do=$BM"       # door
BD="bd=$BY;$GBBL" # block device driver
CD="cd=$BY;$BGBL" # character device driver
OR="or=$BR"       # symlink to nonexistent (or non-stat'able) file
SU="su=$W;$BGRE"  # file that is setuid (u+s)
SG="sg=$BL;$BGYE" # file that is setgid (g+s)
CA="ca=$BL;$BGRE" # file with capability
TW="tw=$BL;$BGGR" # dir that is sticky and other-writable (+t,o+w)
OW="ow=$BB;$BGGR" # dir that is other-writable (o+w) and not sticky
ST="st=$BW;$BGBL" # sticky bit dir (+t) and not other-writable
EX="ex=$BG"       # file with execute permission

ARCHIVE="*.tar=$BR:*.tgz=$BR:*.arj=$BR:*.taz=$BR:*.lzh=$BR:*.lzma=$BR:*.tlz=$BR:*.txz=$BR:*.zip=$BR:*.z=$BR:*.Z=$BR:*.dz=$BR:*.gz=$BR:*.lz=$BR:*.xz=$BR:*.bz2=$BR:*.bz=$BR:*.tbz=$BR:*.tbz2=$BR:*.tz=$BR:*.deb=$BR:*.rpm=$BR:*.jar=$BR:*.war=$BR:*.ear=$BR:*.sar=$BR:*.rar=$BR:*.ace=$BR:*.zoo=$BR:*.cpio=$BR:*.7z=$BR:*.rz=$BR"
IMAGE="*.jpg=$BM:*.jpeg=$BM:*.gif=$BM:*.bmp=$BM:*.pbm=$BM:*.pgm=$BM:*.ppm=$BM:*.tga=$BM:*.xbm=$BM:*.xpm=$BM:*.tif=$BM:*.tiff=$BM:*.png=$BM:*.svg=$BM:*.svgz=$BM:*.mng=$BM:*.pcx=$BM"
MOVIE="*.mov=$M:*.mpg=$M:*.mpeg=$M:*.m2v=$M:*.mkv=$M:*.webm=$M:*.ogm=$M:*.mp4=$M:*.m4v=$M:*.mp4v=$M:*.vob=$M:*.qt=$M:*.nuv=$M:*.wmv=$M:*.asf=$M:*.rm=$M:*.rmvb=$M:*.flc=$M:*.avi=$M:*.fli=$M:*.flv=$M:*.gl=$M:*.dl=$M:*.xcf=$M:*.xwd=$M:*.yuv=$M:*.cgm=$M:*.emf=$M:*.axv=$M:*.anx=$M:*.ogv=$M:*.ogx=$M"
AUDIO="*.aac=$BM:*.au=$BM:*.flac=$BM:*.mid=$BM:*.midi=$BM:*.mka=$BM:*.mp3=$BM:*.mpc=$BM:*.ogg=$BM:*.ra=$BM:*.wav=$BM:*.axa=$BM:*.oga=$BM:*.spx=$BM:*.xspf=$BM:"
SOURCE="*.el=$BC:*.c=$BC:*.cpp=$BC"
TEXT="*.txt=$BW"
PDF="*.pdf=$R"
WEB="*.html=$Y:*.htm=$Y:*.css=$W;$BGMA"

TYPES="$ARCHIVE:$IMAGE:$MOVIE:$AUDIO:$SOURCE:$TEXT:$PDF:$WEB"

LS_COLORS="$RS:$DI:$LN:$MH:$PI:$SO:$DO:$BD:$CD:$OR:$SU:$SG:$CA:$TW:$OW:$ST:$EX:"$TYPES

export LS_COLORS
Emanuel Berg
sumber
0

Ada posting blog yang bagus tentang pewarnaan terminal . Kecuali untuk menggunakan dukungan warna bawaan pada alat yang berbeda yang direkomendasikannya grc, Generic Colouriser . Jika Anda menggunakan sistem berbasis Debian, Anda dapat menginstalnya melalui

sudo apt-get install grc

Anda kemudian dapat menggunakan memberi perintah yang ingin Anda warnai sebagai argumen grc, misalnya

grc head /var/log/syslog

Ini bergantung pada konfigurasi di /etc/grc.conf untuk dapat memilih file konfigurasi yang tepat untuk diwarnai head /var/log/syslog. Dalam hal ini berfungsi karena ada baris di /etc/grc.conf yang mengarahkan grcke file konfigurasi yang benar, yaitu conf.log.

Jika seseorang ingin memaksa file konfigurasi tertentu pada output tertentu yang dapat digunakan grcat, misalnya

git diff | grcat conf.diff

yang mewarnai output git diffdengan file konfigurasi conf.diff. File-file konfigurasi yang saya sebutkan adalah file-file default yang datang dengan paket-paket tetapi seseorang jelas dapat membuat konfigurasi sendiri.

NN
sumber