Atuin: 一款神奇的 Shell 历史记录管理工具,支持多终端实时同步-51CTO.COM
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.
一款神奇的 Shell 历史记录管理工具,支持多终端实时同步-51CTO.COM
除了通过 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 块中
- atuin search <query>
Atuin 搜索支持带有 * 或 % 字符的通配符。默认情况下,会执行前缀搜索(即,所有查询都会自动附加通配符)。
| 列出历史记录的目录(默认:所有目录) |
| 不包括在此目录中运行的命令(默认值:none) |
| 按退出代码过滤(默认:none) |
| 不包括以该值退出的命令(默认值:none) |
| 仅包括在此时间之前运行的命令(默认值:none) |
| 仅包含在此时间之后运行的命令(默认值:none) |
| 打开交互式搜索 UI(默认值:false) |
| 对时间戳和持续时间使用人类可读的格式(默认值: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
- 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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK