`Cat` può mostrare i file usando il markup del codice a colori?


45

A volte desidero visualizzare rapidamente il contenuto di un file dalla riga di comando. Per questo ovviamente lo uso cat, ma spesso si tratta di file sorgente in Python , Java o HTML semplice . Per questi file sarebbe utile se catpotesse dare un po 'di markup di colore ai file, in modo che sia più facile da leggere.

Puoi catfare una cosa del genere?


Questa potrebbe già avere una risposta qui
Wilf,

ha @wilf Ho trovato lo stesso codice con google: D Vale anche la pena notare questo argomento su SO: superuser.com/questions/84426/…
Rinzwind

@Rinzwind - Ho cercato StackOverflow, poiché era destinato a risalire ;-)
Wilf,

Questa domanda mi ricorda di essere cat -vconsiderata dannosa .
Snowball,

Risposte:


48

catnon è in grado di farlo. Tuttavia, forse i pigmenti potrebbero essere in grado di aiutarti. È uno script Python e può essere installato tramite apt-get

sudo apt-get install python-pygments

o facilmente scaricato e installato tramite easy_install.

Supporta molti linguaggi del codice sorgente e anche i linguaggi di markup

È usato da

pygmentize -g <filename>

5
Apri file come pygmentize -g <filename>, l' -ginterruttore è importante per gestire il file senza lexer. ad esempio, se si tenta /etc/fstabdi aprire senza di -gessa, fallirà.
souravc,

Grazie @souravc L'ha aggiunto alla risposta. È interessante notare che questo argomento non sembra essere menzionato nella pagina man o nella pagina di aiuto
txwikinger,

2
Beh, ci ho giocato molto. puoi trovarlo, prova pygmentize --help se -gviene passato , prova a indovinare il lexer dal contenuto del file o passa attraverso il testo normale se questo non riesce (questo può funzionare per stdin).
souravc,

4
Questo è il gatto migliore, quindi alias per pygmentize -g e tu sei d'oro. Nel pesce è semplice come funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn,

nel mio bashrcho aggiunto: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis il

19

Non da catsolo, ma puoi usare qualcosa come sorgente highlite o supercat o highlight

Source-clou

Questo programma, dato un file sorgente, produce un documento con l'evidenziazione della sintassi. Fornisce inoltre una libreria di evidenziazione C ++ (nuova) (dalla versione 3.0).

Source-highlight legge le specifiche della lingua di origine in modo dinamico, quindi può essere facilmente esteso (senza ricompilare le fonti) per la gestione di nuove lingue. Legge anche le specifiche del formato di output in modo dinamico e quindi può essere facilmente esteso (senza ricompilare le fonti) per la gestione di nuovi formati di output. La sintassi di queste specifiche è abbastanza semplice (dai un'occhiata al manuale).

Il manuale sull'installazione:

Vedere il file INSTALL per istruzioni dettagliate sulla costruzione e l'installazione; comunque se sei abituato a compilare un software Linux fornito con i sorgenti puoi semplicemente seguire la solita procedura, cioè decomprimere il file scaricato in una directory e quindi:

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

Supercat

Questa è la homepage di Supercat. Supercat è un programma che colora il testo in base all'espressione regolare di stringhe / stringhe / caratteri. Supercat supporta l'output html e il testo ASCII standard. A differenza di alcuni programmi di colorazione del testo esistenti, Supercat non richiede di essere un programmatore per stabilire le regole di colorizzazione.

Se hai scritto un file di configurazione supercat per un tipo di file standard, non esitare a contattarmi a "bug-spc (at) nosredna (dot) net" per la possibile inclusione nella distribuzione di supercat.

O con una funzione ( sorgente ):

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

Richiede: Pygments ( sudo apt-get install python-pygments python3-pygments) Aggiungilo come una funzione per colpire .funzioni e dargli un nome come color ()


14

A partire da questa risposta qui , puoi usare i python-pygmentspacchetti per evidenziare le cose. Per prima cosa:

sudo apt-get install python-pygments python3-pygments

poi:

pygmentize -g FILENAME

allora prova:

inserisci qui la descrizione dell'immagine

Puoi anche impostarlo come alias, come nella risposta che ho collegato - in pratica, esegui questo:

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

Chiudi il terminale, aprilo di nuovo e il catccomando ora dovrebbe funzionare; in caso contrario, assicurati che queste righe siano nel .bashrcfile e siano senza commento:

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

Un'altra cosa sarebbe semplicemente usare nano:

nano testfile

inserisci qui la descrizione dell'immagine


6

man view o man vim

Utilizzo di base: view <filename>

Esci: :q<Return>(aggiungere un <Esc>primo se si utilizza vim) o ZZ(maiuscolo z due volte).

Editor di testo del programmatore vimha tutto il necessario già, ed è probabile che già parte del vostro sistema.

vimha una modalità di sola lettura attivata con viewo vim -R. Se tutto ciò che vuoi fare è visualizzare il file sottoposto a markup, dovrebbe essere sufficiente.

Semplice da usare, navigabile, disponibile ovunque. Non c'è bisogno di scherzare con l'installazione di nuovo software o la scrittura di script bash.


Lo so. Il fatto è che aprire e chiudere VIM non è rapido. Voglio visualizzare immediatamente un file e quindi continuare sulla riga di comando. Ecco perché ho trovato pygmentize così buono. Risultato immediato, nessuna chiusura di un programma o altro .. :)
kramer65,

