2016-11-09 11 views
0

は、以下の3つのコマンド考えてみましょう:今すぐ複数の入力文字列の1つのmd5sumのプロセス

$ echo -n "string1" | md5sum 
34b577be20fbc15477aadb9a08101ff9 - 

$ echo -n "string2" | md5sum 
91c0c59c8f6fc9aa2dc99a89f2fd0ab5 - 

$ echo -n "string3" | md5sum 
9e6dc8685bf3c1b338f2011ace904887 - 

を、私たちはそのように機能するコマンドを持っているしたいと思います:

$ echo -n "string1 string2 string2" | xargs md5sum 
34b577be20fbc15477aadb9a08101ff9 - 
9e6dc8685bf3c1b338f2011ace904887 - 
9e6dc8685bf3c1b338f2011ace904887 - 

Howevery、

$ echo -n "string1 string2 string2" | xargs md5sum 

の出力は、次のとおりです。

md5sum: string1: No such file or directory 
md5sum: string2: No such file or directory 
md5sum: string3: No such file or directory 

この問題を解決するお手伝いをしてもらえますか?

  • 我々はmd5sumのための3つのプロセスを実行したくない、私たちは本当に(xargsのが遊びに来た理由は、これは...右ですか?)3つの入力文字列に1つのプロセスを実行したいと思います

  • 我々ディスクにファイルを書きたくない場合は、RAMにアクセスするのと同じくらい速くします。

+0

@ColonelThirtyTwoを、

は別のツールを使用することを検討してください言わない限りではありません。デフォルトでは、各呼び出しに合うように多くの引数を渡します。しかし、md5sumが引数を受け取ると、それぞれがファイル名であるとみなします。 –

+0

これはmd5sumを使用する理由、つまりPythonを['hashlib'モジュール](https://docs.python.org/2/library/hashlib.html#module-hashlib)と比較する理由ですか? –

+0

これは基本的にbashを終了してpythonやjavaに行く必要があるので、やってみましょう。迅速な返信をありがとう。 – Xorwell

答えて

3

md5sumは、1回の呼び出しで複数の異なる項目をstdinからハッシュすることができる使用モードはサポートしていません。その結果、xargsや他のシェルツールを組み合わせることはできません。 (md5sumが名前付きFIFOを引数として渡すことを可能にするプラットフォームでは、プロセス置換のクリエイティブな使用が可能ですが、テストした少なくとも1つのプラットフォームでは、このコマンドは通常のファイルに対してのみ機能します)。その後、あなたのコードを実行することができます...

hashmany() { 
    python -c ' 
import hashlib, sys 
for arg in sys.argv[1:]: print hashlib.md5(arg).hexdigest() 
' "[email protected]" 
} 

hashmany string1 string2 string3 

...出力で:

34b577be20fbc15477aadb9a08101ff9 
91c0c59c8f6fc9aa2dc99a89f2fd0ab5 
9e6dc8685bf3c1b338f2011ace904887 
+0

@ 123であり、これは文字列ごとにmd5sumを1回呼び出すことです。 –

+0

あなたは各文字列を別々にmd5sumする必要がありますか? – 123

+0

@ 123、正しい、彼らは入力文字列ごとに生成された別々のmd5sumを要求していますが、*複数の異なるコマンド呼び出しはありません。私の最初の考えは、プロセス置換を使用することでした - 'md5sum <(printf '%s' string1)<(printf '%s' string2)<(printf '%s' string3)' - しかし、少なくともローカルでは、普通のファイルを主張する。たとえそれがすべての実装に当てはまるわけではないとしても、移植性のないものに時間を費やすのではないでしょう。 –

関連する問題