Anzeige des Endes der Standardeingabe

12

Wie zeigt man an, dass man den Test in stdin beendet hat?

Angenommen, ich möchte "blau" mit MD5 verschlüsseln (ich weiß, MD5 ist nicht sicher, aber nur für dieses Beispiel). Ich habe es versucht

user$ blue | md5

was mir klar wurde ist, wie man eingaben an stdin weiterleitet, aber es funktioniert nicht richtig.

Aber wenn ich nur eintrete

user$ md5

Ich kann das Wort "blau" eingeben. Aber wie zeige ich md5 an, dass ich mit der Texteingabe fertig bin?

waiwai933
quelle
2
Ihr erster Versuch hat wahrscheinlich nicht richtig funktioniert, weil Sie versucht haben, blueeinen Befehl auszuführen, anstatt ihn zu wiederholen. Versuchen Sie es echo blue | md5stattdessen.
Trey Hunner

Antworten:

16

Sprechen Sie davon, eine MD5-Summe für ein Stück Text zu bekommen?

Führen Sie in diesem Fall den Befehl md5sum aus

Geben Sie Ihren Text ein. Wenn Sie fertig sind, wechseln Sie in eine neue Zeile, indem Sie die Eingabetaste drücken

Drücken Sie STRG-D, um Ihre Eingabe zu beenden.

 user$ md5sum
 blue
 CTRL-D
bryan
quelle
6
Das ist die richtige Antwort. Strg-D ist die kanonische Methode, um die Tastatur-Standardeingabe in einem beliebigen Shell-Befehl zu beenden. Seltsamerweise habe ich ein / sbin / md5 - unbestimmten Ursprungs, aber wahrscheinlich von OpenSSL - auf meinem System (Mac OS X 10.6.3), das bei der ersten Tastenkombination Strg-D nicht beendet wird. Es dauert eine zweite Strg-D-Taste, um es zu beenden. Gleiche mit openssl md5.
Spiff
4
@Spiff: Sie sollten nur zwei ^ D benötigen, wenn Sie die letzte Zeile weglassen möchten. Wenn Sie die letzte Zeile akzeptieren können (oder brauchen), sollte ein einzelnes ^ D in einer neuen Zeile ausreichen. Das EOF-Zeichen (^ D) löscht die gepufferte Eingabe. Wenn es keine gepufferte Eingabe gibt, wird der Prozess, der aus dem tty liest, mit einer Länge von Null gelesen (dh EOF). Siehe (zB) POSIX XRAT 11.1.9, EOF ; VEOF unter Linux termios ; oder EOF in FreeBSD-Begriffen .
Chris Johnsen
0

In Ihrem ersten Beispiel benötigen Sie ein echo:

user$ echo "blue" | md5
Bis auf weiteres angehalten.
quelle
es ist sinnlos. Idee war, alle Eingaben werden per Tastatur getätigt. Problem war, wie man das Streamende markiert.
Znik