`docker log foo | less` không thể tìm kiếm hoặc cuộn được nhưng `docker log foo 2> & 1 | ít hơn là


10

Sử dụng một trong hai cho văn bản dễ đọc. Nhưng chỉ với chuyển hướng stderr, một người có thể cuộn hoặc gõ / somepotype và nhận được kết quả khớp.

Không có nó, việc tìm kiếm sẽ cho "Không có gì để tìm kiếm (nhấn RETURN)" và một cột của ~.

Cho, stderr và stdout không giống nhau nhưng tại sao ít hiển thị chúng giống nhau cho đến khi tôi bắt đầu làm gì đó ít hơn?

Đây có thể là một số điều vim nhiều cửa sổ kỳ lạ mà tôi không hiểu. Suy nghĩ?

Câu trả lời:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

Nếu somecommandin văn bản để sai số chuẩn chỉ, sau đó khi bạn chạy somecommand | less, somecommandlessđều hiển thị để các thiết bị đầu cuối. Đầu ra của lệnh trên stderr của nó sẽ không xảy ra less, nó sẽ trực tiếp đến thiết bị đầu cuối, vì nó không được chuyển hướng. Đầu tiên, đầu ra của somecommandcuộn bằng cách khởi tạo ít hơn và hiển thị dòng nhắc của nó; sau đó khi somecommandkết thúc ít thông báo rằng đầu vào của nó đã hoàn thành (vì đường ống được đóng lại). Bạn có thể muốn thử nghiệm một chút: chạy

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

và các biến thể về thời gian ngủ để somecommandtạo ra sản lượng trước hoặc sau ít hơn đã sẵn sàng và để xem điều gì xảy ra khi đường ống được đóng lại.

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.