3

Atuin: 一款神奇的 Shell 历史记录管理工具,支持多终端实时同步-51CTO.COM

 2 years ago
source link: https://os.51cto.com/article/708383.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一款神奇的 Shell 历史记录管理工具,支持多终端实时同步-51CTO.COM

Atuin: 一款神奇的 Shell 历史记录管理工具,支持多终端实时同步
作者:atuin 2022-05-09 09:11:36
Atuin 使用 SQLite 数据库取代了你现有的 shell 历史,并为你的命令记录了额外的内容,可以通过一个非常美观的 UI 界面进行操作。。此外,它还通过 Atuin 服务器,在节点之间提供可选的、完全加密的历史记录同步功能。
e97d22992f6a4249c74413071b71e1fda354e9.jpg

除了通过 UI 进行搜索之外,还可以通过命令来进行更细粒度的搜索控制,比如搜索昨天下午3点之后记录的所有成功的 make 命令,则可以使用下面的命令:

atuin search --exit 0 --after "yesterday 3pm" make

你可以使用作者托管的服务器,也可以使用自己的服务器!或者干脆不使用 sync 功能也可以。所有的历史记录同步都是加密的,所以数据安全方面完全不用担心。

  • 重新绑定 up 和 ctrl-r 的全屏历史记录搜索 UI 界面
  • 使用 sqlite 数据库存储 shell 历史记录
  • 备份以及同步已加密的 shell 历史记录
  • 在不同的终端、不同的会话以及不同的机器上都有相同的历史记录
  • 记录退出代码、cwd、主机名、会话、命令持续时间,等等。
  • 计算统计数据,如 "最常用的命令"。
  • 不替换旧的历史文件
  • 通过Alt-<num>快捷键快速跳转到之前的记录
  • 通过 ctrl-r 切换过滤模式;可以仅从当前会话、目录或全局来搜索历史记录
  • 支持的 Shells:zsh、bash、fish

使用默认的同步服务器

这将为您注册由项目作者托管的默认同步服务器。一切都是端到端加密的,所以你的信息是安全的!

bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>
atuin import auto
atuin sync

仅离线 (不同步)

bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
atuin import auto

脚本方式 (推荐)

安装脚本将帮助您完成设置,确保您的 shell 正确配置。

# 不要以root身份运行,如果需要的话,会要求root。
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)

使用cargo

最好使用 rustup 来设置 Rust 工具链,然后你就可以运行下面的命令:

cargo install atuin

Homebrew

brew install atuin

MacPorts

Atuin 也可以在 MacPorts 中找到

sudo port install atuin

Pacman

Atuin 在 Arch Linux 的 社区存储库 中可用。

pacman -S atuin

从源码编译安装

git clone https://github.com/ellie/atuin.git
cd atuin
cargo install --path .

Shell 插件

安装二进制文件后,需要安装 shell 插件。如果你使用的是脚本安装,那么这一切应该都会帮您完成!

echo 'eval "$(atuin init zsh)"' >> ~/.zshrc

或使用插件管理器:

zinit load ellie/atuin

我们需要设置一些钩子(hooks), 所以首先需要安装 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
atuin init fish | source

到 ~/.config/fish/config.fish 文件中的 is-interactive 块中

  1. atuin search <query>

Atuin 搜索支持带有 * 或 % 字符的通配符。默认情况下,会执行前缀搜索(即,所有查询都会自动附加通配符)。

​--cwd/-c​

列出历史记录的目录(默认:所有目录)

​--exclude-cwd​

不包括在此目录中运行的命令(默认值:none)

​--exit/-e​

按退出代码过滤(默认:none)

​--exclude-exit​

不包括以该值退出的命令(默认值:none)

​--before​

仅包括在此时间之前运行的命令(默认值:none)

​--after​

仅包含在此时间之后运行的命令(默认值:none)

​--interactive/-i​

打开交互式搜索 UI(默认值:false)

​--human/-h​

对时间戳和持续时间使用人类可读的格式(默认值:false)

# 打开交互式搜索 TUI  
atuin search -i
# 打开预装了查询的交互式搜索 TUI
atuin search -i atuin
# 搜索所有以 cargo 开头且成功退出的命令。
atuin search --exit 0 cargo
# 从当前目录中搜索所有在2021年4月1日之前运行且失败的命令。
atuin search --exclude-exit 0 --before 01/04/2021 --cwd .
#搜索所有以 cargo 开头,成功退出且是在昨天下午3点之后运行的命令。
atuin search --exit 0 --after "yesterday 3pm" cargo
  1. atuin sync 手动触发同步

Atuin 可以将您的历史记录备份到服务器,并使用它来确保多台机器具有相同的 shell 历史记录。这都是端到端加密的,因此服务器操作员_永远_看不到您的数据!

任何人都可以托管一个服务器(尝试 atuin server start,更多文档将在后面介绍),但作者在 https://api.atuin.sh 上托管了一个。这是默认的服务器地址,也可以进行更改。同样,我_不能_看到您的数据,也不想。

注册一个同步账号

atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>

用户名(USERNAME)必须是唯一的,电子邮件(EMAIL)仅用于重要通知(安全漏洞、服务更改等),注册后,意味着你也已经登录了 :) 同步应该从这里自动发生!

由于你的数据是加密的, Atuin 将为你生成一个密钥。它被存储在 Atuin 的数据目录里( Linus 上为 ~/.local/share/atuin)

你也可以通过以下方式获得它

atuin key

千万不要跟任何人分享密钥!

如果你想登录到一个新的机器上,你需要你的加密密钥(atuin key)。

atuin login -u <USERNAME> -p <PASSWORD> -k <KEY>
atuin logout

GitHub 仓库:https://github.com/ellie/atuin


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK