shellfirm
哎呀 你 又做错了? :scream: :scream: :cold_sweat:
如何从自己手里拯救自己?
rm -rf *
git reset --hard
在按下 Enter 键之前?kubectl delete ns
停止!你将删除很多资源。- 还有更多!
你想从别人的错误中学习吗?
shellfirm
会拦截任何风险模式,立即提示一个小挑战来双重验证你的操作,就像是你终端里的验证码。
rm -rf /
#######################
# 发现高风险命令 #
#######################
* 你将删除路径中的所有内容。
解决挑战:8 + 0 = ? (按 ^C 取消)
它是如何工作的?
shellfirm
会在幕后评估所有的 shell 命令。
如果检测到风险模式,你会立即收到相关警告提示以验证你的命令。
示例
设置你的 shell
通过 brew 安装
brew tap kaplanelad/tap && brew install shellfirm
或者从 releases 页面下载二进制文件,解压并移动到 /usr/local/bin
文件夹。
验证 shellfirm 安装
shellfirm --version
验证安装
mkdir /tmp/shellfirm
cd /tmp/shellfirm
git reset --hard
选择你的 shell
Oh My Zsh
下载 zsh 插件:curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.oh-my-zsh.zsh --create-dirs -o ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/shellfirm/shellfirm.plugin.zsh
在载入 Zsh 的时候把 shellfirm
添加到 Oh My Zsh 插件列表中(在 ~/.zshrc 文件内):
plugins=(... shellfirm)
Bash
Bash 实现基于 https://github.com/rcaloras/bash-preexec 项目,该项目添加了一个 pre-exec hook 来在执行命令之前捕获命令。# 下载 bash-preexec hook 函数
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
# 在 bash 配置文件的末尾添加 source 我们的文件(例如 ~/.bashrc, ~/.profile 或 ~/.bash_profile)
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
# 下载 shellfirm pre-exec 函数
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.sh -o ~/.shellfirm-plugin.sh
# 在 shell 初始化时加载 pre-exec 命令
echo 'source ~/.shellfirm-plugin.sh' >> ~/.bashrc
fish
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.fish -o ~/.config/fish/conf.d/shellfirm.plugin.fish
Zsh
# 将 shellfirm 添加到 conf.d fishshell 文件夹
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.zsh -o ~/.shellfirm-plugin.sh
echo 'source ~/.shellfirm-plugin.sh' >> ~/.zshrc
:information_source: 打开一个新的 shell 会话
:eyes: :eyes: 验证安装 :eyes: :eyes:
你应该会收到一个 shellfirm
提示挑战。
如果你没有收到提示挑战:
- 确保
shellfirm --version
返回有效响应。 - 确保你下载了 Zsh 插件,并在 .zshrc 中添加到了 Oh My Zsh 插件列表中。
高风险命令
我们预定义了一组默认启用的高风险命令组,这些命令是可能具有破坏性的高风险命令。
组 | 默认启用 |
---|---|
base | true |
git | true |
fs | true |
fs-strict | false |
kubernetes | false |
kubernetes-strict | false |
heroku | false |
terraform | false |
添加/移除新的组检查
shellfirm config update-groups
更改挑战:
当前我们支持三种不同的挑战,当拦截到高风险命令时:
Math
- 默认挑战,要求解决一个数学问题。Enter
- 只需按Enter
继续。Yes
- 需要输入yes
继续。
你可以通过运行以下命令更改默认挑战:
shellfirm config challenge
任何时候你都可以通过按 ^C
取消高风险命令
忽略模式:
你可以通过运行以下命令禁用选择的组中的一个或多个模式:
shellfirm config ignore
拒绝模式命令:
通过选择不允许在 shell 中运行的模式 ID,来限制用户运行命令:
shellfirm config deny
升级 shellfirm
brew upgrade shellfirm
贡献
感谢你对贡献的兴趣!请参考 贡献指南 获取指导。
版权
版权 (c) 2022 @kaplanelad。详情请参阅 LICENSE。