`cat`はコードマークアップを使用してファイルを表示できますか?


45

コマンドラインからファイルの内容をすばやく表示したい場合があります。これにはもちろん使用しますがcat、多くの場合、PythonJava、または単純なHTMLのソースファイルです。これらのファイルについては、ファイルにcat色のマークアップを付けて、読みやすくすることができれば便利です。

catそのようなことはできますか?


これは、すでに答えを持ってここに
Wilf

haの私はGoogleと同じコードを見つけ@wilf:Dまた、SOにこのトピックを注目に値する:superuser.com/questions/84426/...
Rinzwind

@Rinzwind-stackoverflowを検索しました。アップするはずだったためです;-)
Wilf 14年

この質問は私にcat -v有害考えられることを思い出させます。
スノーボール14年

回答:


48

catこれを行うことができません。ただし、ピグメントが役立つ場合があります。Pythonスクリプトであり、apt-getを介してインストールできます。

sudo apt-get install python-pygments

またはeasy_install経由で簡単にダウンロードしてインストールします。

多くのソースコード言語とマークアップ言語もサポートしています

によって使用されます

pygmentize -g <filename>

5
としてファイルを開くpygmentize -g <filename>-gスイッチはレクサーなしでファイルを処理するために重要です。たとえば、それ/etc/fstabなし-gで開こうとすると失敗します。
souravc 14年

ありがとう@souravc答えに追加しました。興味深いことに、この引数は、manページやヘルプページで言及されていないようだ
txwikinger

2
よく私はそれでたくさん遊んだ。あなたはそれを見つけることができます、渡されたpygmentize --help 場合-g、ファイルの内容からレクサーを推測するか、これが失敗した場合はプレーンテキストとしてパススルーを試みます(これは標準入力で動作します)。
souravc

4
これが最適です。次にcatをpygmentize -gにエイリアスすると、黄金色になります。魚ではそれは簡単funced cat... type pygmentize -g $argv... save..funcsave catです。
イライジャ・リン

私の中でbashrc私がコメントを追加しました: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
アントニオHadjigeorgalis

19

それcat自体からではなく、ソースハイライトスーパーキャットハイライトなどを使用できます

ソースハイライト

このプログラムは、ソースファイルを指定すると、構文が強調表示されたドキュメントを生成します。また、C ++ハイライトライブラリ(新規)(バージョン3.0以降)も提供します。

Source-highlightはソース言語の仕様を動的に読み取るため、新しい言語を処理するために(ソースを再コンパイルせずに)簡単に拡張できます。また、出力形式の仕様を動的に読み取るため、新しい出力形式を処理するために(ソースを再コンパイルすることなく)簡単に拡張できます。これらの仕様の構文は非常に簡単です(マニュアルをご覧ください)。

インストールに関するマニュアル:

詳細な構築およびインストール手順については、INSTALLファイルを参照してください。とにかく、ソースが付属しているLinuxソフトウェアのコンパイルに慣れている場合は、通常の手順に従うだけです。つまり、ディレクトリにダウンロードしたファイルを展開してから、次のようにします。

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

スーパーキャット

これはSupercatのホームページです。Supercatは、一致する正規表現/文字列/文字に基づいてテキストを色付けするプログラムです。Supercatは、HTML出力と標準ASCIIテキストをサポートしています。存在する一部のテキスト色付けプログラムとは異なり、Supercatでは、色付けルールを作成するためにプログラマーである必要はありません。

標準ファイルタイプのsupercat構成ファイルを作成した場合は、「bug-spc(at)nosredna(dot)net」で私に連絡することをsuperしないでください。supercatディストリビューションに含めることができます。

または、関数source)を使用する場合:

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

必要:Pygmentssudo apt-get install python-pygments python3-pygments)bash .functionsに関数として追加し、color()のような名前を付けます


14

この回答からとして、ここでは、使用することができますpython-pygmentsものを強調するためにパッケージを。最初に:

sudo apt-get install python-pygments python3-pygments

その後:

pygmentize -g FILENAME

次に行ってください:

