Trong môi trường Unix-như người ta thường chuỗi quy trình: Kết quả của một chương trình được sử dụng làm đầu vào cho một chương trình khác. Trộn kết quả với chẩn đoán sẽ gây nhầm lẫn cho giai đoạn xử lý tiếp theo. Nó cũng sẽ ẩn các chẩn đoán từ một người dùng tiềm năng xem thiết bị đầu cuối, nơi các kết quả xử lý được truyền đến chương trình tiếp theo không hiển thị.
Đây là lý do cho việc tách kết quả và chẩn đoán trong stdout và stderr. Chẩn đoán không bị hạn chế về lỗi nhưng phải chứa mọi thứ không phải là kết quả xử lý mà các chương trình tiếp theo mong đợi.
Đối với câu hỏi thực tế: dos2unix thường được sử dụng để chuyển đổi tệp tại chỗ nhưng cũng có thể xuất thành stdout (khi được gọi không có tên tệp, nó đọc từ stdin và đầu ra thành stdout). stdout sau đó có thể được chuyển hướng độc lập từ stderr. Hãy xem xét cat blados | dos2unix > blaunix
. Bạn vẫn sẽ thấy chẩn đoán (có thể chứa thông báo lỗi!), Nhưng kết quả của quá trình xử lý sẽ chuyển sang blaunix.
Nó không quá phổ biến để in chẩn đoán ở tất cả trong trường hợp thành công — có thể là một chút thích nghi cho người dùng DOS. Nó sẽ là khá xấu nếu kết quả xử lý chứa thông tin thông tin; ví dụ, nó sẽ phá vỡ một tập tin C.
Nguồn
2014-07-13 07:34:14
Bạn sẽ thấy rằng unix chứa đầy các tạo tác lịch sử, chẳng hạn như tại sao 'dd' yêu cầu đối số như' if = ... 'và tại sao' tar' yêu cầu đối số vị trí không có '-' dẫn đầu. Nó chỉ là cách nó là ... –
Trong trường hợp bạn chưa tìm thấy nó, bạn có thể ngăn chặn đầu ra này bằng cách sử dụng cờ '--quiet' – ebo
Bởi vì nó là chán.Nhưng trong quá khứ, bạn có thể chỉ cần đầu vào đường ống vào nó và đường ống ra. Các lỗi được yêu cầu đặt trong stderr –