Indica la fine dell'input standard


12

Come si indica che si è finito di inserire il test in stdin?

Ad esempio, diciamo che desidero crittografare 'blue' usando MD5 (so che MD5 non è sicuro, ma solo per questo esempio). Provai

user$ blue | md5

che mi hanno portato a capire è come si immettono le pipe nello stdin, ma non funziona bene.

Ma se entro e basta

user$ md5

Posso inserire la parola "blu". Ma come indico a md5 che ho finito di inserire il testo?


2
Il tuo primo tentativo probabilmente non ha funzionato correttamente perché stavi cercando di eseguire bluecome comando invece di fare eco. Prova echo blue | md5invece.
Trey Hunner,

Risposte:


16

stai parlando di ottenere un md5sum per un pezzo di testo?

in tal caso, eseguire il comando md5sum

digita il testo, al termine, passa a una nuova riga premendo Invio

premi CTRL-D per terminare l'inserimento.

 user$ md5sum
 blue
 CTRL-D

6
Questa è la risposta esatta. Ctrl-D è il modo canonico di terminare lo stdin della tastiera in qualsiasi comando shell. Ma stranamente, ho un / sbin / md5 - di origine indeterminata, ma probabilmente da OpenSSL - sul mio sistema (Mac OS X v10.6.3) che non termina con il primo Ctrl-D. Ci vuole un secondo Ctrl-D per terminarlo. Lo stesso con openssl md5.
Spiff,

4
@Spiff: Dovresti aver bisogno solo di due ^ D se vuoi omettere la nuova riga finale. Se puoi accettare (o avere bisogno) della nuova riga finale, allora una singola ^ D su una nuova riga dovrebbe essere sufficiente. Il carattere EOF (^ D) cancella l'input buffer. Se non è presente alcun input nel buffer, la lettura del processo da tty ottiene una lettura di lunghezza zero (cioè EOF). Vedi (es.) POSIX XRAT 11.1.9, EOF ; VEOF in termios Linux ; o EOF nelle termios di FreeBSD .
Chris Johnsen,

0

Nel tuo primo esempio, hai bisogno di un echo:

user$ echo "blue" | md5

è inutile. L'idea era, tutto l'input è premuto dalla tastiera. Il problema era come contrassegnare la fine del flusso.
Znik,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.