Apakah ada metode untuk mewarnai output cat
, caranya grep
.
Sebab grep
, di sebagian besar konsol itu menampilkan output berwarna menyoroti kata kunci yang dicari. Jika tidak, Anda dapat memaksanya dengan menelepon grep --color
Apakah ada cara umum untuk mewarnai output dari program apa pun sesuai dengan pilihan pribadi Anda.
Dari apa yang saya mengerti, program itu sendiri tidak bertanggung jawab atas warna. Itu adalah cangkangnya.
Saya menggunakan shell default di FreeBSD 5.2.1 yang sepertinya belum pernah melihat warna sejak zaman dulu.
unix
syntax-highlighting
color-scheme
Lelouch Lamperouge
sumber
sumber
Jawaban:
cat
dengan penyorotan sintaks hanya di luar ruang lingkup.cat
tidak dimaksudkan untuk itu. Jika Anda hanya ingin seluruh isi beberapa file diwarnai dengan cara tertentu (dengan warna yang sama untuk seluruh file), Anda dapat menggunakan urutan pelarian terminal untuk mengontrol warna.Berikut ini skrip sampel yang akan memilih warna berdasarkan jenis file (Anda dapat menggunakan sesuatu seperti ini alih-alih memohon
cat
secara langsung):Di atas (pada terminal yang mendukung urutan pelarian itu) akan mencetak file teks apa pun sebagai 'tebal', dan akan mencetak file biner apa pun sebagai warna merah. Anda dapat menggunakan
strings
alih-alihcat
untuk mencetak file biner dan Anda dapat meningkatkan logika untuk membuatnya sesuai dengan kebutuhan Anda.sumber
cat
/grep
/any particular program
cat
doa hard-coded dengan beberapa$cmd
yang diinisialisasi sebagai $ 1 jika ada dua argumen atau default jika hanya ada satu. Kemudian Anda hanya menulis:colorful.sh grep file
.pygmentize
tidak dapat warna. Ada tips?Saya akan merekomendasikan
pygmentize
dari paket pythonpython-pygments
. Anda mungkin ingin mendefinisikan alias praktis berikut (kecuali jika Anda gunakanccat
dari paket ccrypt).Dan jika Anda ingin nomor baris:
sumber
highlight
perintah linux .alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, karena anjing lebih keren daripada kucing!#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Pilihan:
menghafal itu bagus. Saya memiliki alias:
tetapi highlight adalah alternatif lain yang tersedia secara luas
Instalasi:
Anda mungkin harus menginstal
pygments
menggunakan:dan untuk
highlight
paket yang mudah tersedia di semua distribusiDalam Aksi:
Saya melampirkan bidikan untuk keduanya di bawah untuk perbandingan yang baik dalam sorotan
Disini adalah
pygmentize
beraksi:dan ini adalah
highlight
:sumber
highlight
bekerja dengan baik untuk kebutuhan saya dan diinstal dengan mudah, terima kasih. Jika Anda ingin melihat file tanpa ekstensi (mis. .Bash_aliases), tambahkan--syntax=bash
juga-O ansi
untuk memaksanya.highlight
34x lebih cepat dari program python itu. Kekuatan bahasa klasik sangat kuat.highlight
, Anda ingin menambahkan--force
alias, jika tidak maka akan menimbulkan kesalahan untuk format file yang tidak dimengerti, sementara sebagaicat
pengganti Anda ingin itu tetap menampilkan output tanpa menyoroti, yang adalah apa--force
. Semua bersama-sama:alias cat="highlight -O ansi --force"
-O ansi
default ke output html :-)Dari akhir April 2018 dan selanjutnya:
Proyek ini adalah kloning kucing dengan dukungan untuk warna dan penyesuaian yang ditulis dalam Rust. Ia tidak hanya menawarkan penyorotan sintaksis dengan banyak tema, tetapi juga integrasi Git. Seperti yang dijelaskan dalam dokumentasi:
Ini, tentu saja, jauh lebih cepat daripada menghitung dan tidak tersedak ketika dihadapkan dengan file besar.
Kode sumber dan rilis biner + instruksi instalasi dapat ditemukan di repositori Github, serta perbandingan dengan program alternatif .
sumber
bat
tetap dalam mode interaktif secara default. Agar lebih berperilaku seperticat
, gunakan dengan-pp
argumen. Alias ​​likealias cat="bat -pp"
adalah apa yang orang cari.vimcat
adalah file tunggal (skrip shell) dan berfungsi dengan baik:http://www.vim.org/scripts/script.php?script_id=4325
Pembaruan terakhir adalah dari Desember 2013. Petunjuk: Anda dapat memaksa pengenalan jenis file dengan
vimcat -c "set ft=<type>"
.sumber
~/.vimrc
jadi sintaks Anda akan sama baik ketika ingin mengedit (vim) atau mencetak (vimcat). Perhatikan bahwa versi vimcat yang diperbarui dapat ditemukan di repositori vimpager .vimpager
tidak menggunakan skema warna vim saya.vimcat
(1 ~ 2 detik waktu eksekusi) jauh lebih lambat daripadapymentize
(~ 200 ms)highlight
, yang jauh lebih lambat daripadacat
(~ 20 ms) , yang jauh lebih lambat dari (~ 2 ms). Di sisi lain,vimcat
menangani lebih jenis file dan lebih akurat dibandingkanhightlight
danpygmentize
, dan masih lebih cepat dari pertamavim
kemudian:q
. Jadi saya mendapatkan pilihan untuk tugas khusus ini.Alat yang Anda cari mungkin adalah supercat (inilah pengantar cepat yang diterbitkan oleh Linux Journal).
Saya menyadari bahwa jawaban ini terlambat, dan tidak sepenuhnya memenuhi persyaratan OP. Jadi saya menambahkannya hanya untuk referensi (ini bisa berguna untuk orang lain yang mencari cara mewarnai keluaran file teks).
sumber
Ada versi cat- ccat berwarna . Dapatkan dari https://github.com/jingweno/ccat/ .
Instalasi di Linux / Windows / macOS
Ini adalah eksekusi mandiri tunggal sehingga untuk menginstalnya Anda dapat membongkar versi biner untuk OS Anda https://github.com/jingweno/ccat/releases dan menyalin biner ccat misalnya ke
/usr/local/bin
.Jika Anda ingin menghindari binari, atau jika tidak ada biner untuk platform Anda (mis. Raspberry pi, dll), maka Anda dapat secara kompilasi mengkompilasi dari sumber mengingat Anda memiliki
go
lingkungan pengembangan yang berfungsi (apt install golang
pada linux berbasis debian ataubrew install golang
pada mac):Menginstal di Mac melalui homebrew
Alias ​​to
cat
Untuk mengganti biasa
cat
denganccat
menambahkan~/.bashrc
:ccat
diimplementasikan dalam Go , jadi itu adalah biner asli yang berjalan jauh lebih cepat daripada solusi berbasis Python, seperti pygments , modul di belakangpygmentize
; Saya tidak melihat perbedaan kecepatan yang mencolok antaracat
danccat
.sumber
brew install ccat
sudah cukup, tidak perlubrew tap
lagi.Cara terbaik dan cara termudah untuk melakukannya jika Anda memiliki vim di mesin Anda adalah dengan menggunakan
vimcat
yang datang denganvimpager
program.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Jalankan vimcat:
vimcat index.html
sumber
highlight
dan 3x lebih lambat daribat
untuk skrip bash 30-baris pada komputer saya.source-highlight
Mungkin itu mungkin untuk menemukan
source-highlight
rilis menarik di bawah GNU : paket berbeda darihighlight
.Kutipan dari
apt-cache show source-highlight
:Saya melakukan beberapa alias (Cat dan PCat, lihat di bawah) dan ini adalah output mereka
Anda dapat menginstal berdasarkan Debian dengan
dan tambahkan sebagai alias misalnya di Anda
.bash_aliases
dengan sesuatu seperti baris di bawah ini.Atau Anda dapat melakukan alias serupa (tanpa
-i
di akhir memiliki kemungkinan untuk pipa )Di antara opsi yang bisa dibaca
man source-highlight
yang-s
menggarisbawahi bahwa adalah mungkin untuk memilih, atau kekuatan , yang menyoroti dengan baris perintah atau meninggalkan untuk program tugas ini:sumber
less
dengansource-highlight
, seseorang di GitHub memberikan jawabannya:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
danexport LESS=" -R "
. Sangat berguna ketikapygmentize
tidak tersedia dan tidak dapat diinstal.Itu tidak benar. Terminal hanya mengartikan kode warna yang dikeluarkan ke terminal. Bergantung pada kemampuannya, ia dapat mengabaikan kode pemformatan / pewarnaan tertentu.
Dari halaman manual, sepertinya kucing tidak mendukung pewarnaan hasilnya. Bahkan jika itu untuk mendukung pewarnaan seperti grep apa yang harus diwarnai dalam file teks? Sintaksis menyoroti pengetahuan yang diperlukan tentang bahasa yang mendasarinya yang tidak berada dalam lingkup utilitas sederhana seperti kucing.
Anda dapat mencoba editor yang lebih kuat seperti vim, emacs, gedit dll pada platform unix jika melihat kode yang disorot adalah tujuan Anda.
sumber
cat
Bukan untuk mencetak file dengan nomor baris, itu bukan untuk mengompresi beberapa baris kosong, itu bukan untuk melihat karakter ASCII yang tidak dicetak, itu untuk menggabungkan file." - dari UNIX Style, atau cat -v Dianggap Berbahaya .Pada OSX cukup lakukan
brew install ccat
.https://github.com/jingweno/ccat . Suka kucing tetapi menampilkan konten dengan penyorotan sintaksis. Dibangun di Go.
sumber
kelelawar yang tepat melakukan itu dan dapat diartikan sebagai kucing
alias cat='bat'
sumber
Pertanyaan lama, hanya menjawab catatan untuk memberikan solusi yang akhirnya saya gunakan. Mungkin ini sedikit hacky (mungkin bukan maksud asli dari parameter), tetapi:
alias cgrep = 'grep -C 9000'kucing apa pun | cgrep 'snozzberries'..
grep -C N
akan memberikan N baris konteks di atas dan di bawah item yang ditemukan. Jika lebih besar dari input, seluruh input disertakan. Dalam hal ini, kami hanya memastikan itu lebih besar dari keluaran terminal tipikal yang ingin kami lihat secara manual, yang umumnya ingin Anda lakukan jika menyorot.EDIT: Namun, solusi yang disarankan di bawah ini oleh Beni Cherniavsky-Paskin lebih unggul - cocok dengan (dan menyoroti) baik kata yang Anda cari atau awal dari garis (tidak dapat disorot). Hasil bersihnya persis seperti yang Anda inginkan.
Itu solusi terbaik baru yang pernah saya lihat untuk masalah itu, terima kasih Beni.
sumber
egrep 'snozzberries|$'
Dalam pertanyaan ini /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
alat direkomendasikan sebagai alternatifsupercat
.Man of grc dan of
grcat
; itu adalah bagian dari paket grc ( sumber ):sumber
Saya telah menulis skrip kecil untuk melakukan pewarnaan menggunakan
pygmentize
.Dan kemudian membuat alias ke skrip.
alias cat=colorize_via_pygmentize
. Juga jangan lupa untuk menyimpan ini di ~ / .bashrc .sumber
Jika Anda hanya ingin satu liner untuk mengatur
cat
output ke warna yang diberikan, Anda dapat menambahkanalias cat="echo -en 'code' | cat - "
untuk Anda
~/.$(basename $SHELL)rc
Berikut adalah intisari dengan kode warna: https://gist.github.com/chrisopedia/8754917
Saya suka
'\e[1;93m'
, yang intensitas tinggi kuning. Ini terlihat seperti ini:sumber
cukup gunakan vim dan file vimrc ini .
oneliner:
nano -v
mungkin juga bisa menjadi alternatif.sumber
Tempatkan di ~ / .bashrc Anda
kemudian
sumber