1 个不稳定版本
0.2.0 | 2024年6月10日 |
---|
#2 在 #atuin
1,078 每月下载量
用于 atuin
400KB
9K 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!
[!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!
安装
脚本(推荐使用)
安装脚本将帮助您完成设置,确保您的 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