GNU/Linux >> Belajar Linux >  >> Linux

Output penyorotan warna berdasarkan regex di shell

Ada jawaban di superuser.com:

your-command | grep -E --color 'pattern|$'

atau

your-command | grep --color 'pattern\|$'

Ini akan "cocok dengan pola Anda atau akhir baris pada setiap baris. Hanya pola yang disorot..."


Anda dapat mencoba (mungkin perlu lebih banyak melarikan diri):

BLUE="$(tput setaf 4)"
BLACK="$(tput sgr0)"
command | sed "s/^ERROR /${BLUE}ERROR ${BLACK}/g"

Jika Anda ingin mengaktifkan ini secara global, Anda akan menginginkan fitur terminal, bukan proses yang Anda gunakan untuk menyalurkan keluaran, karena sebuah pipa akan mengganggu beberapa perintah (dua masalah adalah stdout dan stderr akan tampak rusak dan buffered, dan bahwa beberapa perintah berperilaku berbeda saat mengeluarkan ke terminal).

Saya tidak tahu ada terminal "konvensional" dengan fitur ini. Ini mudah dilakukan di Emacs, dalam term buffer:konfigurasikan font-lock-keywords untuk term-mode .

Namun, Anda harus memikirkan baik-baik apakah Anda benar-benar menginginkan fitur itu setiap saat. Bagaimana jika perintah memiliki warna sendiri (mis. grep --color , ls --color )? Mungkin lebih baik mendefinisikan alias pendek untuk perintah colorizer dan menjalankan myCommand 2>&1|c ketika Anda ingin mewarnai myCommand keluaran. Anda juga bisa menggunakan beberapa perintah khusus untuk selalu mewarnai.

Perhatikan bahwa status pengembalian pipeline adalah terakhir perintah, jadi jika Anda menjalankan myCommand | c , Anda akan mendapatkan status c , bukan myCommand . Inilah bash wrapper yang menghindari masalah ini, yang dapat Anda gunakan sebagai w myCommand :

w () {
  "[email protected]" | c
  return $PIPESTATUS[0]
}

Anda dapat menggunakan program seperti:

  • spc (Supercat)
  • grc (Pewarna Generik)
  • sorot
  • histring
  • pygmentize
  • grep --warna

Anda dapat melakukan sesuatu seperti ini, tetapi perintah tidak akan melihat tty (beberapa akan menolak untuk menjalankan atau berperilaku berbeda atau melakukan hal-hal aneh):

exec > >(histring -fEi error)    # Bash

Linux
  1. Bagaimana cara mengubah output shell Linux ke HTML?

  2. Mengarahkan output perintah di buruh pelabuhan

  3. Ubah editor crontab default menjadi nano di FreeBSD

  1. 2>&1 dan memahami idiom skrip shell lainnya

  2. Bagaimana Cara Menetapkan Output Perintah Ke Variabel Shell?

  3. Sembunyikan output dari perintah shell hanya jika berhasil?

  1. Menyimpan Output Perintah Dalam Variabel Shell?

  2. Apa Perbedaan Get Command Output Menggunakan`command`dan $(command) Di Shell??

  3. Bagaimana Mengenalinya Jika Output Dari Perintah Atau Skrip Shell Adalah Stdout Atau Stderr?