Apakah ada opsi untuk membiarkan keluaran kucing dengan warna?

19

Jika saya ingin menampilkan file kode sumber C dengan penyorotan sintaks, dapatkah saya menggunakan cat?

Jichao
sumber
Anda bisa menggunakan bat ostechnix.com/…
Ridderhoff

Jawaban:

18

Paket GNU, sumber-highlight , tampaknya melakukan trik (meskipun tidak menggunakan cat - seperti yang ditunjukkan oleh John T, ini tidak mungkin dengan cat secara khusus). Ini tersedia melalui apt-get di Ubuntu, dan membutuhkan pustaka Boost regex. Periksa pengelola paket Anda untuk melihat apakah keduanya tersedia, jika tidak Anda dapat mengambilnya dari web. Halaman GNU yang ditautkan sebelumnya memiliki tautan ke Boost, saya pikir.

Setelah instalasi, saya membuat skrip baru di jalur saya yang disebut ccat . Scriptnya terlihat seperti:

#!/bin/bash
src-hilite-lesspipe.sh $1

Tidak ada yang mewah, hanya menyederhanakan skrip yang kurang mereka sertakan dengan sumber-sorot. Kerjanya seperti kucing ketika dipanggil dengan cara ini.

Namun skrip yang kurang disertakan juga merupakan skrip yang bagus untuk digunakan. Saya baru saja menambahkan yang berikut ini ke .bashrc :

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

Script itu termasuk dalam manual online untuk sumber-highlight, juga.

Saya kira Anda bisa alias kucing untuk memanggil src-hilite-lesspipe.sh $ 1 jika Anda merasa ingin mengabaikan kucing sama sekali, tetapi itu mungkin tidak diinginkan.

rgm
sumber
4
Saya, secara pribadi, lebih memilih alias untuk skrip bash satu baris yang diakhiri dengan $1:).
mgalgs
Yap, mitch_feaster, Anda tepat. :]
rgm
2
Bekerja pada Mac juga dengan brew install source-highlight. Tidak dapat mewarnai yaml :(
Sairam
9

Untuk menghasilkan kode yang disorot dengan sintaks dengan sesuatu seperti cat, saya membuat ccatperintah dengan mengikuti petunjuk di http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/ .

#!/bin/bash
if [ ! -t 0 ];then
  file=/dev/stdin
elif [ -f $1 ];then
  file=$1
else
  echo "Usage: $0 code.c"
  echo "or e.g. head code.c|$0"
  exit 1
fi
pygmentize -f terminal -g $file

Untuk menghasilkan sintaks yang disorot kode dengan sesuatu seperti less, saya menggunakan vim sebagai pengganti yang kurang.

alias less='/usr/share/vim/vim72/macros/less.sh'
michaelvobrien
sumber
Bagaimana cara menginstal pygmentize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia
Saya suka jenis solusi portabel ini. Saya menambahkan script ini sebagai fungsi untuk bash saya .functionssebagaicolorize(){...}
guneysus
3

Untuk mengatasi ini, saya menggunakan highlight . Saya membuat fungsi yang mencoba untuk mencetak file dengan penyorotan sintaks, dan jika gagal kembali ke hanya menggunakan cat untuk mencetak file. Anda dapat mengubah tema penyorotan sintaksis menjadi apa pun yang Anda inginkan.

function hl { # Overrides the cat command to use syntax highlighting
    # Highlight with 'moria' theme to terminal, and suppress errors
    highlight $1 -s moria -O xterm256 2> /dev/null

    if (($? != 0)); then # If the command had errors
        cat $1 # Just cat the file out instead
    fi
}

Jika Anda menggunakan Mac dan menggunakan Homebrew (sangat disarankan!), Anda dapat menginstal highlight dengan menjalankan brew install highlight. Jika tidak, ini harus tersedia pada sebagian besar manajer paket lain dan dapat diunduh di sini .

Saya juga membuat fungsi untuk mencetak file dengan penyorotan sintaks sebagai html dan membukanya di browser untuk mencetak (bergantung pada openperintah pada OS X):

function hlprint {
    # Print with line numbers and 'moria' theme
    highlight $1 -l -o print.html -s moria
    open print.html # Open in browser
    sleep 5 # Give the browser time to open
    rm print.html highlight.css # Remove output files
}

Nikmati!

Kevin
sumber
1

Tidak, kucing tidak memiliki kemampuan penyorotan sintaksis. Jika Anda ingin melihat kode sumber dengan penyorotan sintaksis, masukkan ke vim atau editor pilihan Anda (yang memiliki penyorotan sintaksis). Dengan cara ini, Anda bahkan dapat halaman melalui output jika file panjang menggunakan Ctrl+ F(maju) dan Ctrl+ B(mundur).

John T
sumber