표준 입력의 끝을 나타내는


12

stdin에서 테스트에 들어갔다는 것을 어떻게 알 수 있습니까?

예를 들어 MD5를 사용하여 '파란색'을 암호화하고 싶다고 가정 해 봅시다 (MD5는 안전하지 않지만이 예제에만 해당됩니다). 나는 시도했다

user$ blue | md5

내가 이해하게 된 것은 하나의 파이프가 stdin에 입력되는 방법이지만 제대로 작동하지 않습니다.

하지만 방금 입력하면

user$ md5

'파란색'이라는 단어를 입력 할 수 있습니다. 그러나 텍스트 입력이 완료되었음을 md5에 어떻게 표시합니까?


2
blue반향 대신 명령 으로 실행하려고 했으므로 첫 번째 시도가 제대로 작동하지 않았을 수 있습니다. echo blue | md5대신 시도하십시오 .
Trey Hunner

답변:


16

텍스트에 대한 md5sum을 얻는 것에 대해 이야기하고 있습니까?

그렇다면 md5sum 명령을 실행하십시오

완료되면 Return 키를 눌러 새 줄로 이동하십시오.

CTRL-D를 눌러 입력을 종료하십시오.

 user$ md5sum
 blue
 CTRL-D

6
이것이 정답입니다. Ctrl-D는 모든 쉘 명령에서 키보드 stdin을 종료하는 일반적인 방법입니다. 그러나 이상하게도 첫 번째 Ctrl-D에서 종료되지 않는 시스템 (Mac OS X v10.6.3)에 / sbin / md5-불확실한 출처가 있지만 OpenSSL에서 유래했습니다. 종료하려면 두 번째 Ctrl-D가 필요합니다. 와 동일합니다 openssl md5.
Spiff

4
@Spiff : 마지막 줄 바꿈을 생략하려면 두 개의 ^ D 만 있으면됩니다. 마지막 줄 바꿈을 수락하거나 필요로 할 수 있으면 새로운 줄에 하나의 ^ D로 충분합니다. EOF 문자 (^ D)는 버퍼 입력을 플러시합니다. 버퍼링 된 입력이 없으면 tty에서 읽는 프로세스는 길이가 0 인 읽기 (즉 EOF)를 얻습니다. (예) POSIX XRAT 11.1.9, EOF 참조 ; 리눅스 용어에서 VEOF ; 또는 FreeBSD 용어로 EOF .
Chris Johnsen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.