Podświetlanie składni / koloryzacja kota
Czy istnieje metoda kolorowania wyjścia cat
, tak jak robi to grep
.
Dla grep
, w większości konsol wyświetla kolorowe wyjście podkreślające wyszukiwane słowa kluczowe. W przeciwnym razie możesz wymusić wywołanie grep --color
Czy istnieje ogólny sposób na pokolorowanie wyjścia dowolnego programu zgodnie z osobistym wyborem.
Z tego co rozumiem, sam program nie jest odpowiedzialny za Kolory. To skorupa.
Używam domyślnej powłoki we FreeBSD 5.2.1 która wygląda jakby nigdy nie widział kolorów od epoki.
15 answers
cat
podświetlanie składni jest po prostu poza zakresem. Nie jest do tego przeznaczona.
Jeśli chcesz, aby cała zawartość jakiegoś pliku była w jakiś sposób zabarwiona (z tym samym kolorem dla całego pliku), możesz użyć sekwencji specjalnych terminala do kontrolowania koloru.
Oto przykładowy skrypt, który wybierze kolor na podstawie typu pliku (możesz użyć czegoś takiego zamiast bezpośrednio wywoływać cat
):
#!/bin/bash
fileType="$(file "$1" | grep -o 'text')"
if [ "$fileType" == 'text' ]; then
echo -en "\033[1m"
else
echo -en "\033[31m"
fi
cat $1
echo -en "\033[0m"
Powyżej (na terminalu obsługującym te sekwencje specjalne) wydrukuje dowolny plik tekstowy jako "pogrubienie", A dowolny plik binarny jako czerwony. Możesz użyć strings
zamiast cat
do drukowania plików binarnych i możesz poprawić logikę, aby dopasować ją do swoich potrzeb.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 22:03:41
Polecam pygmentize
z pakietu Pythona python-pygments
. Możesz chcieć zdefiniować następujący przydatny alias (chyba że użyjesz ccat
z pakietu ccrypt).
alias ccat='pygmentize -g'
I jeśli chcesz numery linii:
alias ccat='pygmentize -g -O style=colorful,linenos=1'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-15 06:30:35
Opcje:
Pygmentize jest dobry. Mam pseudonim:
alias c='pygmentize -g'
Ale podświetlenie jest inną powszechnie dostępną alternatywą
alias cats='highlight -O ansi --force'
Instalacja:
Być może będziesz musiał zainstalować pygments
używając:
sudo pip install pygments
sudo easy_install Pygments #for Mac user
I dla highlight
pakietu, który jest łatwo dostępny na wszystkich dystrybucjach
sudo apt-get install highlight
sudo yum install highlight
- Bitbucket repo: https://bitbucket.org/birkenfeld/pygments-main
- GitHub mirror: https://github.com/sglyon/pygments
W Akcji:
Dołączam zdjęcia dla obu poniżej dla dobrego porównania w highlightings
Oto pygmentize
w akcji:
A to jest highlight
:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 11:40:54
Narzędzie, którego szukasz, to prawdopodobnie supercat (Oto szybkie wprowadzenie opublikowane przez Linux Journal).
Zdaję sobie sprawę, że ta odpowiedź jest spóźniona i że nie spełnia w pełni wymagań OP. Więc dodaję go tylko w celach informacyjnych (może być przydatny dla innych osób szukających sposobu kolorowania wyjścia pliku tekstowego).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-06 05:03:32
vimcat
jest pojedynczym plikiem (skrypt powłoki) i działa dobrze:
Http://www.vim.org/scripts/script.php?script_id=4325
Ostatnia aktualizacja pochodzi z grudnia 2013. Podpowiedź: możesz wymusić rozpoznawanie typu pliku przez vimcat -c "set ft=<type>"
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 14:30:08
Istnieje kolorowa wersja cat - ccat . Get it from https://github.com/jingweno/ccat/.
Instalacja na Linuksie/Windows / macOS
Jest to pojedynczy samodzielny program wykonywalny, więc aby go zainstalować, możesz rozpakować wersję binarną dla swojego systemu operacyjnego z https://github.com/jingweno/ccat/releases i skopiować ccat na przykład do /usr/local/bin
.
Jeśli chcesz uniknąć plików binarnych, lub jeśli nie ma binarnych dla Twojej platformy (np. raspberry pi, itp.), Następnie można na przemian skompilować ze źródła, biorąc pod uwagę, że masz działający go
środowisko programistyczne (apt install golang
na Linuksach opartych na Debianie lub brew install golang
na mac):
go get -u github.com/jingweno/ccat
ccat
plik binarny zostanie utworzony pod twoim$GOPATH/bin
.
Instalacja na Macu przez homebrew
brew install ccat
Alias do cat
Aby zastąpić zwykłe cat
przez ccat
dodaj ~/.bashrc
:
alias cat="ccat $*"
alias cat0="/bin/cat $*" # for cases when you need plain `cat`
ccat
jest zaimplementowany w Go , więc jest to natywny binarny, który działa znacznie szybciej niż rozwiązania oparte na Pythonie, takie jak pygments , moduł stojący za pygmentize
; nie zauważyłem zauważalnej różnicy prędkości pomiędzy cat
i ccat
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-01 21:27:39
Najlepszym i najłatwiejszym sposobem na zrobienie tego, jeśli masz Vima w swojej maszynie, jest użycie vimcat
, który jest dostarczany z vimpager
programem.
- Zainstaluj vimpage z
git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
-
Uruchom vimcat:
vimcat index.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 17:33:27
source-highlight
Może uda się znaleźć interesujące source-highlight
wydany pod GNU : pakiet inny niż highlight
.
Fragment z apt-cache show source-highlight
:
Description-en: konwersja kodu źródłowego na podświetlony dokument składni.
Ten program, biorąc pod uwagę plik źródłowy, tworzy dokument ze składnią podświetlenie.
obsługuje podświetlanie składni dla ponad 100 formatów plików ...
Dla wyjścia, następujące formaty są obsługiwane: HTML, XHTML, LaTeX, Texinfo, sekwencje ucieczki kolorów ANSI i DocBook
Zrobiłem jakiś alias (Cat i PCat, patrz poniżej) i to jest ich wyjście
Możesz zainstalować na Debianie za pomocą
sudo apt-get install source-highlight
I dodaj go jako alias np. w swoim {[7] } z czymś takim jak linia poniżej.
alias Cat='source-highlight --out-format=esc -o STDOUT -i'
Cat myfile.c # or myfile.xml ...
Lub możesz zrobić podobny alias (Bez -i
na końcu, aby mieć możliwość rury w )
alias PCat='source-highlight --out-format=esc -o STDOUT '
tail myfile.sh | PCat # Note the absence of the `-i`
Wśród opcji, które można odczytać z man source-highlight
-s
podkreślenia, które można wybrać, lub wymusić , podkreślenie za pomocą linii poleceń lub pozostawić programowi to zadanie:
-s, --src-lang =STRING source language(użyj --Lang-list, aby uzyskać pełną listę). Jeśli nie podano, język źródłowy zostanie odgadnięty z rozszerzenia pliku .
--Lang-list lista wszystkich obsługiwanych języków i powiązanych plików definicji języka
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-08 14:51:04
Od końca kwietnia 2018 r.:
Bat - Klon cat(1) z podświetleniem składni i integracją z Git.
Projekt jest klonem kota z obsługą kolorów i dostosowań napisanych w Rust. Oferuje nie tylko podświetlanie składni z wieloma motywami, ale także integrację z Git. Zgodnie z opisem w dokumentacji:
bat stara się osiągnąć następujące cele :
- Zapewnij piękną, zaawansowaną składnię podkreślenie
- Zintegruj z Gitem, aby pokazać modyfikacje plików
W tym celu należy wykonać następujące czynności:]}- oferują przyjazny dla użytkownika interfejs wiersza poleceń
Jest, nie trzeba dodawać, znacznie szybszy niż pygmentize i nie dławi się w konfrontacji z dużymi plikami.
Kod źródłowy i wydania binarne + instrukcje instalacji można znaleźć w repozytorium Github, a także porównanie do alternatywy programy .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 08:42:34
To nie jest poprawne. Terminal po prostu interpretuje kody kolorów, które są wysyłane do terminala. W zależności od jego możliwości może ignorować pewne kody formatowania/kolorowania.Z tego co rozumiem, sam binarny nie jest odpowiedzialny za Kolory. To skorupa.
Ze strony man nie wygląda na to, że cat obsługuje kolorowanie swoich danych wyjściowych. Nawet jeśli miałby obsługiwać kolorowanie takie jak grep, co powinien kolorować w pliku tekstowym? Podświetlanie składni wymagana znajomość języka bazowego, który nie wchodzi w zakres prostych narzędzi, takich jak cat.
Możesz wypróbować bardziej wydajne edytory, takie jak vim, emacs, gedit itp. na platformie unix, jeśli zobaczenie podświetlonego kodu jest twoim celem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 21:31:36
Na OSX wystarczy zrobić brew install ccat
.
Https://github.com/jingweno/ccat. podobnie jak cat, ale wyświetla zawartość z podświetleniem składni. Wbudowany Go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-15 07:35:53
Stare pytanie, tylko odpowiadam na nagranie, aby dostarczyć rozwiązanie, z którego skorzystałem. Być może jest to trochę chwiejne (prawdopodobnie nie jest to pierwotna intencja parametru), ale:
alias cgrep= 'grep-C 9000'
Cat whatever / cgrep 'snozzberries'
..grep -C N
dostarczy N wierszy kontekstu powyżej i poniżej znalezionego elementu. Jeśli jest większy niż wejście, całe wejście jest włączone. W tym przypadku po prostu upewniamy się, że jest większy niż jakiekolwiek typowe wyjście terminala będziemy chcieli przyjrzeć się ręcznie, co zazwyczaj jest tym, co chcesz zrobić, jeśli podświetlanie.
EDIT: Jednak To rozwiązanie zaproponowane poniżej przez Beni Czerniawskiego-Paskina jest lepsze - pasuje (i podkreśla) albo słowo, którego szukasz, albo początek linii (nie można wyróżnić). Wynik netto jest dokładnie tym, czego chcesz.
cat whatever | egrep 'snozzberries|$'
To nowe najlepsze rozwiązanie, jakie widziałem na ten problem, dzięki Beni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 21:06:51
W tym pytaniu https://superuser.com/questions/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin grcat
/grc
Narzędzie zostało zalecane jako alternatywa dla supercat
.
Człowiek z grc i z grcat
; jest częścią pakietu grc (źródła):
Grc-frontend dla generic colouriser grcat (1)
Grcat-odczyt ze standardowego wejścia, kolorowanie i zapis do standardowego wyjście
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-21 20:06:15
Napisałem mały skrypt do wykonywania kolorowania za pomocą pygmentize
.
colorize_via_pygmentize() {
if [ ! -x "$(which pygmentize)" ]; then
echo "package \'Pygments\' is not installed!"
return -1
fi
if [ $# -eq 0 ]; then
pygmentize -g $@
fi
for FNAME in $@
do
filename=$(basename "$FNAME")
lexer=`pygmentize -N \"$filename\"`
if [ "Z$lexer" != "Ztext" ]; then
pygmentize -l $lexer "$FNAME"
else
pygmentize -g "$FNAME"
fi
done
}
A następnie utworzyć alias do skryptu. alias cat=colorize_via_pygmentize
. Nie zapomnij też zapisać tego w ~/.bashrc .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-15 05:20:24
Bat dokładnie to robi i może być aliasowany do cat alias cat='bat'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 02:25:18