catに色を出力させるオプションはありますか?


回答:


18

GNUパッケージsource-highlightがこのトリックを実行しているようです(catは使用していませんが、John Tが指摘しているように、これはcatでは特に不可能です)。Ubuntuのapt-getを介して利用でき、Boost regexライブラリが必要です。パッケージマネージャーを使用して、両方が利用可能かどうかを確認してください。そうでない場合は、Webから入手できます。以前にリンクされたGNUページにはBoostへのリンクがあります。

インストール後、パスにccatという新しいスクリプトを作成しました。スクリプトは次のようになります。

#!/bin/bash
src-hilite-lesspipe.sh $1

派手なことは何もありません。source -highlightに含まれる少ないスクリプトを単純化するだけです。この方法で呼び出されると、猫のように機能します。

ただし、付属の少ないスクリプトは、使用するのに適したスクリプトです。以下を.bashrcに追加しました:

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

このスクリプトは、source-highlightのオンラインマニュアルにも含まれています。

catを完全に無視したい場合は、src-hilite-lesspipe.sh $ 1を呼び出すためにcatをエイリアスすることもできますが、それは望ましくないかもしれません。


4
個人的には、$1:)で終わる1行のbashスクリプトのエイリアスを好みます。
mgalgs

はい、mitch_feaster、あなたはスポットにいます。:]
rgm

2
Macでもで動作しbrew install source-highlightます。yamlを色付けできません:(
サイラム

9

のような構文で強調表示されたコードを出力するには、http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/の指示に従ってコマンドcatを作成しました。ccat

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

のような構文で強調表示されたコードを出力lessするには、vimを代わりに使用します。

alias less='/usr/share/vim/vim72/macros/less.sh'

pygmentizeのインストール方法:easy_install --install-dir $ SOMEDIR Pygments
psihodelia

私はこのタイプのポータブルソリューションが好きです。私は自分のbashの関数として、このスクリプトを追加した.functionsとしてcolorize(){...}
guneysus

3

これを解決するために、highlightを使用しました。構文の強調表示を使用してファイルを印刷しようとする関数を作成しましたが、失敗した場合は単にcatを使用してファイルを印刷します。シンタックスハイライトテーマを好きなものに変更できます。

function hl { # Overrides the cat command to use syntax highlighting
    # Highlight with 'moria' theme to terminal, and suppress errors
    highlight $1 -s moria -O xterm256 2> /dev/null

    if (($? != 0)); then # If the command had errors
        cat $1 # Just cat the file out instead
    fi
}

Macを使用していてHomebrewを使用している場合(強くお勧めします!)、を実行してハイライトをインストールできますbrew install highlight。それ以外の場合は、他のほとんどのパッケージマネージャーで利用可能であり、ここからダウンロードできます

また、構文を強調表示したファイルをhtmlとして印刷し、ブラウザーで開いて印刷する機能を作成しました(openOS Xのコマンドに依存します)。

function hlprint {
    # Print with line numbers and 'moria' theme
    highlight $1 -l -o print.html -s moria
    open print.html # Open in browser
    sleep 5 # Give the browser time to open
    rm print.html highlight.css # Remove output files
}

楽しい!


1

いいえ、catには構文強調機能はありません。構文の強調表示を使用してソースコードを表示する場合は、vimまたは選択したエディター(構文の強調表示がある)にポップします。この方法では、Ctrl+ F(前方)とCtrl+ B(後方)を使用して出力が長いファイルの場合でも、ページをめくることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.