it-swarm-vi.tech

Làm cách nào tôi có thể ẩn đầu ra 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?

47
Jader Dias

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.

72
theotherreceive

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 .

30
Matt Simmons

Ẩ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 &
12
gummy

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

3
Lucho

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.

2
vike