1 个不稳定版本
0.1.0 | 2019年12月6日 |
---|
#6 在 #deletion
22KB
434 行
safe-rm (Safe Rm)
safe-rm
是一个以安全、易用性和性能为重点的命令行删除工具。它优先考虑简单的界面,并且不实现 xdg-trash 规范或试图达到相同的目标。
被删除的文件会被发送到墓地(默认为 /tmp/graveyard-$USER,见备注,了解如何更改此设置)下的绝对路径,这样您可以有机会恢复它们。不会覆盖任何数据。如果删除了具有相同路径的文件,它们将被重命名为带编号的备份。
safe-rm
是为懒惰的人设计的。如果界面的任何部分可以更直观,请提出问题或发送拉取请求。
⚰ 安装
或者获取一个二进制发布版(Linux x86_64, ARMv7 和 macOS),解压它,并将其移动到您的 $PATH 上
$ tar xvzf safe-rm-*.tar.gz
$ mv safe-rm /usr/local/bin
或者构建它
$ cargo install safe-rm
⚰ 用法
USAGE:
safe-rm [FLAGS] [OPTIONS] [TARGET]...
FLAGS:
-d, --decompose Permanently deletes (unlink) the entire graveyard
-h, --help Prints help information
-i, --inspect Prints some info about TARGET before prompting for action
-s, --seance Prints files that were sent under the current directory
-V, --version Prints version information
OPTIONS:
--graveyard <graveyard> Directory where deleted files go to rest
-u, --unbury <target> Undo the last removal by the current user, or specify some file(s) in the graveyard. Combine with -s to restore everything printed by -s.
ARGS:
<TARGET>... File or directory to remove
基本用法 -- 比rm更容易
$ safe-rm dir1/ file1
撤销上一次的删除
$ safe-rm -u
# Returned /tmp/graveyard-jack/home/jack/file1 to /home/jack/file1
打印有关目标的一些信息(文件的大小和前几行,目录的总大小和前几个文件)然后提示删除
$ safe-rm -i file1
dir1: file, 1337 bytes including:
> Position: Shooting Guard and Small Forward ▪ Shoots: Right
> 6-6, 185lb (198cm, 83kg)
Send file1 to the graveyard? (y/n) y
打印从当前目录下删除的文件
$ safe-rm -s
/tmp/graveyard-jack/home/jack/file1
/tmp/graveyard-jack/home/jack/dir1
解决名称冲突
$ touch file1
$ safe-rm file1
$ safe-rm -s
/tmp/graveyard-jack/home/jack/dir1
/tmp/graveyard-jack/home/jack/file1
/tmp/graveyard-jack/home/jack/file1~1
-u 也接受墓地的文件路径
$ safe-rm -u /tmp/graveyard-jack/home/jack/file1
Returned /tmp/graveyard-jack/home/jack/file1 to /home/jack/file1
将 -u 和 -s 结合使用以恢复 -s 打印的所有内容
$ safe-rm -su
Returned /tmp/graveyard-jack/home/jack/dir1 to /home/jack/dir1
Returned /tmp/graveyard-jack/home/jack/file1~1 to /home/jack/file1~1
⚰ 备注
- 您可能不应该将
rm
别名为safe-rm
。忘记肌肉记忆很难,但确保每次执行的rm
(来自不同的用户、不同的机器和应用程序环境)都是别名的则更难。 - 如果您已设置
$XDG_DATA_HOME
环境变量,safe-rm
将使用$XDG_DATA_HOME/graveyard
而不是/tmp/graveyard-$USER
。 - 如果您想将墓地放在其他地方(例如
~/.local/share/Trash
),您有两个选项,按优先级排序- 将别名
safe-rm
映射到safe-rm --graveyard ~/.local/share/Trash
- 设置环境变量
$GRAVEYARD
为~/.local/share/Trash
。这是一个好主意,因为如果垃圾场被挂载在内存文件系统上(如在 Arch Linux 中 /tmp 的情况),删除大文件会迅速填满您的 RAM。在 SSD 上移动文件也慢得多,尽管延迟应该是最小的。
- 将别名
- 一般来说,删除后跟一个
--unbury
应该是幂等的。 - 删除日志保存在
.record
中,位于垃圾场的顶层。
⚰ 致谢
特别感谢
- nivekuil 提供的源代码。
依赖关系
~4–13MB
~136K SLoC