ここに画像の説明を入力してください

リンクした回答のように、エイリアスとして設定することもできます-基本的には、これを実行します:

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

ターミナルを閉じて再度開きます。catcコマンドが機能するはずです。機能しない場合は、これらの行が.bashrcファイル内にあり、コメントが解除されていることを確認してください。

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

別のことは、単に使用することnanoです:

nano testfile

ここに画像の説明を入力してください


6

man view または man vim

基本的な使用法: view <filename>

終了:(使用:q<Return>する<Esc>場合は最初に追加vim)、またはZZ(大文字zを2回)。

プログラマーのテキストエディターにvimは必要なものがすべて揃っており、おそらく既にシステムの一部になっています。

vimviewまたはで有効になっている読み取り専用モードがありますvim -R。マークアップしたファイルを表示するだけであれば、それで十分です。

使いやすく、ナビゲート可能で、どこでも利用できます。新しいソフトウェアのインストールやbashスクリプトの作成に煩わされる必要はありません。


知っている。問題は、VIMのオープンとクローズが迅速でないことです。すぐにファイルを表示してから、コマンドラインで続行したい。だからこそ、私はこのような良いものをpygmentizeするのを見つけました。即座に結果が得られ、プログラムを終了することはありません。:)
kramer65 14年

1
@ kramer65もちろん、それはあなたの好みですが、「開く」必要はありません。vimまたはview、ファイルを指定するだけview file.pyでよいので、との違いはありませんcat。確かにそれを閉じる必要がありますが、本当に、:q<Return>またはZZ難しいタスクではありません。
別のベン14年

主な問題は、vi / vim / viewがstdoutに書き込めないことです。そのため、上記の構文で強調表示された出力を見ながら、簡単にコマンドを書くことはできません。
Jack_Hu


3

cat構文強調表示のみを生成することはできません。それでも、次を使用してこれを行うことができますpython-pygments。最初に端末からインストールします、

sudo apt-get install python-pygments

次に、以下の関数をコピーします~/.bashrc。それはあなたが望むものをさらに提供し、catそれ以外の場合はプロパティを保存しますcat

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

ソース~/.bashrcとして、

. ~/.bashrc

色付けされた出力が得られますが、

catc <filename>

色も連結しますが、

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

pygmentize? フォームのコマンドを使用して開いているときに上下の矢印でスクロールを有効にする方法はありますか?スクロール xterm -e "pygmentize -g <filename>" する唯一の方法はスクロールバーを使用することです 出力をパイピングしようとlessしましたが、ガベージ出力になりました。
レオサイモン

はいpygmentize、より少なく使用できます。lessc次のようにbash関数を作成しますlessc () { pygmentize -gf terminal "$1" | less -R }
。– souravc

2

バット—翼を持つ猫のクローン

またbat、次の機能を備えたものをチェックアウトすることもできます。

  • 構文の強調表示
  • Git統合
  • オプションで、印刷できない文字を表示する
  • 自動ページング less
  • catリダイレクトされたときのドロップイン置換としてのファイル連結

 プレビュー

色付きのファイルを示すコウモリのスクリーンショット

公式GitHubから撮影し写真

設置

こちらから最新のDebianパッケージを入手してインストールできます:

sudo dpkg -i bat_0.10.0_amd64.deb

バージョン番号とアーキテクチャの調整。



0

サードパーティのパッケージをインストールするのではなく、geditシンタックスハイライトを使用してファイルをすばやく表示するために使用できます。たとえば、上記のアドレスバーをコピーして、ターミナルに貼り付けます。

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

この質問は、フォーマットされた色のHTMLで表示されます。

gedit https.png

  • 使い慣れたgeditナビゲーションキーを使用できます
  • 行の折り返しをオン/オフにできます
  • サムネイルスライダーを使用して、80文字のガターとドキュメントの概要(右端)にインストールしたプラグインを使用できます。
  • 唯一の注意点は、キーストロークを閉じる必要のないシミュレーションを行うために、ウィンドウをすばやく閉じるにはAlt+ を覚えておく必要があることです。F4cat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.