Làm cách nào để ghi đè tùy chọn bash Thời gian noclobber?


17

Các bash noclobbertùy chọn ngăn chặn một từ ghi đè file với chuyển hướng. Nhưng đôi khi tôi thực sự muốn. cshcó một tùy chọn tương tự và nó có thể được sử dụng quá mức bằng cách đặt !trước tên tệp. Có cách nào để làm điều này với bash?

Câu trả lời:


19

Đúng. Nối |vào toán tử chuyển hướng để tạo thành >|. Đây là trong § 3.6.2 của Tài liệu tham khảo Bash , qv

Nếu toán tử chuyển hướng là '>' và tùy chọn noclobber cho tập hợp dựng sẵn đã được bật, chuyển hướng sẽ thất bại nếu tệp có kết quả tên từ việc mở rộng từ tồn tại và là một 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 được thử ngay cả khi tệp có tên bằng từ tồn tại.

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


3

Sử dụng |("pipe") trong bash, thay vì !("bang") như bạn muốn 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, thì >|&cũng không &>|hoạt động; sử dụng mẫu dài thay thế:

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

Bạn có biết tại sao err &>| outkhông làm việc?
Sanghyun Lee
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.