Trong shell, exec
1) mở tệp và chuyển hướng 2) exec
ing thực tế (thay thế hình ảnh quá trình hiện tại bằng hình ảnh quá trình khác).
Đây exec
là những chuyển hướng.
Trước tiên, bạn chuyển hướng ( exec 1> >(tee $LOGFILE)
) bộ stdout
mô tả (1) sang một đường ống được tạo thay thế quy trình được kết nối với một tee
quy trình chạy đồng thời có $LOGFILE
đối số đầu tiên và sau đó bạn chuyển hướng bộ stderr
mô tả (2) đến cùng một nơi với bộ mô tả 1
bây giờ (tee ống).
Hãy nhớ rằng các trình biên dịch được kế thừa, bạn đã tạo ra tất cả tương lai stdout
và stderr
đầu ra đi vào tee
quy trình, ghi nó đến $LOGFILE
và bất cứ nơi nào trình biên bản 1 chỉ vào ban đầu (có thể là thiết bị đầu cuối của bạn).
Lưu ý:
Quá trình tee xuất ra thiết bị xuất chuẩn ban đầu (= filedescriptor gốc 1) bởi vì, khi bạn có thể tìm hiểu từ / tìm kiếm bash (1) cho Mở rộng lệnh đơn giản và Thay thế quy trình, thay thế quy trình ( >()
<()
) xảy ra (cùng với các mở rộng khác) trước đó chuyển hướng được thực thi, có nghĩa là chuyển hướng exec 1> >(tee "$LOGFILE")
xảy ra sau khi tee
đã bắt đầu, để lại tee
cùng một filedescriptor 1 mà nó được thừa hưởng từ vỏ cha. (Nếu nó là cách khác, tee
sẽ được thực hiện để ghi vào đầu vào của chính nó, điều này có thể làm cho nó bế tắc, tùy thuộc vào mẫu IO của nó).