12 一个人如何表明已经完成了在stdin中的测试? 例如,假设我希望使用MD5加密“蓝色”(我知道MD5是不安全的,但仅用于此示例)。我试过了 user$ blue | md5 我被领会的是一个管道如何将输入输入到stdin,但是它不能正常工作。 但是如果我只是进入 user$ md5 我可以输入“ blue”一词。但是如何向md5指示我已经输入完文本? keyboard-shortcuts terminal shell stdin — waiwai933 source 2 您的第一次尝试可能无法正常工作,因为您试图blue作为命令执行而不是回显它。试试吧echo blue | md5。 — Trey Hunner 2010年
16 您在谈论获取一段文本的md5sum吗? 如果是这样,请运行md5sum命令 输入文字,完成后按回车键移动到新行 按CTRL-D结束输入。 user$ md5sum blue CTRL-D — 布莱恩 source 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中。 — 克里斯·约翰森
0 在第一个示例中,您需要一个echo: user$ echo "blue" | md5 — 暂停,直到另行通知。 source 没用的。想法是,所有输入均由键盘按下。问题是如何标记流结束。 — Znik 2014年
blue
作为命令执行而不是回显它。试试吧echo blue | md5
。