10 个版本

0.2.7 2023年6月20日
0.2.6 2023年5月23日
0.1.3 2023年3月20日

#2393 in 命令行工具

Download history 25/week @ 2024-06-03 20/week @ 2024-06-10 5/week @ 2024-06-17 2/week @ 2024-07-08 8/week @ 2024-07-15 45/week @ 2024-07-29

每月55次下载

Apache-2.0

220KB
3K SLoC

IntelliShell

像 IntelliSense 一样,但适用于 shell!

intelli-shell demo

IntelliShell 就像是一个命令书签存储库,这样你就不必保持你的历史记录整洁,以便能够使用 ctrl + R 找到有用的东西。

它目前适用于 Bash、Zsh、Fish 和 PowerShell,并且应该与大多数 Linux、Windows 和 MacOS 兼容。

TL;DR

  1. 安装二进制文件

    curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.sh | bash
    
  2. 在终端中输入并使用 ctrl + b 将你的第一个命令添加为书签

  3. (可选) 运行 intelli-shell fetchtldr 下载命令

  4. ctrl + space 开始你的旅程!

特性

  • 独立二进制文件
  • 自动完成当前输入的命令
    • 在命令和描述中进行全文搜索,支持描述中的哈希标签
  • 查找并替换当前输入命令的标签
  • 编辑书签命令并提供别名
  • 非侵入式(内联)和全屏界面
  • tldr 页面获取命令进行解析和存储(感谢他们!)
  • 便携性。你可以在任何支持的 shell 中使用书签命令,以及在其他地方导出和导入。

安装

请记住在安装后添加一些命令或获取它们!

要跳过配置文件更新,请在安装前将环境变量 INTELLI_SKIP_PROFILE 设置为 1

Bash (Linux)

curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.sh | bash

使用 bash 安装后,它应在任何支持的 shell 中工作。

PowerShell (Windows)

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
irm https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.ps1 | iex

使用 powershell 安装后,它也应适用于 cmd(不带快捷键)。

源代码

要从源代码安装,你需要安装 Rust,建议使用 rustup 进行安装。

cargo install intelli-shell --locked

要启用快捷键,需要额外的步骤

Linux

下载源脚本

  • Bash / Zsh

    mkdir -p ~/.local/share/intelli-shell/bin
    curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.sh > ~/.local/share/intelli-shell/bin/intelli-shell.sh
    
  • Fish

    mkdir -p ~/.local/share/intelli-shell/bin
    curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.fish > ~/.local/share/intelli-shell/bin/intelli-shell.fish
    

编辑您的配置文件以加载它

  • Bash / Zsh: ~/.bashrc, ~/.zshrc~/.bash_profile

    source ~/.local/share/intelli-shell/bin/intelli-shell.sh
    
  • Fish: ~/.config/fish/config.fish

    source ~/.local/share/intelli-shell/bin/intelli-shell.fish
    
Windows

也下载源脚本

New-Item -Path $env:APPDATA\IntelliShell\Intelli-Shell\data\bin -Type Directory
Invoke-WebRequest -UseBasicParsing -URI "https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.ps1" -OutFile $env:APPDATA\IntelliShell\Intelli-Shell\data\bin\intelli-shell.ps1

编辑您的 $Profile 以执行它

. $env:APPDATA\IntelliShell\Intelli-Shell\data\bin\intelli-shell.ps1

用法

您可以通过运行 intelli-shell -h 查看支持的命令。最常用的独立命令是

  • intelli-shell fetch [category] 用于获取 tldr 命令并将其存储。 [category] 可以省略或 tldr 的 pages 中的有效文件夹
  • intelli-shell export 用于导出用户书签命令(不会导出 tldr 的命令)
  • intelli-shell import user_commands.txt 用于将命令导入用户类别

快捷键

  • ctrl + b 书签当前输入的命令
  • ctrl + space 显示当前行的建议
  • ctrl + l 替换当前输入命令的标签
  • esc 清除当前行,如果 INTELLI_SKIP_ESC_BIND=1 则可以跳过此绑定

注意:在导航项目时,可以按 ctrl + d 删除选定的建议或使用以下任意一个进行编辑: ctrl + ectrl + uF2

您可以使用环境变量自定义键绑定: INTELLI_BOOKMARK_HOTKEYINTELLI_SEARCH_HOTKEYINTELLI_LABEL_HOTKEY

技巧

  • 当搜索条件与别名匹配或产生单个结果时,它将自动完成!

    • 如果命令包含标签,标签 UI 仍然会显示
  • 您可以将常用命令设置为别名以存储某种类型的收藏标签,例如将 cd {{path}} 设置为 cd 别名

    • 您可以经常使用 cd,但如果按 ctrl + space,它将显示您的“固定”文件夹
  • 长命令甚至函数也可以被书签

    • 例如 function custom_echo () { echo "hey: $@"; }; custom_echo {{text}};
  • 您可以在 '*' : echo {{*my-secret*}} 之间包装标签以避免存储并保持它们秘密

  • 标签建议基于根命令和标签名称存储,这为您提供了灵活的决策能力。

    对于这两个命令,将建议相同的图像

    • docker run{{--rm}} {{--交互式}} {{镜像}}
    • docker rmi{{--没有-修剪}} {{镜像}}

    但是这两个命令将建议不同的卷

    • docker run--{{镜像-1-}}镜像-1
    • docker run--{{镜像-2-}} -p{{镜像-2-端口}}镜像-2

愿望清单

  • 支持标签存储常用标签,并使用专用UI选择它们
  • 提高可用性以管理存储的命令(包括别名)
  • 支持更多终端
  • 导出标签和UI以过滤要导出的内容
  • 部署到包管理器
  • 使用某些公共/私有Git仓库同步用户书签

替代方案

您可能想看看Marker,它与IntelliShell非常相似,但需要在您的系统上安装Python。

许可证

IntelliShell采用Apache许可证第2版授权。有关完整的许可证文本,请参阅LICENSE

依赖项

~33–49MB
~824K SLoC