37 个版本 (19 个稳定版本)
18.3.0 | 2024 年 6 月 10 日 |
---|---|
18.1.0 | 2024 年 3 月 11 日 |
17.2.1 | 2024 年 1 月 3 日 |
17.1.0 | 2023 年 12 月 12 日 |
0.4.0 | 2021 年 3 月 20 日 |
#32 in 操作系统
每月 1,787 次下载
690KB
15K SLoC
魔法般的 shell 历史记录
Atuin 使用 SQLite 数据库替换您现有的 shell 历史记录,并记录您命令的附加上下文。此外,它还提供通过 Atuin 服务器进行可选且完全加密的历史记录同步功能。
显示退出代码、持续时间、时间和命令
除了搜索界面,它还可以做类似这样的事情
# search for all successful `make` commands, recorded after 3pm yesterday
atuin search --exit 0 --after "yesterday 3pm" make
您可以使用我托管的服务器,也可以自己托管!或者根本不使用同步。由于所有历史记录同步都是加密的,即使我想,我也无法访问您的数据。而且我真的不想这么做。
特性
- 重新绑定
ctrl-r
和up
(可配置) 到全屏历史记录搜索界面 - 将 shell 历史记录存储在 sqlite 数据库中
- 备份和同步加密的 shell 历史记录
- 在终端、会话和机器之间共享相同的历史记录
- 记录退出代码、当前目录、主机名、会话、命令持续时间等
- 计算诸如“最常使用的命令”之类的统计信息
- 不替换旧的历史记录文件
- 使用 Alt-<num> 快速跳转到之前的项目
- 通过 ctrl-r 切换过滤模式;仅从当前会话、目录或全局搜索历史记录
- 按 Enter 执行命令,按 Tab 编辑
文档
支持的 Shell
- zsh
- bash
- fish
- nushell
- xonsh
社区
论坛
Atuin 有一个社区论坛,请在这里提问寻求帮助和支持:https://forum.atuin.sh/
Discord
Atuin 还有一个社区 Discord,可在此处找到。
快速入门
使用默认同步服务器
这将为您注册默认同步服务器,由我托管。所有内容都是端到端加密的,所以您的秘密是安全的!
有关离线使用或托管自己的服务器,请参阅下文。
# bash/zsh/etc
bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)
# fish
bash (curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh | psub)
atuin register -u <USERNAME> -e <EMAIL>
atuin import auto
atuin sync
然后重启您的 shell!
[!注意]
对于 Bash 用户:上面的设置为必要的钩子设置了
bash-preexec
,但bash-preexec
有局限性。有关详细信息,请参阅下文的 Bash 部分。
仅离线(无同步)
bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
atuin import auto
默认情况下,Atuin 会检查更新。您可以通过修改 config.toml
来禁用更新检查。请参阅此处。
然后重启您的 shell!
安装
脚本(推荐)
安装脚本将帮助您完成设置,确保您的 shell 配置正确。它还将使用以下方法之一,尽可能使用系统包管理器(pacman、homebrew 等)。
# do not run this as root, root will be asked for if required
bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
然后按照shell 设置进行操作。
使用 cargo
最好使用 rustup 设置 Rust 工具链,然后您可以运行
cargo install atuin
然后按照shell 设置进行操作。
守护进程构建依赖项
Protoc 是构建守护进程所必需的,默认启用。这是因为我们使用 protobufs 进行消息序列化。
Homebrew
brew install atuin
然后按照shell 设置进行操作。
MacPorts
Atuin 也可在 MacPorts 中找到。
sudo port install atuin
然后按照shell 设置进行操作。
洞穴
Atuin 可在 Exherbo Linux 的 rust 存储库 中找到。
cave resolve -x repository/rust
cave resolve -x atuin
Nix
此存储库是一个 flake,可以使用 nix profile
安装。
nix profile install "github:atuinsh/atuin"
Atuin 也可在 nixpkgs 中找到。
nix-env -f '<nixpkgs>' -iA atuin
然后按照shell 设置进行操作。
Pacman
Atuin 可在 Arch Linux 的 [extra] 存储库 中找到。
pacman -S atuin
然后按照shell 设置进行操作。
Xbps
Atuin 可在 Void Linux 的 存储库 中找到。
sudo xbps-install atuin
然后按照shell 设置进行操作。
Termux
Atuin 可在 Termux 软件包存储库中找到。
pkg install atuin
然后按照shell 设置进行操作。
从源代码
git clone https://github.com/atuinsh/atuin.git
cd atuin/crates/atuin
cargo install --path .
然后按照shell 设置进行操作。
Shell 插件
二进制文件安装完成后,shell 插件需要安装。如果您使用安装脚本,所有这些都应该为您完成!安装后,请记得重启您的 shell。
zsh
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
Zinit
zinit load atuinsh/atuin
Antigen
antigen bundle atuinsh/atuin@main
bash
当与 ble.sh 或 bash-preexec 结合使用时,Atuin 在 bash 中(bash >= 3.1)运行效果最佳。我们建议使用 Atuin 与 bash >= 5
的最新版本。
ble.sh
当使用 ble.sh >= 0.4 时,Atuin 在 bash 中的效果最佳。
安装 ble.sh (>= 0.4) 后,只需将 atuin 添加到您的 .bashrc 文件中
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
[!重要]
请确保上述行在 sourcing ble.sh 之后,以便 Atuin 能够检测到 ble.sh。
bash-preexec
Bash-preexec 也可以使用,但您可能会遇到一些小问题,如缺少命令、忽略 HISTCONTROL
、某些命令的错误记录持续时间以及退出状态。
要使用 bash-preexec,请下载并初始化它
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
然后设置 Atuin
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
[!注意]
bash-preexec 无法正确调用子shell命令的
preexec
钩子(...)
、函数定义func() { ...; }
、空 for-in 语句for i in; do ...; done
等,因此这些命令可能不会被记录在 Atuin 的历史记录中。bash-preexec 当前存在一个问题,即它将停止尊重
HISTCONTROL=ignorespace
。虽然 Atuin 会忽略以空白字符开头的命令,但它们仍可能出现在您的 bash 历史记录中。请检查您的配置!所有其他外壳都没有这个问题。此外,某些命令的记录时间和退出状态也可能存在问题。
[!重要]
要在 bash
bash < 4
中使用 Atuin 并与 bash-preexec 一起使用,需要打开enter_accept
选项(默认情况下已打开)。
fish
添加
atuin init fish | source
到您的 is-interactive
块中的 ~/.config/fish/config.fish
文件
Nushell
在 Nushell 中运行
mkdir ~/.local/share/atuin/
atuin init nu | save -f ~/.local/share/atuin/init.nu
添加到 config.nu
source ~/.local/share/atuin/init.nu
Xonsh
添加
execx($(atuin init xonsh))
到您的 ~/.xonshrc
的末尾
安全
如果您发现任何安全问题,我们非常感谢您向 [email protected] 报告
贡献者
使用 contrib.rocks 制作。
依赖项
~60–99MB
~2M SLoC