1
@ kramer65 OK, ovviamente, è la tua preferenza, ma non è necessario "aprire" vimo view, basta fornire il file :, view file.pyquindi non c'è differenza cat. Sicuro che devi chiuderlo, ma davvero, :q<Return>o ZZnon sono compiti difficili.
un diverso ben

Il problema principale è che vi / vim / view non scrivono su stdout, quindi non posso scrivere facilmente un comando mentre guardo l'output evidenziato dalla sintassi sopra.
Jack_Hu,

4

Si può dare un'occhiata a ccat .

Aggiunge l'evidenziazione della sintassi ai file di output.


3

catnon è possibile produrre solo l'evidenziazione della sintassi. Puoi comunque farlo come segue, usando python-pygments. Prima installalo dal terminale come,

sudo apt-get install python-pygments

Ora copia la funzione qui sotto ~/.bashrc. Ti darà ciò che desideri, inoltre manterrà le proprietà dicat altrimenti non ha senso utilizzarecat

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

Fonte ~/.bashrccome,

. ~/.bashrc

Darà un output colorato,

catc <filename>

Si concatenerà anche con il colore,

catc <file1> <file2> ... <filen>

C'è un modo per abilitare lo scorrimento con le frecce su e giù quando lo utilizzo pygmentize? Lo apro usando un comando del modulo xterm -e "pygmentize -g <filename>" e sto scoprendo che l'unico modo per scorrere è usare la barra di scorrimento. Ho provato a convogliare l'output a lessma ciò ha provocato l'output di immondizia.
Leo Simon,

si puoi usare pygmentizecon meno. Creare una funzione bash lessccome segue:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc,

2

Bat - Un clone di gatto con le ali

Potresti anche voler controllare batche ha le seguenti caratteristiche:

  • Evidenziazione della sintassi
  • Integrazione Git
  • Facoltativamente mostrando caratteri non stampabili
  • Cercapersone automatico con less
  • Concatenazione di file come sostituzione drop-in per il catreindirizzamento

 Anteprima

Schermata del pipistrello che mostra un file colorato

Foto tratta dal GitHub ufficiale

Installazione

Puoi ottenere l'ultimo pacchetto Debian qui e installarlo con:

sudo dpkg -i bat_0.10.0_amd64.deb

Adattamento del numero di versione e dell'architettura.


0

Altre risposte coprono perché catnon è in grado di farlo. Anche se puoi farlo con meno utilizzando lesspipe.sh .


0

Invece di installare un pacchetto di terze parti, puoi semplicemente utilizzare geditper visualizzare rapidamente un file con l'evidenziazione della sintassi. Ad esempio, copia la barra degli indirizzi in alto e incollala nel tuo terminale:

gedit https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

Vedrai questa domanda in HTML con colori formattati:

gedit https.png

  • È possibile utilizzare gediti tasti di navigazione familiari
  • È possibile attivare / disattivare il ritorno a capo
  • Puoi usare plug-in come ho installato per una grondaia di 80 caratteri e una panoramica dei documenti (all'estrema destra) con il cursore delle miniature
  • L'unica avvertenza è che devi ricordare Alt+ F4per chiudere rapidamente la finestra per simulare catche non richiede la pressione dei tasti per chiudere.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.