2012-11-27 43 views

Trả lời

74

Có, nếu bạn chuyển hướng đầu ra, nó sẽ không xuất hiện trên bảng điều khiển. Sử dụng tee.

ls 2>&1 | tee /tmp/ls.txt 
+0

Có viết stderr & stdout cả ?? – Satish

+2

Trong trường hợp này lỗi được sáp nhập vào đầu ra ('2> & 1'), do đó, quá trình tiếp theo tiêu thụ các đường ống sẽ thấy cả hai của chúng như là đầu vào thường xuyên (trong ngắn hạn: có). –

+0

Làm cách nào để nối thêm nhật ký bằng tee? – Satish

9

Trong trường hợp ai đó cần phải nối thêm sản lượng và không trọng, nó có thể sử dụng "-a" hoặc "--append" tùy chọn "tee" lệnh:

ls 2>&1 | tee -a /tmp/ls.txt 
ls 2>&1 | tee --append /tmp/ls.txt 
+1

Tôi thích nó ... nó hoạt động trên Mac trơn tru –

17

Đó là đáng lưu ý rằng 2> & 1 có nghĩa là lỗi chuẩn cũng sẽ được chuyển hướng, cùng với đầu ra tiêu chuẩn. Vì vậy,

someCommand | tee someFile 

cung cấp cho bạn chỉ là đầu ra tiêu chuẩn trong các tập tin, nhưng không phải là sai số chuẩn: sai số chuẩn sẽ xuất hiện trong giao diện điều khiển duy nhất. Để có lỗi chuẩn trong tệp, bạn có thể sử dụng

someCommand 2>&1 | tee someFile 

(nguồn: In the shell, what is " 2>&1 "?). Cuối cùng, cả hai lệnh trên sẽ cắt ngắn tệp và bắt đầu xóa. Nếu bạn sử dụng một chuỗi các lệnh, bạn có thể muốn xuất ra lỗi & của tất cả chúng, cái khác. Trong trường hợp này, bạn có thể sử dụng -a gắn cờ cho lệnh "tee":

someCommand 2>&1 | tee -a someFile 
Các vấn đề liên quan