Vì đây là các thông báo lỗi, chúng được gửi đến thiết bị xuất chuẩn không xuất chuẩn. Giải pháp là bạn chuyển hướng stderr:
ls -R 2>/dev/null
Giải trình:
Bất kỳ lệnh nào cũng có 3 mô tả tệp tiêu chuẩn: đầu vào tiêu chuẩn (0) (thường là thiết bị đầu cuối nơi bạn nhập lệnh), đầu ra tiêu chuẩn (1) (thường là thiết bị đầu cuối nơi lệnh in ra đầu ra) lỗi tiêu chuẩn (2) (theo mặc định đó là giống như đầu ra tiêu chuẩn).
Hầu hết (nếu không phải tất cả) các chương trình / công cụ đều in các cảnh báo và lỗi cho bộ mô tả tệp lỗi tiêu chuẩn. Bây giờ các mô tả tập tin sẽ không được sử dụng nhiều nếu chúng đã được sửa chữa; đó là lý do tại sao trình bao cung cấp chuyển hướng : bạn có thể chuyển hướng bất kỳ mô tả tệp tiêu chuẩn nào sang bất kỳ tệp nào bạn muốn.
Chuyển hướng stdin (để lấy đầu vào từ một tệp thay vì từ bàn phím của bạn):
interactive_program 0< file_with_answers
Như bạn có thể thấy, điều này có thể giúp bạn tự động hóa việc chạy các chương trình đơn giản, đặt ra nhiều câu hỏi bằng cách cung cấp cái gọi là "tệp trả lời" được cung cấp trên đầu vào tiêu chuẩn.
Điều này có thể được rút ngắn để
interactive_program < file_with_answers
vì <
làm cho chuyển hướng rõ ràng ( từ tệp đến chương trình)
Tương tự, thiết bị xuất chuẩn có thể được chuyển hướng qua 1>...
hoặc >...
hoặc >>...
(nối vào tệp hiện có thay vì cắt bớt nó)
Chuyển hướng lỗi tiêu chuẩn yêu cầu bạn chỉ định bộ mô tả tệp một cách rõ ràng như vậy : 2>...
, vì vậy, những gì ở trên là hướng tất cả các lỗi đến tệp đặc biệt /dev/null
là một lỗ đen cho các bit.
Đọc liên quan về chuyển hướng như được cung cấp bởi MattDMo trong các ý kiến dưới đây.