Ser*_*gey 13
webupd8.org 上有一个食谱。为防止链接失效,以下是重要信息(添加一些内容)。
sudo apt-get install trash-cli
Run Code Online (Sandbox Code Playgroud)
这将安装trash
,empty-trash
,list-trash
和restore-trash
命令,您可以按原样使用或制作rm
的别名trash
(见下文)。
该trash
命令的语义与标准有点不同rm
- 它不需要-r
标志即可删除目录。如果这让您感到困扰,webupd8.org 建议使用以下脚本,您可以将其放入 PATH 并命名为trash-rm
:
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 12.04 及更高版本中,脚本中的最后一个命令应该是trash-put "${cmd[@]}"
而不是trash "${cmd[@]}"
(因为命令已从 更改trash
为trash-put
)。
然后使脚本可执行:
chmod +x trash-rm
Run Code Online (Sandbox Code Playgroud)
将它放在PATH
.bashrc 的某个目录中后,向 ~/.bashrc 添加别名,这将使 bash 调用您的脚本而不是实际rm
命令:
alias rm="trash-rm"
Run Code Online (Sandbox Code Playgroud)
正如 djeikyb 正确指出的那样, .bashrc 别名技巧仅适用于 .bashrc 被修改的用户,并且仅适用于 bash 终端会话。
应该就是这样。