標準入力の終了を示す


12

stdinでのテストの入力が完了したことをどのように示しますか?

たとえば、MD5を使用して「青」を暗号化するとします(MD5が安全でないことはわかっていますが、この例だけのためです)。私は試した

user$ blue | md5

私が理解するようになったのは、1つのパイプが標準入力に入力する方法ですが、正しく動作しません。

しかし、私がちょうど入ったら

user$ md5

「青」という言葉を入力できます。しかし、テキストの入力が終了したことをmd5に示すにはどうすればよいですか?


2
blueエコーする代わりにコマンドとして実行しようとしたため、最初の試みはおそらく正しく機能しませんでした。echo blue | md5代わりに試してください。
トレイハナー

回答:


16

テキストのmd5sumを取得することについて話していますか?

その場合、md5sumコマンドを実行します

テキストを入力し、終了したらReturnキーを押して新しい行に移動します

CTRL-Dを押して入力を終了します。

 user$ md5sum
 blue
 CTRL-D

6
これは正しい答えです。Ctrl-Dは、シェルコマンドでキーボードの標準入力を終了する標準的な方法です。しかし、奇妙なことに、私のシステム(Mac OS X v10.6.3)には、最初のCtrl-Dで終了しない/ sbin / md5があります。終了するには、2回目のCtrl-Dが必要です。と同じopenssl md5
10

4
@Spiff:最後の改行を省略したい場合、^ Dを2つだけ必要とします。最終改行を受け入れる(または必要とする)ことができる場合は、新しい行で単一の^ Dで十分です。EOF文字(^ D)は、バッファリングされた入力をフラッシュします。バッファリングされた入力がない場合、ttyから読み取るプロセスはゼロ長の読み取り(つまりEOF)を取得します。(例)POSIX XRAT 11.1.9、EOFを参照してください。Linux termiosのVEOF ; またはFreeBSD termiosのEOF
クリスジョンセン

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