Wednesday, June 18, 2014

Safe File Overwrite With Noclobber


Thông thường khi một file đã tồn tại trong hệ thống. 
Ví dụ: ls -l *conf > output.txt 
sau đó: echo “Input” > output.tx
Thì file output sẽ bị ghi đè nội dung của lệnh sau.
 Trong một số trường hợp bạn muốn tránh không xảy ra tình huống ghi đè file như vậy thì phải làm sao? 
Bạn có thể tránh các trường hợp nhầm lẫn hoặc vô tình xóa dữ liệu bằng cách thiết lập tham số “noclobber” để tránh làm hỏng dữ liệu trước đó bởi việc ghi đè vào các file đã tồn tại.
Cú pháp như sau: set -o noclobber 
Khi đó nếu vẫn vô tình thực hiện câu lệnh ghi vào 1 file đang tồn tại thì sẽ nhận được thông báo lỗi: bash: output.txt: cannot overwrite existing file.
Để thiết lập “noclobber” cho 1 file nào đó, ví dụ với file .bashrc ta thực hiện: 
echo 'set -o noclobber' >> ~/.bashrc 
Nếu vì lý do nào đó mà không muốn thực hiện tính năng này thì có thể thực hiện câu lệnh: 
set +o noclobber 
Để tắt tạm thời do mục đích nào đó. Để thực hiện điều đó hãy sử dụng toán tử | để tạm thời cho phép overwrite.
Ví dụ: ls /etc >| output.txt


No comments:

Post a Comment