Hãy xem xét điều gì đó như:Có OK để sử dụng cùng một tệp đầu vào như đầu ra của lệnh đường ống không?
cat file | command > file
Thực tiễn này có tốt không? Điều này có thể ghi đè lên các tập tin đầu vào như cùng một thời gian như chúng ta đang đọc nó, hoặc là nó luôn luôn đọc đầu tiên trong bộ nhớ sau đó đường ống đến lệnh thứ hai?
Rõ ràng, tôi có thể sử dụng các file tạm như bước trung gian, nhưng tôi chỉ tự hỏi ..
t=$(mktemp)
cat file | command > ${t} && mv ${t} file
cảm ơn, moreutils trông rất hữu ích! Điều tương tự cũng áp dụng cho chuyển hướng: 'lệnh < file > tệp' hoặc thậm chí thay thế tiến trình:' lệnh <(cat file) > tệp'? – Amro
Có, nó cũng áp dụng trong cả hai trường hợp. Hãy nhớ rằng trình bao miễn phí để thiết lập các chuyển hướng theo bất kỳ thứ tự nào, vì vậy bạn nên xem xét hành vi không xác định để truy cập cùng một tệp hai lần trong một lệnh hoặc đường dẫn đơn lẻ. Ngay cả khi nó hoạt động thường xuyên, nó không được đảm bảo. – Juliano