Czy `cat` może wyświetlać pliki przy użyciu znaczników kodu w kolorach?

45

Czasami chcę szybko wyświetlić zawartość pliku z wiersza polecenia. Do tego oczywiście używam cat, ale często są to pliki źródłowe w Pythonie , Javie lub prostym HTML . W przypadku tych plików przydałoby się catnadać plikom znaczniki kolorów, aby były łatwiejsze do odczytania.

Czy można catcoś takiego zrobić?

kramer65
źródło
To może już mieć odpowiedź tutaj
Wilf
ha @wilf Znalazłem ten sam kod z google: D Warto również zwrócić uwagę na ten temat na SO: superuser.com/questions/84426/…
Rinzwind
@Rinzwind - Przeszukałem stackoverflow, bo miał się pojawić ;-)
Wilf
To pytanie przypomina mi cat -vuważane za szkodliwe .
Snowball

Odpowiedzi:

48

catnie jest w stanie tego zrobić. Jednak być może pigwy mogą ci w tym pomóc. Jest to skrypt Pythona i można go zainstalować za pomocą apt-get

sudo apt-get install python-pygments

lub łatwo pobrać i zainstalować za pomocą easy_install.

Obsługuje wiele języków kodu źródłowego , a także języki znaczników

Jest używany przez

pygmentize -g <filename>
txwikinger
źródło
5
Otwórz plik jako pygmentize -g <filename>, -gprzełącznik jest ważny do obsługi plików bez leksyk. na przykład, jeśli spróbujesz /etc/fstabotworzyć bez -gniego, to się nie powiedzie.
souravc
Dzięki @souravc Dodał to do odpowiedzi. Co ciekawe, ten argument nie pojawia się na stronie
podręcznika
2
Cóż, dużo z tym grałem. możesz go znaleźć, spróbuj pygmentize --help Jeśli -gzostanie przekazany, spróbuj zgadnąć leksykon z treści pliku lub prześlij go jako zwykły tekst, jeśli to się nie powiedzie (może to działać dla standardowego wejścia).
souravc
4
To jest najlepszy, a następnie pseudonim cat, aby pygmentować -g i jesteś złoty. U ryb jest to proste jak funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn
w moim bashrcdodałem: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis
19

Nie od catsiebie, ale możesz użyć czegoś takiego jak źródło highlite lub supercat lub wyróżnienie

Podświetlenie źródła

Ten program, biorąc pod uwagę plik źródłowy, tworzy dokument z podświetlaniem składni. Zapewnia również bibliotekę podświetlania C ++ (nową) (od wersji 3.0).

Podświetlenie źródła odczytuje dynamicznie specyfikacje języka źródłowego, dzięki czemu można go łatwo rozszerzyć (bez ponownej kompilacji źródeł) do obsługi nowych języków. Dynamicznie odczytuje specyfikacje formatu wyjściowego, dzięki czemu można go łatwo rozszerzyć (bez ponownej kompilacji źródeł) w celu obsługi nowych formatów wyjściowych. Składnia tych specyfikacji jest dość łatwa (spójrz do instrukcji).

Instrukcja instalacji:

Zobacz plik INSTALL, aby uzyskać szczegółowe instrukcje budowy i instalacji; w każdym razie, jeśli jesteś przyzwyczajony do kompilowania oprogramowania Linux, które pochodzi ze źródeł, możesz po prostu postępować zgodnie ze zwykłą procedurą, tj. rozpakować plik pobrany w katalogu, a następnie:

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

Supercat

To jest strona główna Supercat. Supercat to program, który koloryzuje tekst na podstawie pasujących wyrażeń regularnych / ciągów / znaków. Supercat obsługuje wyjście HTML oraz standardowy tekst ASCII. W przeciwieństwie do niektórych istniejących programów do kolorowania tekstu, Supercat nie wymaga od programisty tworzenia reguł kolorowania.

Jeśli napisałeś plik konfiguracyjny supercat dla standardowego typu pliku, nie wahaj się ze mną skontaktować pod adresem „bug-spc (at) nosredna (kropka) net” w celu ewentualnego włączenia do dystrybucji supercat.

Lub z funkcją ( źródło ):

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

Wymaga: Pygments ( sudo apt-get install python-pygments python3-pygments) Dodaj go jako funkcję do bash .functions i nadaj mu nazwę jak color ()

Rinzwind
źródło
14

Począwszy od tej odpowiedzi tutaj , możesz użyć python-pygmentspakietów do wyróżnienia rzeczy. Najpierw wykonaj:

sudo apt-get install python-pygments python3-pygments

następnie:

pygmentize -g FILENAME

to spróbuj:

wprowadź opis zdjęcia tutaj

Możesz także ustawić go jako alias, jak w odpowiedzi, którą podałem - w zasadzie uruchom to:

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

Zamknij terminal, otwórz go ponownie, a catcpolecenie powinno teraz działać - jeśli nie, upewnij się, że te wiersze znajdują się w .bashrcpliku i nie są komentowane:

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

