Cho biết kết thúc đầu vào tiêu chuẩn


12

Làm thế nào để chỉ ra rằng một người đã hoàn thành việc kiểm tra trong stdin?

Ví dụ: giả sử tôi muốn mã hóa 'màu xanh' bằng MD5 (tôi biết MD5 không an toàn, nhưng chỉ cho ví dụ này). Tôi đã thử

user$ blue | md5

Điều mà tôi đã được dẫn đến để hiểu là làm thế nào một ống dẫn đầu vào stdin, nhưng nó không hoạt động đúng.

Nhưng nếu tôi chỉ nhập

user$ md5

Tôi có thể nhập từ "màu xanh". Nhưng làm thế nào để tôi chỉ ra cho md5 rằng tôi đã nhập xong văn bản?


2
Nỗ lực đầu tiên của bạn có thể không hoạt động chính xác bởi vì bạn đang cố thực hiện bluenhư một lệnh thay vì lặp lại nó. Hãy thử echo blue | md5thay thế.
Trey Hunner

Câu trả lời:


16

bạn đang nói về việc nhận một md5sum cho một đoạn văn bản?

nếu vậy hãy chạy lệnh md5sum

nhập văn bản của bạn, khi hoàn thành di chuyển đến một dòng mới bằng cách nhấn return

nhấn CTRL-D để kết thúc đầu vào của bạn.

 user$ md5sum
 blue
 CTRL-D

6
Đây là câu trả lời đúng. Ctrl-D là cách hợp quy để chấm dứt stdin bàn phím trong bất kỳ lệnh shell nào. Nhưng thật kỳ lạ, tôi có / sbin / md5 - nguồn gốc không xác định, nhưng có lẽ từ OpenSSL - trên hệ thống của tôi (Mac OS X v10.6.3) không kết thúc trên Ctrl-D đầu tiên. Phải mất một Ctrl-D thứ hai để chấm dứt nó. Tương tự với openssl md5.
Spiff

4
@Spiff: Bạn chỉ cần hai ^ D nếu bạn muốn bỏ qua dòng mới cuối cùng. Nếu bạn có thể chấp nhận (hoặc cần) dòng mới cuối cùng, thì một ^ D trên một dòng mới sẽ đủ. Ký tự EOF (^ D) xóa đầu vào được đệm. Nếu không có đầu vào được đệm, quá trình đọc từ tty sẽ có độ dài bằng 0 (tức là EOF). Xem (ví dụ) POSIX XRAT 11.1.9, EOF ; VEOF trong Linux termios ; hoặc EOF trong thuật ngữ FreeBSD .
Chris Johnsen

0

Trong ví dụ đầu tiên của bạn, bạn cần một echo:

user$ echo "blue" | md5

nó vô dụng. Ý tưởng là, tất cả đầu vào được nhấn bằng bàn phím. Vấn đề là làm thế nào để đánh dấu kết thúc luồng.
Znik
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.