Trong bash, một liên kết lệnh
echo test > actual.txt
sẽ thay thế nội dung của tệp được gọi actual.txt
bằng "test" và tạo tệp nếu nó không tồn tại. Tuy nhiên, nếu tệp tồn tại, bash sẽ chỉ mở nó, cắt bớt nó và ghi nội dung mới vào tệp.
Cụ thể, lệnh redirect không thành công trong kịch bản này:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12 cho tôi thông báo lỗi khó hiểu link.txt: No such file or directory
.
Một cách để tránh điều này là đảm bảo xóa tệp trước khi chạy lệnh chuyển hướng.
rm link.txt && echo test > link.txt
Tuy nhiên, tôi đã tự hỏi nếu có một số tùy chọn bash hoặc toán tử chuyển hướng sẽ ngăn chế độ thất bại này. Có ý kiến gì không?
link.txt
một liên kết đến/dir/file
nơi/dir
là một tệp có thư mục loại mà bạn có quyền viết và tìm kiếm, nhưng/dir/file
không tồn tại (và chuyển hướng sẽ tạo ra nó mà không có thông báo lỗi)? Điều gì về nếu/dir/file
tồn tại nhưng không phải là một tệp thông thường (thiết bị, fifo, thư mục ...) hoặc bạn không có quyền ghi vào nó hoặc cho phép tìm kiếm/dir
?