Làm cách nào để ẩn đầu ra màn hình (printf) của ứng dụng Shell trong Linux?
Bạn có thể chuyển hướng đầu ra của bất kỳ chương trình nào để nó không được nhìn thấy.
$ program > /dev/null
Điều này sẽ chuyển hướng đầu ra tiêu chuẩn - bạn vẫn sẽ thấy bất kỳ lỗi nào
$ program &> /dev/null
Điều này sẽ chuyển hướng tất cả đầu ra, bao gồm cả lỗi.
Có ba thiết bị I/O có sẵn trên dòng lệnh.
standard input - 0
standard output - 1
standard error - 2
Để chuyển hướng đầu ra tiêu chuẩn (đầu ra mặc định) sang một tệp (và ghi đè lên tệp), sử dụng
command > file.log
Để chắp thêm vào file.log, hãy sử dụng hai >
S
command >> file.log
Để chuyển hướng lỗi tiêu chuẩn đến file.log, hãy sử dụng
command 2> file.log
Và để chắp thêm
command 2>> file.log
Để kết hợp các đầu ra thành một luồng và gửi tất cả chúng đến một nơi
command > file.log 2>&1
Điều này sẽ gửi 2 (lỗi tiêu chuẩn) thành 1 (đầu ra tiêu chuẩn) và gửi đầu ra tiêu chuẩn đến file.log
Lưu ý rằng cũng có thể chuyển hướng đầu vào tiêu chuẩn thành một lệnh mong đợi đầu vào tiêu chuẩn
command << file.txt
[.___.] Để biết thêm chi tiết, hãy xem Hướng dẫn về Bash Script nâng cao .
Ẩn đầu ra tiêu chuẩn:
./command >/dev/null
Ẩn đầu ra tiêu chuẩn và lỗi tiêu chuẩn:
./command >/dev/null 2>&1
Ẩn đầu ra tiêu chuẩn và lỗi tiêu chuẩn và thiết bị đầu cuối phát hành (chạy lệnh trong nền):
./command >/dev/null 2>&1 &
Nếu bạn chỉ muốn ẩn đầu ra (và không lưu nó vào một tệp), bạn có thể sử dụng:
Đã chỉnh sửa:
$ lệnh &>/dev/null
Dành cho Mac OS X v10.6 (Báo tuyết):
Nếu bạn cần ẩn đầu ra mà không cho chương trình biết bằng cách kiểm tra bộ mô tả tệp đầu ra/lỗi, bạn có thể thử sử dụng cách sau trong Shell:
stty flusho; command ;stty -flusho
hoặc nếu bạn chỉ muốn ẩn đầu vào từ thiết bị đầu cuối bằng cách này:
stty -echo; command ;stty echo
Xem trang hướng dẫn stty (1) để biết thêm thông tin.
Đối với Linux, tất cả những gì tôi biết là buntu 10.04 (Lucid Lynx) và một số Debian/Arch Linux (nhận xét bên dưới - cảm ơn, hendry) không có cài đặt flusho
(và tôi không thể thấy bất cứ điều gì thích hợp khác trong trang con người). Cài đặt echo
vẫn hoạt động trên Ubuntu.