Indicando el final de la entrada estándar

12

¿Cómo indica uno que ha terminado de ingresar la prueba en stdin?

Por ejemplo, supongamos que deseo cifrar 'azul' con MD5 (sé que MD5 no es seguro, pero solo por este ejemplo). Lo intenté

user$ blue | md5

lo que me llevaron a entender es cómo se canaliza la entrada a stdin, pero no funciona bien.

Pero si solo entro

user$ md5

Puedo ingresar la palabra 'azul'. Pero, ¿cómo le indico a md5 que he terminado de ingresar texto?

waiwai933
fuente
2
Su primer intento probablemente no funcionó correctamente porque estaba tratando de ejecutarlo bluecomo un comando en lugar de repetirlo. Intenta en su echo blue | md5lugar.
Trey Hunner

Respuestas:

16

¿estás hablando de obtener un md5sum para un fragmento de texto?

si es así, ejecute el comando md5sum

escriba su texto, cuando termine, muévase a una nueva línea presionando Intro

presione CTRL-D para finalizar su entrada.

 user$ md5sum
 blue
 CTRL-D
Bryan
fuente
66
Esta es la respuesta correcta. Ctrl-D es la forma canónica de terminar la entrada estándar del teclado en cualquier comando de shell. Pero extrañamente, tengo un / sbin / md5, de origen indeterminado, pero probablemente de OpenSSL, en mi sistema (Mac OS X v10.6.3) que no termina en el primer Ctrl-D. Se necesita un segundo Ctrl-D para terminarlo. Lo mismo con openssl md5.
Spiff
44
@Spiff: solo debería necesitar dos ^ D si desea omitir la nueva línea final. Si puede aceptar (o necesita) la nueva línea final, entonces una sola ^ D en una nueva línea debería ser suficiente. El carácter EOF (^ D) vacía la entrada almacenada en el búfer. Si no hay entrada almacenada en el búfer, la lectura del proceso desde el tty obtiene una lectura de longitud cero (es decir, EOF). Ver (por ejemplo) POSIX XRAT 11.1.9, EOF ; VEOF en términos de Linux ; o EOF en términos de FreeBSD .
Chris Johnsen
0

En su primer ejemplo, necesita un echo:

user$ echo "blue" | md5
Pausado hasta nuevo aviso.
fuente
es inutil. La idea era que todas las entradas se presionan con el teclado. El problema era cómo marcar el final de la transmisión.
Znik