Pode 'cat' mostrar arquivos usando marcação de código em cores?

41

Às vezes eu rapidamente quero ver o conteúdo de um arquivo na linha de comando. Para isso, é claro que eu uso cat , mas geralmente são arquivos fonte em Python , Java ou simples HTML . Para esses arquivos, seria útil se cat pudesse fornecer alguma marcação de cor aos arquivos, para que ele seja mais fácil.

Pode o cat fazer uma coisa dessas?

    
por kramer65 15.01.2014 / 17:44

7 respostas

44

cat não é capaz de fazer isso. No entanto, talvez os fragmentos possam ajudá-lo. É um script python e pode ser instalado via apt-get

sudo apt-get install python-pygments

ou facilmente baixado e instalado via easy_install.

Ele suporta muitos códigos-fonte idiomas e também linguagens de marcação

É usado por

pygmentize -g <filename>
    
por txwikinger 15.01.2014 / 18:05
18

Não de cat em si, mas você pode usar algo como fonte highlite ou supercat ou destaque

Source-highlight

This program, given a source file, produces a document with syntax highlighting. It also provides a C++ highlight library (new) (since version 3.0).

Source-highlight reads source language specifications dynamically, thus it can be easily extended (without recompiling the sources) for handling new languages. It also reads output format specifications dynamically, and thus it can be easily extended (without recompiling the sources) for handling new output formats. The syntax for these specifications is quite easy (take a look at the manual).

The manual about installation:

See the file INSTALL for detailed building and installation instructions; anyway if you're used to compiling Linux software that comes with sources you may simply follow the usual procedure, i.e., untar the file you downloaded in a directory and then:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

This is Supercat's homepage. Supercat is a program that colorizes text based on matching regular expressions/strings/characters. Supercat supports html output as well as standard ASCII text. Unlike some text-colorizing programs that exist, Supercat does not require you to have to be a programmer to make colorization rules.

If you have written a supercat config file for a standard file type please do not hesitate to contact me at "bug-spc (at) nosredna (dot) net" for possible inclusion in the supercat distribution.

Ou com uma função ( source ) :

#!/bin/bash#!/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

Requer: Pygments ( sudo apt-get install python-pygments python3-pygments )   Adicioná-lo como uma função para bash .functions e dar-lhe um nome como color ()

    
por Rinzwind 15.01.2014 / 18:05
13

A partir desta resposta aqui , você pode usar os pacotes python-pygments para destacar coisas. Primeiro faça:

sudo apt-get install python-pygments python3-pygments

então:

pygmentize -g FILENAME

então vá:

Vocêtambémpodeconfigurá-locomoumalias,comonarespostaqueeuvinculei-basicamente,executeisto:

echo"alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Feche o terminal, abra-o novamente e o comando catc deverá funcionar agora - se não tiver, certifique-se de que essas linhas estejam no arquivo .bashrc e não estejam comentadas:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Outra coisa seria usar apenas nano :

nano testfile

    
por Wilf 15.01.2014 / 18:08
5

man view ou man vim

Uso básico: view <filename>

Saia: :q<Return> (adicione um <Esc> primeiro se usar vim ) ou ZZ (maiúsculas z duas vezes).

O editor de texto do programador vim tem tudo o que você precisa e provavelmente já faz parte do seu sistema.

vim tem um modo somente leitura ativado com view ou vim -R . Se tudo o que você quer fazer é ver o arquivo marcado, deve ser o suficiente.

Simples de usar, navegável, disponível em todos os lugares. Não há necessidade de mexer com a instalação de novos softwares ou escrever scripts bash.

    
por a different ben 16.01.2014 / 06:55
3

cat não pode produzir destaque da sintaxe apenas. Ainda assim, você pode fazer isso da seguinte maneira, usando python-pygments . Primeiro, instale-o do terminal como

sudo apt-get install python-pygments

Agora copie a função abaixo de ~/.bashrc . Ele vai te dar o que você quer além disso, ele irá preservar as propriedades de cat caso contrário, não faz sentido usar cat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Origem ~/.bashrc as,

. ~/.bashrc

Ele dará saída colorida,

catc <filename>

Ele também será concatenado com cores

catc <file1> <file2> ... <filen>
    
por souravc 15.01.2014 / 19:12
2

Pode-se verificar ccat .

Adiciona destaque de sintaxe aos arquivos de saída.

    
por Alan Dong 27.08.2015 / 02:08
0

Outras respostas cobrem por que cat não é capaz de fazer isso. Embora você possa fazer isso com menos uso lesspipe.sh .

    
por Fuad Saud 21.01.2014 / 23:23
-1

cat não expande o código de cor, mas o echo, portanto, aqui está um exemplo que adiciona códigos de cores a uma linha em um arquivo e, em seguida, o redireciona para o comando echo:

echo -e "$(sed -e 's/OK/\033[0;32mOK\033[0m/g' test_results.txt)"

    
por serup 19.08.2016 / 12:40

Tags