Menunjukkan akhir dari Input Standar

12

Bagaimana seseorang mengindikasikan bahwa ia telah selesai memasuki tes di stdin?

Sebagai contoh, katakanlah saya ingin mengenkripsi 'biru' menggunakan MD5 (saya tahu MD5 tidak aman, tetapi hanya untuk contoh ini). Saya mencoba

user$ blue | md5

yang saya pahami adalah bagaimana satu pipa input ke stdin, tetapi tidak berfungsi dengan benar.

Tapi kalau saya masuk saja

user$ md5

Saya bisa memasukkan kata 'biru'. Tetapi bagaimana saya menunjukkan ke MD5 bahwa saya selesai memasukkan teks?

waiwai933
sumber
2
Upaya pertama Anda mungkin tidak berfungsi dengan benar karena Anda mencoba mengeksekusi bluesebagai perintah alih-alih menggemakannya. Coba echo blue | md5saja.
Trey Hunner

Jawaban:

16

apakah Anda berbicara tentang mendapatkan md5sum untuk sepotong teks?

jika demikian jalankan perintah md5sum

ketik teks Anda, ketika selesai pindah ke baris baru dengan menekan kembali

tekan CTRL-D untuk mengakhiri input Anda.

 user$ md5sum
 blue
 CTRL-D
Bryan
sumber
6
Ini adalah jawaban yang benar. Ctrl-D adalah cara kanonik untuk menghentikan keyboard stdin dalam perintah shell apa pun. Tapi anehnya, saya memiliki / sbin / md5 - yang asal-usulnya tak tentu, tapi mungkin dari OpenSSL - di sistem saya (Mac OS X v10.6.3) yang tidak berhenti pada Ctrl-D pertama. Diperlukan Ctrl-D kedua untuk menghentikannya. Sama dengan openssl md5.
Spiff
4
@Spiff: Anda hanya perlu dua ^ D jika Anda ingin menghilangkan baris terakhir. Jika Anda dapat menerima (atau membutuhkan) baris baru terakhir, maka satu ^ D pada baris baru sudah cukup. Karakter EOF (^ D) mem-flush input buffered. Jika tidak ada input buffered, proses membaca dari tty mendapat pembacaan panjang nol (yaitu EOF). Lihat (misalnya) POSIX XRAT 11.1.9, EOF ; VEOF di Linux termios ; atau EOF dalam termi FreeBSD .
Chris Johnsen
0

Dalam contoh pertama Anda, Anda memerlukan echo:

user$ echo "blue" | md5
Dijeda sampai pemberitahuan lebih lanjut.
sumber
percuma saja. Ide itu, semua input ditekan oleh keyboard. Masalahnya adalah bagaimana menandai akhir aliran.
Znik