22 个版本 (6 个重大更改)

0.7.5 2024 年 5 月 31 日
0.7.3 2024 年 4 月 29 日
0.6.1 2024 年 3 月 29 日
0.1.0 2023 年 10 月 13 日

#27命令行工具

Download history 336/week @ 2024-04-26 26/week @ 2024-05-03 6/week @ 2024-05-17 126/week @ 2024-05-24 141/week @ 2024-05-31 9/week @ 2024-06-07 3/week @ 2024-06-14 1/week @ 2024-06-21 2/week @ 2024-06-28 13/week @ 2024-07-05

每月 1,789 次下载

MIT 许可证

565KB
11K SLoC

OhCrab! 🦀

ohcrab 是将知名的 CLI 工具 thefuck 移植到我们心爱的 Rust 语言。

ohcrab in action

目录

  1. 安装
  2. 用法
  3. 贡献
  4. 路线图

安装

目前,有两种安装方法

  1. 下载二进制文件
  2. 使用 cargo 安装

以下是如何使用这些方法之一进行安装的说明。

下载二进制文件

按照以下步骤下载并使用您操作系统和架构的预编译二进制文件安装软件包

下载文件

二进制文件可在 发布页面资源 部分找到。根据您的系统下载相应的二进制文件

  • ohcrab_x86_64_unknown_linux_gnu_vx.x.x.bin:此二进制文件适用于具有 64 位英特尔处理器的 Linux 设备。
  • ohcrab_i686_unknown_linux_gnu_vx.x.x.bin:此二进制文件适用于具有 32 位英特尔处理器的 Linux 设备。
  • ohcrab_aarch64_unknown_linux_gnu_vx.x.x.bin:此二进制文件适用于具有 ARM 64 位处理器的 Linux 设备(如 Raspberry Pi 3/4)。
  • ohcrab_x86_64_apple_darwin_vx.x.x.bin:此二进制文件适用于运行 macOS 的具有 64 位英特尔处理器的 Apple 设备。
  • ohcrab_aarch64_apple_darwin_vx.x.x.bin:此二进制文件适用于运行 macOS 的 Apple 设备(如 M1 Mac)。
  • ohcrab_i686_unknown_freebsd_vx.x.x.bin:此二进制文件适用于具有 32 位英特尔处理器的 FreeBSD 设备。
  • ohcrab_x86_64_unknown_freebsd_vx.x.x.bin:此二进制文件适用于具有 64 位英特尔处理器的 FreeBSD 设备。

使二进制文件可执行

下载二进制文件后,您需要使其可执行。使用以下命令

chmod +x <BINARY_NAME>

<BINARY_NAME> 替换为您的下载二进制文件的名称。

将二进制文件移动到 /opt

我们建议将二进制文件移动到 /opt 目录,并将其重命名为 ohcrab。使用以下命令

sudo mv <BINARY_NAME> /opt/ohcrab

最后,从您的 PATH 目录之一(如 /usr/local/bin)创建一个指向二进制文件的符号链接。使用以下命令

sudo ln -s /opt/<BINARY_NAME> /usr/local/bin/

现在,您应该能够通过在终端中键入 ohcrab 来运行您的程序。

前往将ohcrab添加到您的环境中以完成安装。

从cargo安装

先决条件

目前,您只能通过cargo来安装ohcrab。如果您还没有安装cargo,可以按照https://doc.rust-lang.net.cn/cargo/getting-started/installation.html的说明进行安装。

安装软件包

您可以使用cargo来安装ohcrab

cargo install ohcrab

将ohcrab添加到您的环境中

为了让ohcrab在您的终端中工作,您需要导出正确的shell函数。目前,我们支持bashzsh。将相应的命令复制并粘贴到您的终端中

  • 对于bash,使用
eval $(ohcrab --shell bash)
  • 对于zsh,使用
eval $(ohcrab --shell zsh)

注意:为了让每次打开终端时都加载ohcrab,请将上面的eval命令添加到您的.bash_profile、.bashrc、.zshrc或其他启动脚本中。

更改别名

上面的命令使用默认别名(crab)从终端调用ohcrab。您可以通过传递--alias NEW_ALIAS来使用自己的别名NEW_ALIAS。例如,如果您想在zsh中使用shinycrab作为别名,请使用

eval $(ohcrab --shell zsh --alias shinycrab)

用法

在终端中,输入错误命令后,输入crab(或您在导出ohcrab步骤中选择的别名)。它将显示一个菜单,从中选择正确的命令。

贡献

