<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Bash版回收站 經常看到網上有人說把一個重要的文件刪除了,而恢復成本很高,所以一直在想Linux終端中為什么沒有像Windows下的回收站這樣的設計,直到看到Unix編程藝術上的一段解釋。 其實,Linux世襲了Unix的設計理念與傳統,而Unix本身并沒有這樣的設計并延續到了Linux。 Unix面向更加專業的用戶 ,Unix的開發者喜歡清晰、簡單的操作,用戶告訴做什么就做什么,即便用戶使用的命令等價于“向我開槍”的命令。而這樣做Unix的開發本能辯解的就是:保護用戶避免自我損害,應該是GUI或應用程序級別的事,而非操作系統:)。 這就解釋了Linux終端為什么沒有類似Windows回收站的設計,當然我們也可以通過Shell方式自己來實現一個類似回收站的功能,以下是筆者在2007年與2008年時寫的Shell回收站,供參考: 1.第一版本(http://bbs.chinaunix.net/thread-1034672-1-1.html) 2. 第二版本http://m.blog.chinaunix.net/uid-7176662-id-2068124.html) ``` #!/bin/bash #----------------------------------------------------------------- # filename: # author: wds # begin:2008.1.27 # end:2008.2.1 # version: v.2 # script address: http://blog.chinaunix.net/u1/40306/index.html #----------------------------------------------------------------- from1=$1 from2=$2 garbage=$HOME/.garbage mvlog=$garbage/mv.log if [ ! -e $garbage ] then mkdir -p $garbage chmod 777 $garbage fi function rand { a=(0 1 2 3 4 5 6 7 8 9 a b c d e A B C D E F ) for ((i=0;i<7;i++));do echo -n ${a[$RANDOM % ${#a[*]}]} done } random=$(rand) function rm1 { if [ -d "$from1" ] then echo "rm: cannot remove '$from1/' : Is a directory" else echo "`pwd`/:$from1:$random:`date`" >> $mvlog mv "$from1" "$garbage/$from1:$random" fi } function more { for file in * do echo "`pwd`/:$file:$random:`date`" >> $mvlog mv $file "$garbage/$file:$random" done 2> /dev/null } function rmi { if [ ! -d "$from2" ] then echo -n "rm:remove regular empty file '$from2'?" ; read answer; if [ "$answer" = 'y' -o "$answer" = 'Y' ] then echo "`pwd`/:$from2:$random:`date`" >> $mvlog mv "$from2" "$garbage/$from2:$random" fi else echo "rm: cannot remove directory '$from2': Is a directory" fi } function rmf { if [ ! -d "$from2" ] then echo "`pwd`/:$from2:$random:`date`" >> $mvlog mv "$from2" "$garbage/$from2:$random" else echo "rm: cannot remove directory '$from2': Is a directory" fi } function rmr { if [ -e "$from2" ] then result=$(echo $from2 | sed 's/\///g') echo "`pwd`/:$result:$random:`date`" >> $mvlog mv "$result" "$garbage/$result:$random" fi } function rml { while : do clear line=$(cat -n $mvlog | awk -F : '{print $1,"FileName:"$2, "Time:"$4}') linecount=$(cat $mvlog | wc -l) echo -e "$line\c" echo echo echo "Please input number you want revent(line count:$linecount)--exit(e)" read answer if [ "$answer" = e -o "$answer" = E ] then break else ( echo "please input y(sure:)" read answer1 if [ "$answer1" = y -o "$answer" = Y ] then address=$(sed -n "$answer""p" $mvlog | awk -F : '{print $1}') filename=$(sed -n "$answer""p" $mvlog | awk -F : '{print $2}') filerand=$(sed -n "$answer""p" $mvlog | awk -F : '{print $3}') fullname=$address$filename if [ -e "$fullname" ] then echo "The file exist!" sleep 1 else old="$garbage/$filename:$filerand" new="$address$filename" mv "$old" "$new" delline=$( cat $mvlog | sed "$answer""d" | sort -o $mvlog) echo "update ok!!!" sleep 1 fi fi ) fi done } function help { echo " -i) If you wants delete some file , this function is confirm you want,the same as old rm. -f) If you wants delete some directory ,you can use this function ,the same as old rm. -r) If you wants delete some directory of file ,this function can use , the same as old rm. -l) This is new function,is you wants resume some file or directory you can use this function, first this function can list some file in you garbage , these have some number ,if you wants resume 1,you can input 1 and then input y to confirm. If you want add some function or some new idear please contact me... author:wds email:8851970@qq.com " } case "$1" in [a-z]) : ;; [0-9]) : ;; [A-Z]) : ;; ?) more ;; *) :;; esac if [ "$#" -eq 0 ] then echo -n "rm: missing operand Try 'rm --help' for more informaction. " fi if [ "$#" -eq 1 ] then case "$from1" in -i) echo "Try 'rm --help' for more informaction."; break ;; -f) echo "Try 'rm --help' for more informaction."; break ;; -r) echo "Try 'rm --help' for more informaction."; break ;; -l) rml ;; --help) help;; *) rm1;; esac fi if [ "$#" -eq 2 ] then case "$from1" in -i) rmi ;; -f) rmf ;; -r) rmr ;; -l) rml ;; -rf) rmr ;; --help) help ;; esac fi if [ "$#" -gt 2 ] then for file in $* do mv $file "$home/" done 2> /dev/null fi ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看