Câu hỏi Làm cách nào để ghi đè tùy chọn "noclobber" bash?


Các bash  noclobber tùy chọn ngăn một người ghi đè tệp bằng chuyển hướng. Nhưng đôi khi tôi thực sự muốn. csh có một tùy chọn tương tự và nó có thể bị bỏ qua bằng cách đặt ! trước tên tập tin. Có cách nào để làm điều này với bash?


17
2017-11-06 12:02


gốc




Các câu trả lời:


Vâng. Nối thêm | tới toán tử chuyển hướng để tạo thành >|. Đây là trong § 3.6.2 Sổ tay Tham khảo Bash, q.v.

Nếu toán tử chuyển hướng là ‘>’ và tùy chọn noclobber cho nội trang được thiết lập đã được bật, chuyển hướng sẽ thất bại nếu tệp có tên là kết quả từ việc mở rộng từ tồn tại và là tệp thông thường. Nếu toán tử chuyển hướng là ‘> |’ hoặc toán tử chuyển hướng là ‘>’ và tùy chọn noclobber không được bật, thì chuyển hướng sẽ được thử ngay cả khi tệp được đặt theo từ tồn tại.

Chuyến thăm hướng dẫn này về tùy chọn noclobber. Nó có thể giúp đỡ.


19
2017-11-06 12:12





Sử dụng | ("ống") trong bash, thay vì ! ("bang") như bạn sẽ làm csh. Ví dụ:

echo done >| out

Lưu ý rằng nếu bạn muốn chuyển hướng stderr đến stdout   ghi đè noclobber, cũng không >|& cũng không &>| sẽ làm việc; sử dụng biểu mẫu dài thay thế:

cmd-with-errors done >| out 2>&1

3
2018-03-21 23:05



Bạn có biết tại sao err &>| out không hoạt động? - Sanghyun Lee