Tại sao từ khóa grep gout khác làm cho thiết bị đầu cuối đứng mãi mãi?


25

Khi tôi gõ "grep doc" trong thiết bị đầu cuối, nó sẽ không làm gì cả, ngăn thiết bị đầu cuối làm bất cứ điều gì khác trước khi tôi thoát bằng Ctrl+ Choặc Z.

Tôi biết đây không phải là cách tôi nên sử dụng grep, nhưng chỉ tò mò tại sao điều này lại xảy ra.

Câu trả lời:


40

grep theo mặc định tìm kiếm đầu vào tiêu chuẩn nếu không có tập tin nào được đưa ra:

grep tìm kiếm các FILE đầu vào được đặt tên (hoặc đầu vào tiêu chuẩn nếu không có tệp nào được đặt tên hoặc nếu một dấu gạch nối đơn (-) được đặt dưới dạng tên tệp) cho các dòng chứa khớp với MẪU đã cho. Theo mặc định, grep in các dòng phù hợp.

Nếu bạn chỉ cần grep docgrep mong đợi đầu vào tiêu chuẩn sẽ đến và tìm kiếm bên trong nó (không nhập các phần giữa <>vào thiết bị đầu cuối, đây là những nhận xét):

$ grep doc
a b c <PRESS ENTER HERE>
doc <NO MATCH WAS FOUND IN PREVIOUS LINE, TYPE doc AND PRESS ENTER AGAIN>
doc <MATCH WAS FOUND>

6
OP cũng có thể tự nhấn Ctrl + D trên một dòng để kết thúc "phiên" grep.
Kevin

2
Câu trả lời tốt. Chỉ muốn lưu ý rằng khá nhiều không ai nhu cầu sử dụng grep bằng cách gõ như vậy, nhưng nó cho phép bạn ống tiêu chuẩn đầu ra từ một lệnh trước đó, mà rất hữu ích.
Karl Bielefeldt

20
@KarlBielefeldt: Đây thực sự là một cách thuận tiện để gỡ lỗi các biểu thức phức tạp. Bạn có thể chạy một cái gì đó như grep '([a-z]+[0-9]*.x){2,3}'và gõ một loạt các dòng mẫu trên bàn phím của bạn để đảm bảo nó phù hợp với những gì bạn nghĩ nó làm. Các dòng khớp sẽ được lặp lại, các dòng không phù hợp.
Nate Eldredge

1
@NateEldredge: Cảm ơn bạn đã đưa ra một ví dụ thực tế cho việc này! Tôi luôn luôn nhìn vào những lời kêu gọi null-arg về những thứ như grep và cat là chủ yếu trên lý thuyết.
mê cung

1
@labyrinth Chúng không phải lý thuyết nào cả, họ đang sử dụng tất cả các thời gian khi đường ống, ví dụ:somecommand | grep foo
Barmar

14

grep đang chờ đầu vào.

Từ man grep:

[...]
DESCRIPTION
       grep  searches  the named input FILEs (or standard input if no files are named
[...]
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.