1. 程式人生 > >定製一個相對安全的linux命令------delete (代替rm)

定製一個相對安全的linux命令------delete (代替rm)

        在linux下, 用rm是比較危險的, 刪除了的檔案不會放到所謂的回收站中, 有很多因rm而“一失足成一天恨”的例子, 下面, 我們考慮來定製一個delete命令, 並模擬做一個回收站, 這樣, 即使delete檔案/目錄, 也會放在自建的回收站中, 相對比較安全。

       用shell script來實現, delete文字檔案的內容為:

#! /bin/bash
#  customize a relatively safer command, namely delete, to substitute rm


# create a dustbin if necessary
if [ ! -d ~/.RecycleBin ]
then 
        mkdir ~/.RecycleBin
fi

# necessary, the shell script file(delete) and the file/directory to be deleted(e.g. a.txt or folder) are not necessarily in the same directory
current_dir=`pwd`

if [ $# -eq 0 ]
then 
        echo "Usage: delete file1 [file2 file3 ...]"   # guide to use delete
else 
        echo "My dear, you are about to delete --- :"
        echo 
[email protected]
read -p "Are you sure to delete it(them)? [y/n]:" user_answer if [ "$user_answer" == "y" ] || [ "$user_answer" == "Y" ] then for file in [email protected] do if [ ${file:(-1)} == "/" ] # last character then file=${file%?} # cut the last / fi if [ -f "$current_dir/$file" ] || [ -d "$current_dir/$file" ] then # calculate the current date current_date=`date` current_date=${current_date// /_} # replace blank with _ dest_file="${file}__DelTime:$current_date" mv "$current_dir/$file" "$current_dir/$dest_file" mv "$current_dir/$dest_file" ~/.RecycleBin # move the file/directory to dustbin, not "~/.RecycleBin", but ~/.RecycleBin else echo "$file: No such file or directory, my dear!" fi done else echo "No file or directory removed" fi fi

       注意, 要對檔案加可執行許可權。

       我們查閱一下PATH的值, 並把delete這個檔案放到對應的目錄下(如果沒有, 可以自建一個目錄), 然後執行一系列的操作, 結果如下:

[[email protected] learn_shell]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/taoge/bin:/home/taoge/bin
[[email protected] learn_shell]$ ls /home/taoge/bin/delete 
/home/taoge/bin/delete
[
[email protected]
learn_shell]$ ls ~/.RecycleBin/ [[email protected] learn_shell]$ ls [[email protected] learn_shell]$ touch a.txt; mkdir folder [[email protected] learn_shell]$ delete a.txt folder My dear, you are about to delete --- : a.txt folder Are you sure to delete it(them)? [y/n]:y [[email protected] learn_shell]$ touch a.txt; mkdir folder [[email protected] learn_shell]$ delete a.txt folder/ My dear, you are about to delete --- : a.txt folder/ Are you sure to delete it(them)? [y/n]:y [[email protected] learn_shell]$ [[email protected] learn_shell]$ [[email protected] learn_shell]$ [[email protected] learn_shell]$ ls -l ~/.RecycleBin/ total 8 -rw-rw-r-- 1 taoge taoge 0 May 9 22:15 a.txt__DelTime:Sat_May__9_22:16:13_PDT_2015 -rw-rw-r-- 1 taoge taoge 0 May 9 22:16 a.txt__DelTime:Sat_May__9_22:16:38_PDT_2015 drwxrwxr-x 2 taoge taoge 4096 May 9 22:15 folder__DelTime:Sat_May__9_22:16:13_PDT_2015 drwxrwxr-x 2 taoge taoge 4096 May 9 22:16 folder__DelTime:Sat_May__9_22:16:38_PDT_2015 [[email protected] learn_shell]$

       這個~/.RecycleBin就是我們自建的回收站。 另外要注意: /home/taoge/bin的bin是binary,  是存放二進位制檔案的目錄, 當然在本例中, 我把指令碼檔案放進去了, 也無妨。 .RecycleBin的bin是dustbin.

       OK,  本文先介紹到這裡, 上述程式基本能滿足要求。 當然, 要做到非常穩健, 還是有一些地方需要改進的(比如, 如果檔案或者目錄中有空格, 則上述程式碼有錯)。

相關推薦

定製一個相對安全linux命令------delete (代替rm)

        在linux下, 用rm是比較危險的, 刪除了的檔案不會放到所謂的回收站中, 有很多因rm而“一失足成一天恨”的例子, 下面, 我們考慮來定製一個delete命令, 並模擬做一個回收站, 這樣, 即使delete檔案/目錄, 也會放在自建的回收站中, 相對比

一個強大的linux命令——find之exec

exec解釋: -exec 引數後面跟的是command命令,它的終止是以;為結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜槓。 {} 花括號代表前面find查找出來的檔名。 使用find時,只要把

linux 命令 find與rm實現查詢並刪除目錄或檔案

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Menlo; color: #000000; background-color: #ffffff } span.s1 { }   504  find /Volumes/WD/data

每天一個linux命令8之grep高級篇

表達式 大寫 world exp 大寫字母 重復數 tools href 反向 1語法 grep -[acinv] ‘搜索內容串‘ filename-a 以文本文件方式搜索-c 計算找到的符合行的次數-i 忽略大小寫-n 順便輸出行號-v 反向選擇,即找 沒有搜索

每天一個linux命令(16):tail命令

nvi 系統 strong 維基百科 ron .com linux tro 聯系 版權聲明更新:2017-05-20博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 本文介紹了Linu

每天一個linux命令(11):cat命令

部分 ron linu mv命令 平臺 linux下 一個 介紹 inux 版權聲明更新:2017-05-15博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 本文介紹了Linux下面

每天一個linux命令(9):cp命令

系統 lin 維基 介紹 參考 vip 聲明 com 開發平臺 版權聲明更新:2017-05-13博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 本文介紹了Linux下面的cp命令。

【轉載】每天一個Linux命令

mkdir 命令 結構 oca archive mic post rmdir 命令 每天 sof 每天一個linux命令(1) : ls 命令 每天一個linux命令(2) : cd 命令 每天一個linux命令(3) : pwd 命令 每天一個linux命令(4)

一個shell腳本,讓你的linux命令行酷炫起來

bashrc exe print eth1 ps1 sysv echo png end #!/bin/bash # This program is to modify showed marked## biaoshi.sh 207# by wangxi

每天一個Linux命令001——ls

簡單 relink rect sql 目錄 print logs apach 我只 聯想記憶: ls - list directory 語法:   ls [OPTION]... [FILE]...   說明:ls是命令,OPTION是選項例如-a、-l,FIL

每天一個linux命令

文件和目錄屬性 vmstat命令 find命令 性能 參考 url http 目錄 standard 開始詳細系統的學習linux常用命令,堅持每天一個命令,所以這個系列為每天一個linux命令。學習的主要參考資料為:   1.《鳥哥的linux私房菜》   2.http:

Linux命令學習之—每天發一個命令—mkdir

linux 命令 mkdirLinux命令學習之—每天發一個命令—mkdirmkdir 命令用來創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。1.命令格式:mkdir [選項] 目錄...2.命令功能:通過 mkdir 命令可以實現在指定位置創建以

轉每天一個linux命令(4):mkdir命令

指定位置 cnblogs 同名 parent --help pos uri 不存在 必須 linux mkdir 命令用來創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。 1.命令格式: mkdir [選

轉每天一個linux命令(5):rm 命令

每天 幫助信息 rbo 總計 com 刪除 強行 高度 linux中 昨天學習了創建文件和目錄的命令mkdir ,今天學習一下linux中刪除文件和目錄的命令: rm命令。rm是常用的命令,該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文

每天一個linux命令(13):less 命令

文件中 參數 使用 ech height 查看進程 str idt 目錄 less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極其強大。less 的用法比起 more 更加的有彈性。在 more 的時候,我們並沒有辦法向前面翻

每天一個linux命令(18):locate 命令

一次 clu ado 模式 pda -o gic style art locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的數據庫,之後當尋找時就只需查詢這個數據庫,而不必實際深入檔案系統之中了。在一般的 dis

每天一個linux命令(1):scp 命令

filename use des 本地文件 lin oca www tro 服務器 scp命令主要用於兩個服務器之間文件的傳輸。 1、從服務器下載文件 scp [email protected]:/path/filename /tmp/local_destin

(轉)每天一個linux命令(9):touch 命令

cal log bsp 參考 一個 ati linux命令 包括 ces linux的touch命令不常用,一般在使用make的時候可能會用到,用來修改文件時間戳,或者新建一個不存在的文件。 1 基本使用 1.命令格式: touch [選項]... 文件... 2.

【每天一個linux命令】wc

ror class pre inux 單詞 字節數 出現 行數 同一行 wc:統計 # wc -l/c/w #統計行數/字節數/字數(1個單詞/1個中文算一個數) wc -l yy.log cat yy.log |wc -l 1、當前目錄下文件個數 ls -lR

【每天一個linux命令】curl

bsp linux cit 焦作 pos 參數 match 轉義 url curl:訪問http請求 1、不帶參數的 get 訪問網址 curl https://www.baidu.com/ 2、帶參數的 post 訪問網址 # 原始http請求1 http://19