-1

fileコマンドはファイルタイプを示しますが、ファイルがテキストの場合は「ASCIIテキスト」と表示されます。ただし、Rubyスクリプト、Pythonスクリプト、C++ファイルなどのテキストの種類を調べたいと思います。Rubyを使用してこれを行いたいと思います。

4

2 に答える 2

2

確実に行うことはできません。

ただし、最初の(ハッシュバン) 行のインタープリターの名前を見れば、かなり確実です。(例: #!/usr/bin/python#!/usr/bin/env rubyなど)

ただし、一般に、確実に行うことはできません。たとえば、次のプログラムを考えてみましょう。

print "Hello, World!"

パイソンですか?またはルビー?またはパール?-- これらすべての言語で有効なプログラムです。

于 2013-02-20T00:24:01.483 に答える
1

確実に行うことはできませんが、おそらく最も近い方法は、プログラムが特定の言語に対して構文的に正しいかどうかを確認することです。これにより誤検知が発生することに注意してください。@maerics の例print "Hello, World!"、単純な空のファイルの場合と同様に 1 つです (おそらく、すべての構文チェッカーが問題なくパスします)。1 つの構文チェッカーだけが問題ないと判断した場合にのみ推測することで、これを減らすことができます。

指定した言語でのみ構文をチェックする方法は次のとおりです (詳細については、Syntastic Vim プラグインが参考になります)。

  • C++: (お気に入りのコンパイラに$CC -x c++ -fsyntax-only myfile置き換えてください。このコマンドは Clang & GCC と互換性があります。)$CC

  • ルビー:ruby -c myfile

  • パイソン:python -m py_compile myfile

通常、このコマンドの終了コードを確認するだけで済みます。Ruby では、実行するコマンドを渡してsystem戻り値が true かどうかを確認することで確認できます。

于 2013-02-20T01:32:17.460 に答える