未知のファイル形式を含む猫の出力を白黒で色付けする方法は?

未知のファイル形式を含む猫の出力を白黒で色付けする方法は?

私は私の色が好きですvim。を実行するときに同様の色で出力することができますかcat

以下のようにシェーディングツールを使用できることが好きです。ソースファイルとスクリプトファイルに色付きの「cat」がありますか?。私はこれを私の標準にしたいと思いますcat。たとえば、別名を作成します。

alias cat="source-highlight --out-format=esc -o STDOUT -i"

ただし、ファイルの種類がわからない場合は、次.gitignoreが返されます。

$ cat .gitignore_global
source-highlight: could not find a language definition for input file .gitignore

認識されたファイル形式の場合、コマンドに特定のバージョンを実行させるにはどうすればよいですか?それ以外の場合は、source-highlight catファイルの標準白黒バージョンのみを実行させることができますか?cat

1つのオプションはエイリアスを使用することですが、ccat可能であればエイリアス自体に置き換えることをお勧めしますcat

cat *.rb(またはさらにccat *.rb)のようなワイルドカードを使用できればいいようです。現在、以下を提供しています。

$ ccat *.rb
Please, use one of the two syntaxes for invocation: 
source-highlight [OPTIONS]... -i input_file -o output_file
source-highlight [OPTIONS]... [FILES]...

次のようにできればいいでしょう。

ls *.rb | xargs ccat # (or cat)

私はこれを行うことができます:

ls *.rb | xargs cat

現在私は以下を得ます:

$ ls *.rb | xargs ccat
xargs: ccat: No such file or directory

ベストアンサー1

おそらく次のスクリプトのようなことができます(テストされていません)。

#!/bin/sh

for fn in "$@"; do
    source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn
done

これはいくつかのタスクを実行します。

  • 各コマンドライン引数を繰り返します。
  • を実行し、source-highlightエラー出力を次にリダイレクトしてみてください。/dev/null
  • source-highlight失敗すると正常に実行/bin/cat

cdcこのスクリプトをexampleというファイルに入れてからalias cat=cdc

関数として

上記のスクリプトをBash関数呼び出しに適用し、次のようにドットファイルに統合できます。

cdc() { 
  for fn in "$@"; do 
    source-highlight --out-format=esc -o STDOUT -i $fn 2>/dev/null || /bin/cat $fn;
  done 
}

編集(Michael)何らかの理由でccat関数名を使用しようとするとうまくいきませんでしたが、うまくいきcdcます!

おすすめ記事