指示标准输入端


12

一个人如何表明已经完成了在stdin中的测试?

例如,假设我希望使用MD5加密“蓝色”(我知道MD5是不安全的,但仅用于此示例)。我试过了

user$ blue | md5

我被领会的是一个管道如何将输入输入到stdin,但是它不能正常工作。

但是如果我只是进入

user$ md5

我可以输入“ blue”一词。但是如何向md5指示我已经输入完文本?


2
您的第一次尝试可能无法正常工作,因为您试图blue作为命令执行而不是回显它。试试吧echo blue | md5
Trey Hunner 2010年

Answers:


16

您在谈论获取一段文本的md5sum吗?

如果是这样,请运行md5sum命令

输入文字,完成后按回车键移动到新行

按CTRL-D结束输入。

 user$ md5sum
 blue
 CTRL-D

6
这是正确的答案。Ctrl-D是在任何shell命令中终止键盘stdin的规范方法。但是奇怪的是,我的系统(Mac OS X v10.6.3)上没有终止于第一个Ctrl-D的/ sbin / md5(起源可能不确定,但可能来自OpenSSL)。需要第二个Ctrl-D来终止它。与相同openssl md5
Spiff 2010年

4
@Spiff:如果要省略最后的换行符,则只需要两个^ D即可。如果您可以接受(或需要)最后的换行符,则换行符上的单个^ D就足够了。EOF字符(^ D)刷新缓冲的输入。如果没有缓冲输入,那么从tty读取的进程将获得零长度的读取(即EOF)。参见(例如)POSIX XRAT 11.1.9,EOF ; VEOF在Linux termios中 ; 或EOF在FreeBSD termios中
克里斯·约翰森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.