Existe alguma opção para deixar a saída do gato com cor?

18

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

    
por Jichao 17.12.2009 / 05:52

4 respostas

18

Um pacote GNU, destaque da fonte , parece fazer o truque (embora não esteja usando o gato - como John T aponta, isso não é possível com o gato especificamente). Está disponível via apt-get no Ubuntu e requer a biblioteca regex Boost. Verifique seu gerenciador de pacotes para ver se ambos estão disponíveis, caso contrário, você pode pegá-los na web. A página 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 parece:

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

Nada sofisticado, apenas simplificando o script less que eles incluem com destaque de origem. Ele age como gato quando chamado dessa maneira.

O script menos incluído é um bom script para usar também. 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 de destaque da fonte.

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

    
por 17.12.2009 / 06:57
9

Para criar um código destacado de sintaxe com algo como cat , criei um comando ccat seguindo as instruções em link .

#!/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 produzir um código destacado de sintaxe com algo como less , eu uso o vim como uma substituição menor.

alias less='/usr/share/vim/vim72/macros/less.sh'
    
por 15.10.2010 / 16:32
3

Para resolver isso, usei destaque . Eu fiz uma função que tenta imprimir o arquivo com realce de sintaxe, e se ele falhar, basta usar cat para imprimir o arquivo. Você pode alterar o tema de destaque da sintaxe para o que você 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 fiz uma função para imprimir um arquivo com realce de sintaxe como html e abri-lo no navegador para imprimir (depende do comando open 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
}

Aproveite!

    
por 20.06.2013 / 18:45
1

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

    
por 17.12.2009 / 05:55