Làm cách nào để ẩn đầu ra màn hình (printf) của ứng dụng shell trong Linux?
Làm cách nào để ẩn đầu ra màn hình (printf) của ứng dụng shell trong Linux?
Câu trả lời:
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.
wget
bạn có thể sử dụng các -q
tùy chọn để làm cho nó yên tĩnh.
Có ba thiết bị IO có sẵn trên dòng lệnh.
standard in - 0
standard out - 1
standard error - 2
Để chuyển hướng tiêu chuẩn ra (đầ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 2> s
command >> file.log
để chuyển hướng lỗi tiêu chuẩn đến file.log, 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 (stderr) thành 1 (stdout) và gửi stdout đến file.log
Lưu ý rằng cũng có thể chuyển hướng tiêu chuẩn thành một lệnh mong đợi stdin
command << file.txt
EDIT
Để biết thêm chi tiết, hãy xem Hướng dẫn về Script Bash nâng cao
command > file.log 2>&1
công trình?
> file
và lệnh thứ hai là 2>&1
. Cái đầu tiên chuyển hướng tiêu chuẩn ra một tập tin. Cái thứ hai lấy mô tả tập tin thứ 2 và chuyển hướng nó đến cái đầu tiên. Bạn có thể thực hiện ngược lại, chuyển hướng đầu ra tiêu chuẩn sang lỗi tiêu chuẩn bằng cách sử dụng >&2
và sau đó chuyển hướng lỗi tiêu chuẩn sang một tệp với 2> file
.
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
Đối với Mac OS X (10.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à Ubunutu (10.04 "Lucid") và một số "Debian / Arch" (nhận xét bên dưới - tnx hendry) không có flusho
cài đặt (và tôi không thể thấy bất kỳ điều gì phù hợp khác trong trang con người) . Các echo
thiết lập hoạt động trên Ubuntu anyway.