1 个不稳定版本

0.2.0 2024年6月10日

#2#atuin

Download history 199/week @ 2024-06-04 731/week @ 2024-06-11 383/week @ 2024-06-18 343/week @ 2024-06-25 278/week @ 2024-07-02 298/week @ 2024-07-09 231/week @ 2024-07-16 243/week @ 2024-07-23 263/week @ 2024-07-30

1,078 每月下载量
用于 atuin

MIT 许可证

400KB
9K 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!

[!NOTE]

对于 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 是构建守护程序所需的,这是默认启用的。这是因为我们使用 protobuf 进行消息序列化

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 中(≥ 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

[!NOTE]

bash-preexec 无法正确调用子shell命令的 preexec 钩子、函数定义、空 for-in 语句等,因此这些命令可能不会被 Atuin 的历史记录所记录。

bash-preexec 目前存在一个问题,即它将停止遵守 HISTCONTROL=ignorespace。虽然 Atuin 会忽略以空白字符开头的历史命令,但它们仍可能出现在您的 bash 历史记录中。请检查您的配置!所有其他 shell 都没有这个问题。

此外,某些命令的记录时长和退出状态可能会出现问题。

[!重要]

要使用 Atuin 在 bash < 4 与 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 制作。

依赖项

~58–91MB
~1.5M SLoC