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?


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.