如果您喜欢ohcrab并/或想学习rust,您可以通过添加新规则或改进crate来做出贡献。

路线图

  • 添加sudo支持
  • 为Linux、MacOs和Windows分发二进制文件。
  • 制作其功能的简短屏幕记录
  • 当生成ohcrab shell功能时,通知用户正在使用哪种shell类型。
  • 添加对用户shell别名的支持。
  • 添加对PowerShell的支持
  • 减少依赖项的数量/大小
  • 通过软件包管理器提供
  • 与thefuck进行基准测试
  • 添加交互式菜单以设置ohcrab(参见问题#74
  • 添加集成测试(参见问题#81

规则

实现
  • ag_literal
  • apt_get
  • apt_get_search
  • apt_list_upgradable
  • apt_upgrade
  • aws_cli
  • az_cli
  • brew_install
  • brew_link
  • brew_reinstall
  • brew_uninstall
  • brew_update_formula
  • cargo
  • cargo_no_command
  • cat_dir
  • cd_correction
  • cd_cs
  • cd_mkdir
  • cd_parent
  • chmod_x
  • choco_install
  • composer_not_command
  • conda_mistype
  • cp_create_destination
  • cp_omitting_directory
  • cpp11
  • dirty_untar
  • django_south_ghost
  • django_south_merge
  • docker_image_being_used_by_container
  • docker_login
  • dry
  • fix_alt_space
  • git_add
  • git_add_force
  • git_bisect_usage
  • git_branch_0flag
  • git_branch_delete
  • git_branch_delete_checked_out
  • git_branch_exists
  • git_branch_list
  • git_checkout
  • git_clone_git_clone
  • git_clone_missing
  • git_commit_add
  • git_commit_amend
  • git_commit_reset
  • git_diff_no_index
  • git_diff_staged
  • git_fix_stash
  • git_flag_after_filename
  • git_help_aliased
  • git_hook_bypass
  • git_lfs_mistype
  • git_main_master
  • git_merge
  • git_merge_unrelated
  • git_not_command
  • git_pull
  • git_pull_clone
  • git拉取未提交的更改
  • git推送
  • git推送不同分支名称
  • git强制推送
  • git推送和拉取
  • git推送不带提交
  • git变基合并目录
  • git变基无更改
  • git删除远程
  • git远程设置URL添加
  • git删除本地修改
  • git递归删除
  • git删除暂存
  • git储藏
  • git储藏弹出
  • git标签强制
  • git双短横线
  • go运行
  • gradle包装器
  • grep参数顺序
  • grep递归
  • 存在脚本
  • heroku多个应用
  • heroku不是命令
  • 历史记录
  • hostscli
  • java
  • javac
  • lein非任务
  • ln无硬链接
  • ln_s顺序
  • 长格式帮助
  • ls_all
  • ls_lah
  • man
  • man无空格
  • mercurial
  • mkdir_p
  • maven无命令
  • maven未知生命周期阶段
  • nixos命令未找到
  • 无命令
  • 无此文件
  • npm缺少脚本
  • npm运行脚本
  • php_s
  • pip安装
  • pip未知命令
  • prove递归
  • python命令
  • python执行
  • python模块错误
  • 引号
  • rail迁移挂起
  • 移除shell提示文字
  • rm目录
  • sudo
  • sudo命令来自用户路径
  • tmux
  • unsudo
待实现
  • adb未知命令
  • apt无效操作
  • brew_cask依赖
  • brew未知命令
  • 脏的unzip
  • dnf无此命令
  • docker非命令
  • fab命令未找到
  • fix_file
  • gem未知命令
  • go未知命令
  • gradle无任务
  • grunt任务未找到
  • gulp非任务
  • ifconfig设备未找到
  • 子命令前缺少空格
  • npm错误命令
  • omnienv无此命令
  • open
  • pacman
  • pacman无效选项
  • pacman未找到
  • 从历史记录中获取路径
  • 端口已在使用中
  • react_native命令未识别
  • 移除尾部重音符号
  • rm_root
  • scm更正
  • sed未终止s
  • sl_ls
  • ssh_known_hosts
  • switch_lang
  • systemctl
  • terraform_init
  • terraform无命令
  • 测试
  • touch
  • tsuru登录
  • tsuru不是命令
  • 未知命令
  • vagrant_up
  • whois
  • workon不存在
  • 子命令前错误连字符
  • yarn别名
  • yarn命令未找到
  • yarn命令替换
  • yarn帮助
  • yum无效操作

依赖

~5–16MB
~211K SLoC