Re: [問題] 如何防止意外overwrite一個檔案
※ 引述《nagahara (Nagahara)》之銘言:
: 昨天發生了一個慘劇,
: 我有a.c b.c兩個檔案 想compile成main執行檔
: 然後我下 gcc -o a.c b.c
: 忘記打main 所以gcc就把a.c檔覆蓋掉了
: 寫了一個禮拜的code就這樣沒了...QQ
: 想請問有沒有辦法在檔案會被overwrite以前,
: 會像rm -i一樣 會先詢問過user在動作呢?
: 謝謝
原 po 的問題應該從源頭著手,而不是在編譯時處理。我也曾經手殘自己砍過幾次檔案,
後來痛定思痛決定在使用 vi 時進行自動備份,以下是我的想法及作法:
1. 在 ~/ 目錄中建立一個名為 .backup 的目錄
2. 我使用 vi 編輯器,因此我希望每次 vi 結束時會將目前編輯的檔案複製一個備份
至 ~/.backup 目錄下。現在問題來了,萬一我有一個檔案叫 abc,下次再複製一個
叫 abc 的檔案過去又被 overwrite 了。因此我希望在複製時在檔名後加上日期_時間
的標籤。舉例來說:abc 複製的時間是 2009/10/21 14:30 份,複製過來的檔名就叫
abc.20091021_1430
3. 除了以上想法外,在執行 vi 時不必特別執行什麼指令。
因此我寫了以下這個小 script: vi_autobak
#!/bin/bash
# Vi Automatic Backup,
# When exit, back up file as filename.YYMMDD_hhmm
[ ! -d ~/.backup ] && mkdir ~/.backup
file1=$1
file2=$2
file3=$3
file4=$4
file5=$5
file6=$6
file7=$7
file8=$8
file9=$9
vi $file1 $file2 $file3 $file4 $file5 $file6 $file7 $file8 $file9
[ ! -z $file1 ] && cp $file1 ~/.backup/$file1.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file2 ] && cp $file2 ~/.backup/$file2.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file3 ] && cp $file3 ~/.backup/$file3.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file4 ] && cp $file4 ~/.backup/$file4.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file5 ] && cp $file5 ~/.backup/$file5.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file6 ] && cp $file6 ~/.backup/$file6.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file7 ] && cp $file7 ~/.backup/$file7.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file8 ] && cp $file8 ~/.backup/$file8.$(date +%Y%m%d)_$(date +%H%M)
[ ! -z $file9 ] && cp $file9 ~/.backup/$file9.$(date +%Y%m%d)_$(date +%H%M)
echo $file1 $file2 $file3 $file4 $file5 $file6 $file7 $file8 $file9
請在此檔存入 ~/bin 目錄,並在 .bashrc 中加入 alias vi='~/bin/vi_autobak'
後記:如果 ~/.backup 目錄太亂,可以直接刪裡面的資料,以下是我的 ~/.backup
目錄執行一段時間後的內容:
ls ~/.backup
zh_tw.20091020_1331
zh_tw.20091021_1002
zh_tw.20091021_1229
zh_tw.20091021_1230
zh_tw.20091021_1247
zh_tw.20091021_1923
zh_tw2.xml.20091021_1436
zh_tw.big5.20091021_1159
zh_tw.meta.20091021_1428
zh_tw.model.txt.20091021_1452
zh_tw.utf8.20091021_1148
zh_tw.utf8.20091021_1149
zh_tw.utf8.20091021_1150
zh_tw.utf8.20091021_1201
zh_tw.utf8.20091021_1216
zh_tw.utf8.orig.20091021_1151
zh_tw.utf8.orig.20091021_1152
zh_tw.utf8.orig.20091021_1153
zh_tw.utf8.orig.20091021_1154
zh_tw.utf8.orig.20091021_1156
zh_tw.utf8.orig.20091021_1157
--
原 po 既然會寫 c 程式,以上流程應該不難才對。祝好運!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
→
11/03 19:45, , 1F
11/03 19:45, 1F
→
11/03 19:46, , 2F
11/03 19:46, 2F
推
11/03 20:16, , 3F
11/03 20:16, 3F
→
11/03 21:23, , 4F
11/03 21:23, 4F
→
11/04 10:02, , 5F
11/04 10:02, 5F
→
11/04 10:28, , 6F
11/04 10:28, 6F
※ 編輯: wyvernlee 來自: 118.232.140.21 (03/04 23:13)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Linux 近期熱門文章
21
56
PTT數位生活區 即時熱門文章