我尝试将 rm 命令更改为一个可以备份文件并在之后删除文件的命令。
function move_to_trash () {
unset rm;
cp -v "$@" "/home/`whoami`/backup/" && rm "$@";
}
alias rm='move_to_trash'
输出:
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
cp 命令继续运行而不启动 rm "$@" 命令,这真的很奇怪。这似乎是一个无限循环,我想知道这个循环是如何发生的。另外,我知道存在将 cp 命令转换为移动到垃圾命令(例如 rmtrash)的解决方案,尽管我更喜欢 bash 脚本方法。
答案1
注意:unset 命令不会删除别名。
function move_to_trash () {
cp -vr "$@" "/home/`whoami`/backup/" && command rm -rf "$@";
}
alias rm='move_to_trash'
如果我想删除文件或目录,此代码对我有用。