Inną rzeczą byłoby po prostu użyć nano:

nano testfile

wprowadź opis zdjęcia tutaj

Wilf
źródło
6

man view lub man vim

Podstawowe użycie: view <filename>

Wyjdź: :q<Return>(dodaj <Esc>pierwszy, jeśli używasz vim) lub ZZ(wielkie litery z dwa razy).

Edytor tekstowy programisty vimma już wszystko, czego potrzebujesz i prawdopodobnie jest już częścią twojego systemu.

vimma tryb tylko do odczytu aktywowany za pomocą viewlub vim -R. Jeśli wszystko, co chcesz zrobić, to wyświetlić zaznaczony plik, powinno wystarczyć.

Prosty w obsłudze, nawigowalny, dostępny wszędzie. Nie musisz się martwić instalowaniem nowego oprogramowania lub pisaniem skryptów bash.

inny ben
źródło
Wiem. Chodzi o to, że otwieranie i zamykanie VIMa nie jest szybkie. Chcę natychmiast wyświetlić plik, a następnie kontynuować w wierszu polecenia. Właśnie dlatego przekonałem się, że tak dobry jest Pigmentize. Natychmiastowy wynik, bez wychodzenia z programu czy cokolwiek .. :)
kramer65
1
@ kramer65 OK, oczywiście, że to twoje preferencje, ale nie musisz „otwierać” vimlub viewpo prostu dostarczasz mu plik: view file.pywięc nie ma różnicy cat. Pewnie, że musisz go zamknąć, ale naprawdę :q<Return>lub ZZnie są to trudne zadania.
inny ben
Głównym problemem jest to, że vi / vim / view nie piszą na standardowe wyjście, więc nie mogę łatwo napisać komendy, patrząc na podświetloną powyżej składnię.
Jack_Hu,
4

Można sprawdzić kota .

Dodaje podświetlanie składni do plików wyjściowych.

Alan Dong
źródło
3

catnie może produkować wyłącznie podświetlania składni. Nadal możesz to zrobić za pomocą python-pygments. Najpierw zainstaluj go z terminala, ponieważ

sudo apt-get install python-pygments

Teraz skopiuj funkcję poniżej ~/.bashrc. Daje ci to, czego chcesz, a ponadto zachowuje właściwości, wcat przeciwnym razie nie ma sensu używaćcat

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

Źródło ~/.bashrcjako

. ~/.bashrc

Daje kolorowy efekt,

catc <filename>

To także połączy się z kolorem,

catc <file1> <file2> ... <filen>
souravc
źródło
Czy istnieje sposób na włączenie przewijania za pomocą strzałek w górę i w dół podczas korzystania pygmentize? Otwieram go za pomocą polecenia formularza xterm -e "pygmentize -g <filename>" i stwierdzam, że jedynym sposobem przewijania jest użycie paska przewijania. Próbowałem przesłać dane wyjściowe do, lessale to spowodowało wyrzucenie śmieci.
Leo Simon
tak, możesz używać pygmentizemniej. Utwórz funkcję bash lesscw następujący sposób:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc
2

Bat - klon kota ze skrzydłami

Możesz także sprawdzić, batktóry ma następujące funkcje:

  • Podświetlanie składni
  • Integracja z Git
  • Opcjonalnie wyświetlane znaki niedrukowalne
  • Automatyczne stronicowanie za pomocą less
  • Łączenie plików jako zastępczy drop-in catpo przekierowaniu

 Zapowiedź

Zrzut ekranu nietoperza pokazujący kolorowy plik

Zdjęcie pochodzi z oficjalnego serwisu GitHub

Instalacja

Możesz pobrać najnowszy pakiet Debiana tutaj i zainstalować go z:

sudo dpkg -i bat_0.10.0_amd64.deb

Dostosowanie numeru wersji i architektury.

Andrea Lazzarotto
źródło
0

Inne odpowiedzi dotyczą tego, dlaczego catnie jest w stanie tego zrobić. Chociaż możesz to zrobić mniej, używając lesspipe.sh .

Fuad Saud
źródło
0

Zamiast instalować pakiet innej firmy, możesz po prostu użyć geditdo szybkiego przeglądania pliku z podświetlaniem składni. Na przykład skopiuj powyższy pasek adresu i wklej do terminala:

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

Zobaczysz to pytanie w formacie HTML ze sformatowanymi kolorami:

gedit https.png

  • Możesz użyć znanych geditklawiszy nawigacyjnych
  • Możesz włączyć / wyłączyć zawijanie linii
  • Możesz używać wtyczek, takich jak ja, zainstalowanych dla rynny z 80 znakami i przeglądu dokumentów (z prawej strony) z suwakiem miniatur
  • Jedynym zastrzeżeniem jest to, że musisz pamiętać Alt+, F4aby szybko zamknąć okno w celu przeprowadzenia symulacji, catktóra nie wymaga zamknięcia klawiszy.
WinEunuuchs2Unix
źródło