Việc ghi đè lên file thường được thực thi bởi 1 trong 2 cách sau:
command > output.txt
command > /dev/device
Và chúng ta có thể sẽ ghi đè lên tập tin vô tình sử dụng cú pháp using > operator. Ví dụ như:
$ ls -l *.c > output.txt
Nếu file output.txt tồn tại và là một tập tin thông thường nó sẽ được ghi đè. Nếu với user root mà bạn đã gõ "command > /etc/passwd" thay vì "command < /etc/passwd". Điều này có thể là một thảm họa cho file /etc/passwd. Có lần tôi đã sử dụng > khi tôi có nghĩ là đang sử dụng >> (append).
Làm thế nào để tránh vô tình ghi đè lên của một tập tin trên shell bash?
Bạn có thể nói với bash shell không xóa tập tin dữ liệu/nội dung bởi sai lầm bằng cách thiết lập biến noclobber. Nó có thể giữ bạn vô tình xóa các tập tin hiện tại của bạn bằng cách chuyển hướng đầu vào trên một tập tin đã tồn tại.
Làm thế nào để thiết lập tùy chọn noclobber để tránh ghi đè lên các tập tin trên shell bash?
Mở Terminal và gõ lệnh sau:
$ set -o noclobber
Tạo 1 file test như sau:
$ echo "foo bar"> output.txt
Và hãy thực thi một lệnh ghi đè lên file output.txt
$ cat > output.txt
OR
ls -l > output.txt
Sample outputs:
bash: output.txt: cannot overwrite existing file
Add set -o noclobber to your ~/.bashrc file:
$ echo 'set -o noclobber' >> ~/.bashrc
Làm thế nào để tắt noclobber trên shell bash?
Gõ lệnh sau đây:
$ set +o noclobber
Using + rather than - causes these flags to be turned off.
Làm thế nào để tạm thời tắt noclobber trên shell bash?
Đôi khi bạn chỉ cần tắt noclobber cho hoạt động đơn lẻ. Sử dụng >| để bắt buộc ghi đè vô điều kiện. VÍ dụ:
$ ls /etc >| output.txt
$ less output.txt
Nguồn: http://www.cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html
» Tin mới nhất:
» Các tin khác: