Existe um método para colorir a saída cat
, da maneira que grep
sim.
Pois grep
, na maioria dos consoles, exibe uma saída colorida destacando as palavras-chave pesquisadas. Caso contrário, você pode forçá-lo chamando grep --color
Existe uma maneira genérica de colorir a saída de qualquer programa de acordo com sua escolha pessoal.
Pelo que entendi, o programa em si não é responsável pelas cores. É a concha.
Estou usando o shell padrão no FreeBSD 5.2.1, que parece nunca ter visto cores desde a época.
unix
syntax-highlighting
color-scheme
Lelouch Lamperouge
fonte
fonte
Respostas:
cat
com destaque de sintaxe está simplesmente fora do escopo.cat
não é para isso. Se você deseja que todo o conteúdo de um arquivo seja colorido de alguma forma (com a mesma cor para o arquivo inteiro), você pode usar seqüências de escape de terminal para controlar a cor.Aqui está um exemplo de script que escolherá a cor com base no tipo de arquivo (você pode usar algo parecido com isto em vez de chamar
cat
diretamente):O item acima (em um terminal que suporta essas seqüências de escape) imprime qualquer arquivo de texto como 'negrito' e imprime qualquer arquivo binário como vermelho. Você pode usar em
strings
vez decat
imprimir arquivos binários e aprimorar a lógica para adequá-la às suas necessidades.fonte
cat
/grep
/any particular program
cat
chamada codificada por uma$cmd
que seja inicializada como $ 1 se houver dois argumentos ou um padrão se houver apenas um. Então você simplesmente escrever:colorful.sh grep file
.pygmentize
não é capaz de colorir. Alguma dica?Eu recomendo
pygmentize
do pacote pythonpython-pygments
. Você pode definir o seguinte alias útil (a menos que você useccat
do pacote ccrypt).E se você quiser números de linha:
fonte
highlight
comando linux .alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, porque os cães são mais legais que os gatos!#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Opções:
pycementize é bom. Eu tenho um apelido:
mas destaque é outra alternativa amplamente disponível
Instalação:
Pode ser necessário instalar
pygments
usando:e para
highlight
embalagens facilmente disponíveis em todas as distribuiçõesEm ação:
Estou anexando fotos para os dois abaixo para uma boa comparação nos destaques
Aqui está
pygmentize
em ação:e isto é
highlight
:fonte
highlight
funcionou muito bem para as minhas necessidades e instalou facilmente, obrigado. Se você quiser ver arquivos sem extensões (por exemplo, .bash_aliases), adicione--syntax=bash
além-O ansi
de forçá-lo.highlight
é 34x mais rápido que o programa python. O poder das línguas clássicas é forte.highlight
, você deseja adicionar--force
ao alias; caso contrário, ele emitirá um erro para os formatos de arquivo que não entende, enquanto comocat
substituição, você deseja que ele ainda mostre a saída sem realçar, e é--force
isso que faz. Todos juntos:alias cat="highlight -O ansi --force"
-O ansi
padrão é a saída html :-)A partir do final de abril de 2018:
O projeto é um clone de gato com suporte para cores e personalizações escritas em Rust. Ele oferece não apenas o destaque da sintaxe com vários temas, mas também a integração do Git. Conforme descrito na documentação:
É, escusado será dizer, muito mais rápido do que pythonize e não engasga quando confrontado com arquivos grandes.
O código fonte e as versões binárias + instruções de instalação podem ser encontradas no repositório do Github, bem como uma comparação com programas alternativos .
fonte
bat
permanece no modo interativo por padrão. Para que ele se comporte maiscat
, use-o com-pp
argumento. Um apelido semelhantealias cat="bat -pp"
é provavelmente o que as pessoas estão procurando.vimcat
é um arquivo único (shell script) e funciona bem:http://www.vim.org/scripts/script.php?script_id=4325
A última atualização é de dezembro de 2013. Dica: você pode forçar o reconhecimento de tipo de arquivo por
vimcat -c "set ft=<type>"
.fonte
~/.vimrc
realce de sintaxe, para que o realce da sintaxe seja o mesmo quando desejar editar (vim) ou imprimir (vimcat). Observe que uma versão atualizada do vimcat pode ser encontrada no repositório do vimpager .vimpager
não usa meu esquema de cores vim.vimcat
(1 ~ 2 segundos de tempo de execução) é muito mais lento quepymentize
(~ 200ms), que é muito mais lento quehighlight
(~ 20ms), que é muito mais lento quecat
(~ 2ms). Por outro lado,vimcat
lida com mais tipos de arquivos e é mais preciso do quehightlight
epygmentize
, e é ainda mais rápido do que primeirovim
, em seguida:q
. Por isso, ganha a minha escolha para esta tarefa específica.A ferramenta que você está procurando é provavelmente supercat (aqui está uma rápida introdução publicada pelo Linux Journal).
Sei que essa resposta está atrasada e que não atende totalmente aos requisitos do OP. Então, eu estou adicionando apenas para referência (pode ser útil para outras pessoas que procuram como colorir a saída do arquivo de texto).
fonte
Existe uma versão colorida do cat- ccat . Obtenha-o em https://github.com/jingweno/ccat/ .
Instalação no Linux / Windows / macOS
É um único executável independente. Para instalá-lo, você pode descompactar a versão binária do seu sistema operacional em https://github.com/jingweno/ccat/releases e copiar o binário ccat, por exemplo, para
/usr/local/bin
.Se você deseja evitar binários ou se não há binário para sua plataforma (por exemplo, raspberry pi, etc), você pode compilar alternativamente a partir da fonte, desde que tenha um
go
ambiente de desenvolvimento funcional (apt install golang
em linuxes baseados em debian oubrew install golang
no mac):Instalando no Mac via homebrew
Alias para
cat
Para substituir regular
cat
porccat
adicionar~/.bashrc
:ccat
é implementado no Go , por isso é um binário nativo que roda muito mais rápido que as soluções baseadas em Python, como pigmentos , o módulo por tráspygmentize
; Não vi nenhuma diferença notável de velocidade entrecat
eccat
.fonte
brew install ccat
é suficiente, não ébrew tap
mais necessário.A melhor maneira e a maneira mais fácil de fazer isso se você tiver o vim em sua máquina é usar o
vimcat
que acompanha ovimpager
programa.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Execute o vimcat:
vimcat index.html
fonte
highlight
e 3x mais lento quebat
em um script bash de 30 linhas na minha máquina.source-highlight
Talvez seja possível encontrar interessantes
source-highlight
lançados no GNU : um pacote diferente dehighlight
.Trecho de
apt-cache show source-highlight
:Eu fiz alguns apelidos (Cat e PCat, veja abaixo) e esta é a saída deles
Você pode instalar no Debian com base em
e adicione-o como pseudônimo, por exemplo, no seu
.bash_aliases
com algo como a linha abaixo.Ou você pode fazer um alias semelhante (sem o
-i
no final para ter a possibilidade de inserir )Entre as opções que é possível ler a partir
man source-highlight
dos-s
sublinhados, é possível selecionar ou forçar o realce por linha de comando ou deixar para o programa esta tarefa:fonte
less
comsource-highlight
, alguém no GitHub dá a resposta:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
eexport LESS=" -R "
. Muito útil quandopygmentize
não está disponível e não pode ser instalado.Isso não está correto. O terminal apenas interpreta os códigos de cores que são enviados para o terminal. Dependendo de sua capacidade, ele pode ignorar certos códigos de formatação / coloração.
Na página de manual, não parece que o gato suporta a coloração de sua saída. Mesmo se fosse compatível com cores como grep, o que deveria ser colorido no arquivo de texto? Sintaxe que destaca o conhecimento necessário da linguagem subjacente, que não está no escopo de utilidades simples, como cat.
Você pode tentar editores mais poderosos, como vim, emacs, gedit etc. na plataforma unix, se ver o código destacado é seu objetivo.
fonte
cat
Não é para imprimir arquivos com números de linha, não é para compactar várias linhas em branco, não é para olhar caracteres ASCII que não imprimem, é para concatenar arquivos". - do estilo UNIX ou cat -v Considerado prejudicial .No OSX simplesmente faça
brew install ccat
.https://github.com/jingweno/ccat . Como gato, mas exibe conteúdo com destaque de sintaxe. Construído em Go.
fonte
bastão faz exatamente isso e pode ser alias ao gato
alias cat='bat'
fonte
Pergunta antiga, apenas respondendo pelo registro para fornecer a solução que acabei usando. Talvez isso seja um pouco hacky (provavelmente não é a intenção original do parâmetro), mas:
alias cgrep = 'grep -C 9000'gato qualquer que seja | cgrep 'snozzberries'..
grep -C N
fornecerá N linhas de contexto acima e abaixo do item encontrado. Se for maior que a entrada, toda a entrada será incluída. Nesse caso, apenas garantimos que seja maior do que qualquer saída de terminal típica que desejaremos examinar manualmente, que geralmente é o que você deseja fazer se destacar.EDIT: No entanto, esta solução sugerida abaixo por Beni Cherniavsky-Paskin é superior - ela corresponde (e destaca) à palavra que você está procurando ou ao início da linha (não destacável). O resultado líquido é exatamente o que você deseja.
Essa é a nova melhor solução que eu já vi para esse problema, obrigado Beni.
fonte
egrep 'snozzberries|$'
Nesta pergunta, /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
tool foi recomendado como alternativa asupercat
.Homem de grc e de
grcat
; faz parte do pacote grc ( fontes ):fonte
Eu escrevi o pequeno script para executar a coloração usando
pygmentize
.E então faça um alias para o script.
alias cat=colorize_via_pygmentize
. Também não se esqueça de salvar isso em ~ / .bashrc .fonte
Se você quer apenas um liner para definir a
cat
saída para uma determinada cor, você pode acrescentaralias cat="echo -en 'code' | cat - "
para o seu
~/.$(basename $SHELL)rc
Aqui está uma essência com códigos de cores: https://gist.github.com/chrisopedia/8754917
Eu gosto
'\e[1;93m'
, que é amarelo de alta intensidade. Se parece com isso:fonte
basta usar o vim e esse arquivo vimrc .
oneliner:
nano -v
também pode ser uma alternativa.fonte
Coloque em seu ~ / .bashrc
então
fonte