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 操作系统

Download history 562/week @ 2024-05-04 449/week @ 2024-05-11 407/week @ 2024-05-18 456/week @ 2024-05-25 497/week @ 2024-06-01 1213/week @ 2024-06-08 655/week @ 2024-06-15 560/week @ 2024-06-22 603/week @ 2024-06-29 452/week @ 2024-07-06 502/week @ 2024-07-13 390/week @ 2024-07-20 953/week @ 2024-07-27 216/week @ 2024-08-03 247/week @ 2024-08-10 312/week @ 2024-08-17

每月 1,787 次下载

MIT 许可协议

690KB
15K SLoC

Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'

魔法般的 shell 历史记录


Arm CI sponsored by Actuated

英文 | 简体中文

Atuin 使用 SQLite 数据库替换您现有的 shell 历史记录,并记录您命令的附加上下文。此外,它还提供通过 Atuin 服务器进行可选且完全加密的历史记录同步功能。

animated

显示退出代码、持续时间、时间和命令

除了搜索界面,它还可以做类似这样的事情

# search for all successful `make` commands, recorded after 3pm yesterday
atuin search --exit 0 --after "yesterday 3pm" make

您可以使用我托管的服务器,也可以自己托管!或者根本不使用同步。由于所有历史记录同步都是加密的,即使我想,我也无法访问您的数据。而且我真的不想这么做。

特性

  • 重新绑定 ctrl-rup (可配置) 到全屏历史记录搜索界面
  • 将 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!

安装

打包状态 Packaging status

安装脚本将帮助您完成设置,确保您的 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