này trông giống như một bản sao của How to pipe stderr, and not stdout?
Redirect stderr để "& 1", có nghĩa là "cùng một vị trí nơi stdout đang xảy ra". Sau đó chuyển hướng stdout tới/dev/null. Sau đó sử dụng một đường ống bình thường.
$ date -g
date: invalid option -- 'g'
Try `date --help' for more information.
$
$ (echo invent ; date -g)
invent (stdout)
date: invalid option -- 'g' (stderr)
Try `date --help' for more information. (stderr)
$
$ (echo invent ; date -g) 2>&1 >/dev/null | grep inv
date: invalid option -- 'g'
$
Để sao chép đầu ra từ lệnh trên vào tệp, bạn có thể sử dụng> chuyển hướng hoặc "tee". Lệnh tee sẽ in một bản sao của đầu ra vào bàn điều khiển và bản sao thứ hai vào tệp.
$ stm 2>&1 >/dev/null | grep ERROR > errors.txt
hoặc
$ stm 2>&1 >/dev/null | grep ERROR | tee errors.txt
Nguồn
2013-05-01 20:57:15
'| &' sẽ kết nối cả đầu ra tiêu chuẩn và lỗi chuẩn với RHS của đường ống. – chepner
stm | & grep ERROR dường như lọc ra các thư có chứa ERROR đến bàn điều khiển, nhưng vì lý do nào đó việc phát âm đến tệp nhật ký dường như luôn trả về một tệp trống, ngay cả khi tôi không muốn nó trên bàn điều khiển, stm | & grep ERROR > logfile.txt không hoạt động. – user2339933