13 个版本 (7 个重大更新)
新版本 0.8.2 | 2024 年 8 月 12 日 |
---|---|
0.8.1 | 2024 年 7 月 1 日 |
0.8.0 | 2024 年 5 月 7 日 |
在 命令行工具 中排名第 628
每月下载量 24 次
42KB
837 行
rip
是一个基于 Rust 的 rm
,侧重于安全性、易用性和性能。它倾向于简单的接口,并且不实现 xdg-trash 规范或尝试达到相同的目标。
被删除的文件会被发送到墓地 🪦(通常为 /tmp/graveyard-$USER
,有关更改此位置的说明,请参阅 说明),在其绝对路径下,这样您可以有机会恢复它们 🧟。不会覆盖任何数据。如果删除了具有相同路径的文件,它们将被重命名为编号备份。
本版本 "rip2" 是一个分支分支
- nivekuil/rip,原始版本,自 2020 年起未维护。
- StandingPadAnimation/rip,添加了一些功能。
- 最后,该存储库在 @here 上进行了分支,并持续维护
- 添加了对:Windows、NixOS 的支持
- 清理:重构为现代 Rust,合并原始存储库的 PR
- 测试:添加完整的测试套件和覆盖率监控
- 功能:彩色输出,会话中的日期和时间信息,
- 错误修复:FIFO 文件,会话问题
⚰️ 安装
此软件包支持 Linux、macOS 和 Windows。
Cargo
- 首先 安装 Rust。
- 然后,使用 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
),你有两种优先级顺序的选项
- 将
rip
别名到rip --graveyard ~/.local/share/Trash
- 设置环境变量
$RIP_GRAVEYARD
为~/.local/share/Trash
。
这可能是个好主意,因为如果墓地挂载在内存文件系统上(比如Arch Linux中的/tmp
),删除大文件会迅速填满你的RAM。在SSD上移动文件也慢得多,尽管延迟应该很小。
其他。
一般来说,删除后跟一个--unbury
应该是幂等的。
删除日志保存在墓地顶层的.record
中。
依赖关系
~3.5MB
~59K SLoC