亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

范文資料網(wǎng)>反思報告>腳本>《101個腳本之linux回收站

101個腳本之linux回收站

時間:2022-09-24 04:31:50 腳本 我要投稿
  • 相關推薦

101個腳本之linux回收站

眾所周知,linux是沒有回收站的,一些人很害怕刪錯東西(有經(jīng)驗的linux管-理-員極少范這錯誤),個人不建議回收站,而應該是培養(yǎng)個人的安全意識。有點小跑題。

接著回來101個腳本之#15 Archiving Files As They're Removed 就是建立一個linux回收站的腳本

The Code

#!/bin/sh

# newrm, a replacement for the existing rm command, provides a

# rudimentary unremove capability by creating and utilizing a new

# directory within the user's home directory. It can handle directories

# of content as well as individual files, and if the user specifies

# the -f flag files are removed and NOT archived.

# Big Important Warning: You'll want a cron job or something similar to keep # the trash directories tamed. Otherwise nothing will ever actually

# be deleted from the system and you'll run out of disk space!

mydir="$HOME/.deleted-files"

realrm="/bin/rm"

copy="/bin/cp -R"

if [ $# -eq 0 ] ; then # let 'rm' ouptut the usage error

exec $realrm # our shell is replaced by /bin/rm

fi

# Parse all options looking for '-f'

flags=""

while getopts "dfiPRrvW" opt

do

case $opt in

f) exec $realrm "$@" ;; # exec lets us exit this script directly.

*) flags="$flags -$opt" ;; # other flags are for 'rm', not us

esac

done

shift $(($OPTIND - 1))

# Make sure that the $mydir exists

if [ ! -d $mydir ] ; then

if [ ! -w $HOME ] ; then

echo "$0 failed: can't create $mydir in $HOME" >&2

exit 1

fi

mkdir $mydir

chmod 700 $mydir # a little bit of privacy, please

fi

for arg

do

newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")" if [ -f "$arg" ] ; then

$copy "$arg" "$newname"

elif [ -d "$arg" ] ; then

$copy "$arg" "$newname"

fi

done

exec $realrm $flags "$@" # our shell is replaced by realrm

我們來說下這個腳本的實現(xiàn)思路

將原本的rm命令用我們這個帶有回收站機制的myrm腳本代替(alias別名),腳本將要刪除的文件移動到了home下個人目錄中以.deleted-files 命名的隱藏文件夾。

接著我們看看這個腳本是怎么實現(xiàn)的

while getopts "dfiPRrvW" opt

do

case $opt in

f) exec $realrm "$@" ;; # exec lets us exit this script directly.

*) flags="$flags -$opt" ;; # other flags are for 'rm', not us

esac

done

這一段說明 要是命令用帶 –f 選項的話,則不進回收站,調用原本的rm命令。

for arg

do

newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"

if [ -f "$arg" ] ; then

$copy "$arg" "$newname"

elif [ -d "$arg" ] ; then

$copy "$arg" "$newname"

fi

done

用for循環(huán)順序處理參數(shù)

newname="$mydir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")" 回收站里文件命名.

【101個腳本之linux回收站】相關文章:

廣告腳本鏡頭腳本03-23

校園電影腳本03-23

電影腳本制作03-23

婚禮拍攝腳本03-23

宣傳短片腳本03-23

腳本使用技巧03-23

平面拍攝腳本03-23

婚禮攝像腳本03-23

牙膏廣告腳本03-23