Tôi có một kịch bản shell set -x
để có đầu ra dài dòng / gỡ lỗi:
#!/bin/bash
set -x
command1
command2
...
Đầu ra trông như thế này:
+ command1
whatever output from command1
+ command2
whatever output from command2
Vấn đề của tôi là, sản lượng vỏ (do set -x
) đi vào stderr, trộn với đầu ra của các lệnh ( command1
, command2
, ...). Tôi sẽ rất vui khi có đầu ra "bình thường" trên màn hình (như tập lệnh sẽ chạy mà không có set -x
) và đầu ra "thêm" của bash riêng biệt trong một tệp.
Vì vậy, tôi muốn có cái này trên màn hình:
whatever output from command1
whatever output from command2
và điều này trong một tệp nhật ký:
+ command1
+ command2
(cũng tốt nếu tệp nhật ký có mọi thứ với nhau)
Các set -x 2> file
rõ ràng doens't mất tác dụng đúng, bởi vì nó không phải là đầu ra của lệnh set, nhưng nó thay đổi hành vi của bash.
Việc sử dụng bash 2> file
cho toàn bộ tập lệnh cũng không thực hiện đúng, vì nó cũng chuyển hướng stderr của mọi lệnh chạy trong shell này, vì vậy tôi không thấy thông báo lỗi của các lệnh.