#rm #safe #absolute #path #deletion #numbered #graveyard

app safe-rm

safe-rm: rm 的安全且人性化的替代方案

1 个不稳定版本

0.1.0 2019年12月6日

#6#deletion

GPL-3.0+

22KB
434

safe-rm (Safe Rm)

safe-rm travis-ci

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),您有两个选项,按优先级排序
    1. 将别名 safe-rm 映射到 safe-rm --graveyard ~/.local/share/Trash
    2. 设置环境变量 $GRAVEYARD~/.local/share/Trash。这是一个好主意,因为如果垃圾场被挂载在内存文件系统上(如在 Arch Linux 中 /tmp 的情况),删除大文件会迅速填满您的 RAM。在 SSD 上移动文件也慢得多,尽管延迟应该是最小的。
  • 一般来说,删除后跟一个 --unbury 应该是幂等的。
  • 删除日志保存在 .record 中,位于垃圾场的顶层。

⚰ 致谢

特别感谢

依赖关系

~4–13MB
~136K SLoC