From 82be076995d95e23e4850305c0fe36a4d7a1600d Mon Sep 17 00:00:00 2001 From: judasn Date: Mon, 5 Mar 2018 11:35:09 +0800 Subject: [PATCH] =?UTF-8?q?2018-03-05=20=E8=A1=A5=E5=85=85=20=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E7=9A=84=20rm=EF=BC=88=E5=88=A0=E9=99=A4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + SUMMARY.md | 1 + TOC.md | 1 + markdown-file/shell-safe-rm.md | 59 ++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 markdown-file/shell-safe-rm.md diff --git a/README.md b/README.md index 8aada47d..f5b22e95 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ - [SSH 免密登录](markdown-file/SSH-login-without-password.md) - [Bash 命令](markdown-file/Bash.md) - [Bash 其他常用命令](markdown-file/Bash-Other-Bash.md) +- [安装的 rm(删除)](markdown-file/shell-safe-rm.md) - [Sed 命令](markdown-file/Sed.md) - [Linux 下常用压缩文件的解压、压缩](markdown-file/File-Extract-Compress.md) - [Yum 下载安装包及对应依赖包](markdown-file/Off-line-Yum-Install.md) diff --git a/SUMMARY.md b/SUMMARY.md index 5449e03f..a516664b 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -15,6 +15,7 @@ * [SSH 免密登录](markdown-file/SSH-login-without-password.md) * [Bash 命令](markdown-file/Bash.md) * [Bash 其他常用命令](markdown-file/Bash-Other-Bash.md) +* [安装的 rm(删除)](markdown-file/shell-safe-rm.md) * [Sed 命令](markdown-file/Sed.md) * [Linux 下常用压缩文件的解压、压缩](markdown-file/File-Extract-Compress.md) * [Yum 下载安装包及对应依赖包](markdown-file/Off-line-Yum-Install.md) diff --git a/TOC.md b/TOC.md index 38d3e651..2f430446 100644 --- a/TOC.md +++ b/TOC.md @@ -13,6 +13,7 @@ - [SSH 免密登录](markdown-file/SSH-login-without-password.md) - [Bash 命令](markdown-file/Bash.md) - [Bash 其他常用命令](markdown-file/Bash-Other-Bash.md) +- [安装的 rm(删除)](markdown-file/shell-safe-rm.md) - [Sed 命令](markdown-file/Sed.md) - [Linux 下常用压缩文件的解压、压缩](markdown-file/File-Extract-Compress.md) - [Yum 下载安装包及对应依赖包](markdown-file/Off-line-Yum-Install.md) diff --git a/markdown-file/shell-safe-rm.md b/markdown-file/shell-safe-rm.md new file mode 100644 index 00000000..d95e2539 --- /dev/null +++ b/markdown-file/shell-safe-rm.md @@ -0,0 +1,59 @@ +# 安装的 rm(删除) + +## 由来 + +- 我们都知道 `rm -rf` 是一个危险的操作,所以我们应该尽可能养成一个不要 rm 的习惯,而是 mv。 + +## 设置 + +- 创建一个用来存放要被我们删除的文件夹存放地:`cd $home && mkdir .trash` +- 赋予最高权限(个人习惯):`chmod 777 .trash` +- 如果你使用 bash,你需要修改你的 home 目录下的:`.bashrc` +- 我使用的是 zsh,所以我修改:`vim .zshrc`,在文件的最后面增加下面内容: + +``` +# rm transform +function rm() { + # garbage collect + now=$(date +%s) + for s in $(ls --indicator-style=none $HOME/.trash/) ;do + dir_name=${s//_/-} + dir_time=$(date +%s -d $dir_name) + # if big than one month then delete + if [[ 0 -eq dir_time || $(($now - $dir_time)) -gt 2592000 ]] ;then + echo "Trash " $dir_name " has Gone " + /bin/rm $s -rf + fi + done + + # add new folder + prefix=$(date +%Y_%m_%d) + hour=$(date +%H) + mkdir -p $HOME/.trash/$prefix/$hour + if [[ -z $1 ]] ;then + echo 'Missing Args' + return + fi + echo "Hi, Trashing" $1 "to /root/.trash" + mv $1 $HOME/.trash/$prefix/$hour +} +``` + +- 刷新配置:`source ~/.zshrc` +- 然后断开终端,重新连接 +- 此时如果你使用:`rm -rf a.txt` 会出现这样的提示: + +``` +Hi, Trashing -rf to /root/.trash +mv: invalid option -- 'r' +Try 'mv --help' for more information. +``` + +- 现在我们删除一个测试文件:`rm a.txt`,会事显示:`Hi, Trashing a.txt to /root/.trash` +- 因为我们上面的 shell 每次触发 rm 明白的时候都会去删除一个月前的目录,所以就不需要定时器来删除 .trash 里面的文件了。 +- 如果你要强制删除,清空 .trash 目录,可以使用真正的 rm 命令:`/usr/bin/rm -rf ~/.trash/*` + + +## 资料 + +-