Indiquer la fin de l'entrée standard


12

Comment peut-on indiquer que l'on a fini d'entrer dans le test dans stdin?

Par exemple, disons que je souhaite chiffrer «bleu» à l'aide de MD5 (je sais que MD5 n'est pas sécurisé, mais juste pour cet exemple). j'ai essayé

user$ blue | md5

ce que j'ai été amené à comprendre, c'est comment un canal d'entrée à stdin, mais cela ne fonctionne pas correctement.

Mais si je viens d'entrer

user$ md5

Je peux saisir le mot «bleu». Mais comment indiquer à md5 que j'ai fini de saisir du texte?


2
Votre première tentative n'a probablement pas fonctionné correctement car vous tentiez de l'exécuter en bluetant que commande au lieu de l'écho. Essayez echo blue | md5plutôt.
Trey Hunner

Réponses:


16

parlez-vous d'obtenir une somme md5 pour un morceau de texte?

si c'est le cas, exécutez la commande md5sum

tapez votre texte, lorsque vous avez terminé, passez à une nouvelle ligne en appuyant sur la touche Entrée

appuyez sur CTRL-D pour terminer votre saisie.

 user$ md5sum
 blue
 CTRL-D

6
C'est la bonne réponse. Ctrl-D est la manière canonique de terminer le clavier stdin dans n'importe quelle commande shell. Mais étrangement, j'ai un / sbin / md5 - d'origine indéterminée, mais probablement d'OpenSSL - sur mon système (Mac OS X v10.6.3) qui ne se termine pas sur le premier Ctrl-D. Il faut un deuxième Ctrl-D pour le terminer. Même chose avec openssl md5.
Spiff

4
@Spiff: Vous ne devriez avoir besoin que de deux ^ D si vous voulez omettre la nouvelle ligne finale. Si vous pouvez accepter (ou avoir besoin) la nouvelle ligne finale, alors un seul ^ D sur une nouvelle ligne devrait suffire. Le caractère EOF (^ D) vide l'entrée en mémoire tampon. S'il n'y a pas d'entrée tamponnée, la lecture du processus à partir du tty obtient une lecture de longueur nulle (c'est-à-dire EOF). Voir (par exemple) POSIX XRAT 11.1.9, EOF ; VEOF dans les termios Linux ; ou EOF dans les termios FreeBSD .
Chris Johnsen

0

Dans votre premier exemple, vous avez besoin d'un echo:

user$ echo "blue" | md5

C'est inutile. L'idée était, toutes les entrées sont pressées par le clavier. Le problème était de savoir comment marquer la fin du flux.
Znik
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.