#rm #trash #delete #recycle #specification #cli

bin+lib rip2

rip:rm 的安全且易于使用的替代品

13 个版本 (7 个重大更新)

新版本 0.8.2 2024 年 8 月 12 日
0.8.1 2024 年 7 月 1 日
0.8.0 2024 年 5 月 7 日

命令行工具 中排名第 628

每月下载量 24

GPL-3.0+

42KB
837

rip2

A safer, rust-based rm

crates CI Coverage Status

rip 是一个基于 Rust 的 rm,侧重于安全性、易用性和性能。它倾向于简单的接口,并且不实现 xdg-trash 规范或尝试达到相同的目标。

被删除的文件会被发送到墓地 🪦(通常为 /tmp/graveyard-$USER,有关更改此位置的说明,请参阅 说明),在其绝对路径下,这样您可以有机会恢复它们 🧟。不会覆盖任何数据。如果删除了具有相同路径的文件,它们将被重命名为编号备份。

本版本 "rip2" 是一个分支分支

  1. nivekuil/rip,原始版本,自 2020 年起未维护。
  2. StandingPadAnimation/rip,添加了一些功能。
  3. 最后,该存储库在 @here 上进行了分支,并持续维护
    • 添加了对:Windows、NixOS 的支持
    • 清理:重构为现代 Rust,合并原始存储库的 PR
    • 测试:添加完整的测试套件和覆盖率监控
    • 功能:彩色输出,会话中的日期和时间信息,
    • 错误修复:FIFO 文件,会话问题

⚰️ 安装

此软件包支持 Linux、macOS 和 Windows。

Cargo

  1. 首先 安装 Rust
  2. 然后,使用 cargo 安装此软件包
$ cargo install --locked rip2

二进制文件

不同架构和操作系统的二进制发布版可在 GitHub 发布页面找到: https://github.com/MilesCranmer/rip2/releases/

要安装,只需打开存档并将二进制文件移动到您可以运行它的位置。

Nix

此存储库与 flake 兼容,与非 flake 系统向后兼容。只需运行以下命令来测试它

nix develop "github:MilesCranmer/rip2"

其他

一些其他包管理器已经贡献了支持

额外的 Nix 选项

该存储库使用 flake-compat 进行兼容性,并使用 naersk 从源构建 Rust 软件包。

详细信息

临时添加到路径(使用 Flakes):

nix shell "github:MilesCranmer/rip2"

Flake 最小设置:

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    rip2 = {
      url = "github:MilesCranmer/rip2";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs@{ self, nixpkgs, rip2, ... }:
  {
    nixosConfigurations.your-host = let
      system = "x86_64-linux";  # or your system
      lib = nixpkgs.lib;
    in lib.nixosSystem {
      inherit system;
      modules = [
        ./configuration.nix # or other configuration options
        # ...
        {
          environment.systemPackages = [
            rip2.packages.${system}.default
          ];
        }
      ];
    };
  };
}

openSUSE

zypper ar -f obs://utilities
zypper in rip2

使用方法

Usage: rip [OPTIONS] [FILES]...
       rip [SUBCOMMAND]

Arguments:
    [FILES]...  Files and directories to remove

Options:
      --graveyard <GRAVEYARD>  Directory where deleted files rest
  -d, --decompose              Permanently deletes the graveyard
  -s, --seance                 Prints files that were deleted in the current directory
  -u, --unbury                 Restore the specified files or the last file if none are specified
  -i, --inspect                Print some info about TARGET before burying
  -h, --help                   Print help
  -V, --version                Print version

Sub-commands:
  completions  Generate shell completions file
  graveyard    Print the graveyard path
  help         Print this message or the help of the given subcommand(s)

基本使用 -- 比rm更简单

$ rip dir1/ file1

撤销上一次的删除操作

$ rip -u
Returned /tmp/graveyard-jack/home/jack/file1 to /home/jack/file1

打印关于目标的一些信息(文件大小和文件的前几行,目录的总大小和前几个文件),然后提示进行删除

$ rip -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

打印从当前目录下删除的文件

$ rip -s
/tmp/graveyard-jack/home/jack/file1
/tmp/graveyard-jack/home/jack/dir1

解决名称冲突

$ touch file1
$ rip file1
$ rip -s
/tmp/graveyard-jack/home/jack/dir1
/tmp/graveyard-jack/home/jack/file1
/tmp/graveyard-jack/home/jack/file1~1

-u也可以接受墓地的文件路径

$ rip -u /tmp/graveyard-jack/home/jack/file1
Returned /tmp/graveyard-jack/home/jack/file1 to /home/jack/file1

结合-u和-s以恢复-s打印的所有内容

$ rip -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别名到rip。忘记肌肉记忆很难,但确保每次你执行的rm(作为不同的用户、来自不同的机器和应用环境)都是别名则更难。

我推荐的替代方案是给rm添加一个别名,它只是简单地提醒你使用rip

alias rm="echo Use 'rip' instead of rm."

墓地位置。

你可以通过运行rip graveyard来查看当前的墓地位置。如果你设置了环境变量$XDG_DATA_HOME,则rip将使用$XDG_DATA_HOME/graveyard而不是$TMPDIR/graveyard-$USER

如果你想把墓地放在其他地方(比如~/.local/share/Trash),你有两种优先级顺序的选项

  1. rip别名到rip --graveyard ~/.local/share/Trash
  2. 设置环境变量$RIP_GRAVEYARD~/.local/share/Trash

这可能是个好主意,因为如果墓地挂载在内存文件系统上(比如Arch Linux中的/tmp),删除大文件会迅速填满你的RAM。在SSD上移动文件也慢得多,尽管延迟应该很小。

其他。

一般来说,删除后跟一个--unbury应该是幂等的。

删除日志保存在墓地顶层的.record中。

依赖关系

~3.5MB
~59K SLoC