Existem opções para deixar o gato sair colorido?

19

Se eu quiser gerar um arquivo de código-fonte C com destaque de sintaxe, posso usar cat?

Jichao
fonte
você pode simplesmente usar bat ostechnix.com/...
Ridderhoff

Respostas:

18

Um pacote GNU, source-realce , parece fazer o truque (embora não esteja usando cat - como John T aponta, isso não é possível com o cat especificamente). Está disponível via apt-get no Ubuntu e requer a biblioteca de expressões regulares Boost. Verifique o seu gerenciador de pacotes para ver se ambos estão disponíveis, caso contrário, você pode obtê-los na web. A página do GNU vinculada anteriormente tem um link para o Boost, eu acho.

Após a instalação, criei um novo script no meu caminho chamado ccat . O script se parece com:

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

Nada extravagante, apenas simplificando o menos script que eles incluem com destaque da fonte. Ele age como um gato quando chamado dessa maneira.

O script less incluído também é um bom script para usar. Acabei de adicionar o seguinte ao .bashrc :

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

Esse script também está incluído no manual on-line para destaque da fonte.

Eu acho que você poderia, aliás, chamar cat para src-hilite-lesspipe.sh $ 1 se você quisesse ignorar o gato completamente, mas isso pode não ser desejável.

rgm
fonte
4
Pessoalmente, prefiro um alias aos scripts bash de uma linha que terminam com $1:).
mgalgs
Sim, mitch_feaster, você está no local. :]
rgm 23/12
2
Também funciona em um Mac com brew install source-highlight. Não é possível colorir o yaml :(
Sairam
9

Para gerar o código destacado da sintaxe com algo como cat, criei um ccatcomando seguindo as instruções em 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

Para gerar o código destacado da sintaxe com algo como less, eu uso o vim como um substituto menos.

alias less='/usr/share/vim/vim72/macros/less.sh'
michaelvobrien
fonte
Como instalar pycementize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia
Eu gosto deste tipo de soluções portáteis. Eu adicionei este script como uma função para a minha festa .functionscomocolorize(){...}
guneysus
3

Para resolver isso, usei destaque . Eu criei uma função que tenta imprimir o arquivo com destaque de sintaxe e, se falhar, volta a usar simplesmente cat para imprimir o arquivo. Você pode alterar o tema de destaque da sintaxe para o que quiser.

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
}

Se você estiver em um Mac e usar o Homebrew (altamente recomendado!), Poderá instalar o destaque executando brew install highlight. Caso contrário, ele deve estar disponível na maioria dos outros gerenciadores de pacotes e pode ser baixado aqui .

Também criei uma função para imprimir um arquivo com sintaxe destacada como html e abri-lo no navegador para imprimir (depende do opencomando no 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
}

Desfrutar!

Kevin
fonte
1

Não, o gato não possui habilidades de destaque de sintaxe. Se você deseja visualizar o código-fonte com destaque de sintaxe, coloque-o no vim ou no seu editor de escolha (que possui destaque de sintaxe). Dessa forma, você pode até paginar a saída se for um arquivo longo usando Ctrl+ F(avançar) e Ctrl+ B(voltar).

John T
fonte