cat
のように、grep
の出力を色付けする方法はありますか。
grep
の場合、ほとんどのコンソールで、検索されたキーワードを強調する色付きの出力が表示されます。それ以外の場合は、grep --color
を呼び出すことで強制できます。個人的な選択に応じて、プログラムの出力に色を付ける一般的な方法はありますか。
私が理解していることから、プログラム自体は色について責任を負いません。シェルです。
私は、FreeBSD 5.2.1でデフォルトのシェルを使用していますが、これはエポック以来色を見たことがないように見えます。
cat
構文の強調表示は、単に範囲外です。 cat
はそのためのものではありません。一部のファイルの内容全体を何らかの方法で(ファイル全体と同じ色で)色付けする場合は、ターミナルエスケープシーケンスを使用して色を制御できます。
ファイルタイプに基づいて色を選択するサンプルスクリプトを次に示します(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"
上記(これらのエスケープシーケンスをサポートする端末上)は、すべてのテキストファイルを「太字」として印刷し、バイナリファイルを赤として印刷します。 strings
の代わりにcat
を使用して、バイナリファイルを印刷できます。また、ロジックを拡張して、ニーズに合うようにすることができます。
pythonパッケージのpygmentize
python-pygments
をお勧めします。次の便利なエイリアスを定義することができます(ccryptパッケージのccat
を使用する場合を除く)。
alias ccat='pygmentize -g'
また、行番号が必要な場合:
alias ccat='pygmentize -g -O style=colorful,linenos=1'
pygmentize は良い。エイリアスがあります:
alias c='pygmentize -g'
しかし、highlightは別の広く利用可能な代替手段です
alias cats='highlight -O ansi --force'
次を使用してpygments
をインストールする必要がある場合があります。
Sudo pip install pygments
Sudo easy_install Pygments #for Mac user
すべてのディストリビューションで簡単に利用できるhighlight
パッケージ用
Sudo apt-get install highlight
Sudo yum install highlight
ハイライトの良い比較のために、下の両方にショットを添付します
pygmentize
が動作中です。
これはhighlight
です:
2018年4月下旬以降:
Bat -構文強調表示とGit統合を備えたcat(1)クローン。
このプロジェクトは、Rustで記述された色とカスタマイズをサポートする猫のクローンです。複数のテーマを使用した構文強調表示だけでなく、Git統合も提供します。ドキュメントに記載されているとおり:
batは次の目標を達成しようとします:
- 美しく高度な構文強調表示を提供する
- Gitと統合してファイルの変更を表示する
- (POSIX)catのドロップイン代替品になる
- ユーザーフレンドリーなコマンドラインインターフェースを提供
言うまでもなく、pygmentizeよりもはるかに高速であり、大きなファイルに直面したときに詰まらない。
ソースコードと バイナリリリース + インストール手順 は、Githubリポジトリと 代替プログラムとの比較 にあります。
お探しのツールは、おそらく supercat (Linux Journalが公開している クイックイントロダクション です)。
この答えは遅れており、OPの要件を完全には満たしていないことがわかります。参照用に追加するだけです(テキストファイルの出力を色付けする方法を探している他の人に役立つかもしれません)。
vimcat
は単一ファイル(シェルスクリプト)であり、正常に機能します。
http://www.vim.org/scripts/script.php?script_id=4325
最後の更新は2013年12月からです。ヒント:vimcat -c "set ft=<type>"
によってファイルタイプの認識を強制できます。
Catの色付きバージョン- ccat があります。 https://github.com/jingweno/ccat/ から入手してください。
これは単一のスタンドアロン実行可能ファイルなので、インストールするために https://github.com/jingweno/ccat/releases からOSのバイナリバージョンを展開し、ccatたとえば/usr/local/bin
へのバイナリ。
バイナリを回避したい場合、またはプラットフォームにバイナリがない場合(Raspberry Piなど)、動作環境 go
開発環境 (apt install golang
debianベースのLinuxでは_、Macではbrew install golang
):
go get -u github.com/jingweno/ccat
ccat
バイナリが$GOPATH/bin
の下に作成されます。
brew install ccat
cat
のエイリアス通常のcat
をccat
で置き換えるには、~/.bashrc
を追加します。
alias cat="ccat $*"
alias cat0="/bin/cat $*" # for cases when you need plain `cat`
ccat
は Go で実装されているため、 pygments などのPythonベースのソリューションよりもはるかに高速に実行されるネイティブバイナリであり、pygmentize
の背後にあるモジュールです。 cat
とccat
の間に顕著な速度差は見られませんでした。
マシンにvimがある場合の最善の方法と最も簡単な方法は、vimcat
プログラムに付属のvimpager
を使用することです。
git clone git://github.com/rkitover/vimpager cd vimpager Sudo make install
を使用してvimpageをインストールしますVimcatを実行します。
vimcat index.html
source-highlight
面白いsource-highlight
を見つけることができるかもしれません GNUでリリース :highlight
とは異なるパッケージ。
apt-cache show source-highlight
からの抜粋:
Description-en:ソースコードを構文強調されたドキュメントに変換します。
このプログラムは、ソースファイルを指定すると、構文が強調表示されたドキュメントを生成します。
100を超えるファイル形式の構文強調表示をサポートしています...
出力では、HTML、XHTML、LaTeX、Texinfo、ANSIカラーエスケープシーケンス、DocBookの形式がサポートされています。
いくつかのエイリアス(CatとPCat、以下を参照)を実行しました。これはそれらの出力です
Debianベースでインストールできます
Sudo apt-get install source-highlight
エイリアスとして追加します.bash_aliases
に次のような行を追加します。
alias Cat='source-highlight --out-format=esc -o STDOUT -i'
Cat myfile.c # or myfile.xml ...
または、同様のエイリアスを行うことができます(末尾に-i
を付けずに、pipe in)する可能性があります)
alias PCat='source-highlight --out-format=esc -o STDOUT '
tail myfile.sh | PCat # Note the absence of the `-i`
man source-highlight
から読み取ることができるオプションの中には、選択可能な下線-s
またはforce、コマンドラインによる強調表示、またはこの義務をプログラムに任せる:
-s、-src-lang= STRINGソース言語(使用--lang-listで完全なリストを取得します)。 指定しない場合、ソース言語はファイル拡張子から推測されます。
--lang-listは、サポートされているすべての言語と関連する言語定義ファイルをリストします
私が理解していることから、バイナリ自体は色の原因ではありません。シェルです。
それは正しくありません。ターミナルは、ターミナルに出力されるカラーコードを解釈するだけです。その機能に応じて、特定のフォーマット/カラーコードを無視できます。
Manページからは、catは出力の色付けをサポートしていないようです。 grepのような色付けをサポートする場合でも、テキストファイルで何を色付けする必要がありますか?構文の強調表示には、catのような単純なユーティリティの範囲外の基礎となる言語の知識が必要です。
ハイライトされたコードを見ることを目標とする場合、unixプラットフォームでvim、emacs、geditなどのより強力なエディターを試すことができます。
OSXでは、単にbrew install ccat
を実行します。
https://github.com/jingweno/ccat 。 catに似ていますが、構文が強調表示されたコンテンツが表示されます。 Goに組み込まれています。
bat は正確にそれを行い、cat alias cat='bat'
にエイリアスできます。
古い質問で、私が最終的に使用したソリューションを提供するために記録に答えているだけです。おそらくこれは少しハックです(おそらく、パラメーターの本来の意図ではありません)が、
エイリアスcgrep = 'grep -C 9000'
何でも猫| cgrep 'snozzberries'
..grep -C N
は、見つかったアイテムの上下にN行のコンテキストを提供します。入力よりも大きい場合、入力全体が含まれます。この場合、手動で見たい典型的な端末出力よりも大きいことを確認するだけです。これは一般に、強調表示する場合にあなたがしたいことです。
編集:ただし、以下でBeni Cherniavsky-Paskinが提案するこのソリューションは優れています-探しているWordまたは行の先頭(強調表示不可)のいずれかに一致(および強調表示)します。最終結果はまさにあなたが望むものです。
cat whatever | egrep 'snozzberries|$'
それは私がその問題に対して見た新しい最良の解決策です、ベニに感謝します。
この質問では https://superuser.com/questions/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordingrcat
/grc
supercat
の代わりにツールが推奨されました。
grc および grcat
;の男 grc package ( sources )の一部です:
grc-汎用カラーライザーgrcat(1)のフロントエンド
grcat-標準入力から読み取り、色付けして標準出力に書き込む
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
}
そして、スクリプトのエイリアスを作成します。 alias cat=colorize_via_pygmentize
。また、これを〜/ .bashrcに保存することを忘れないでください。
1つのライナーで特定の色にcat
出力を設定する場合は、追加できます
alias cat="echo -en 'code' | cat - "
~/.$(basename $Shell)rc
へ
これがカラーコードの要点です: https://Gist.github.com/chrisopedia/8754917
vimと このvimrcファイル を使用するだけです。
一発ギャグ:
vim -c '1' -c 'set cmdheight=1' -c 'set readonly' -c 'set nomodifiable' -c 'syntax enable' -c 'set guioptions=aiMr' -c 'nmap q :q!<CR>' -c 'nmap <Up> <C-Y>' -c 'nmap <Down> <C-E>' -c 'nmap ^V <C-F><C-G>' "$@"
nano -v
も代替の可能性があります。