本项目 fork 自 nelvko/clash-for-linux-install
感谢原作者 @nelvko 的出色工作!本 fork 在原项目基础上进行了功能改进和增强。
- clash.sh 节点切换工具:命令行快速切换节点,支持批量测试延迟、自动选择最快节点、交互式选择等功能。
- 订阅切换优化:
clashsub use命令支持序号选择,提供更友好的交互式订阅切换体验。 - 订阅管理增强:支持本地文件订阅(
file://协议)、格式化列表显示、智能删除(--force选项)、订阅转换(--convert选项)等。
- 支持一键安装
mihomo与clash代理内核。 - 兼容
root与普通用户环境。 - 适配主流
Linux发行版,并兼容AutoDL等容器化环境。 - 自动检测端口占用情况,在冲突时随机分配可用端口。
- 自动识别系统架构与初始化系统,下载匹配的内核与依赖,并生成对应的服务管理配置。
- 在需要时调用 subconverter 进行本地订阅转换。
- 没有订阅?click me
Usage:
clashctl COMMAND [OPTIONS]
Commands:
on 开启代理
off 关闭代理
status 内核状况
proxy 系统代理
ui Web 面板
secret Web 密钥
sub 订阅管理
upgrade 升级内核
tun Tun 模式
mixin Mixin 配置
Global Options:
-h, --help 显示帮助信息💡clashon 同 clashctl on,Tab 补全更方便!
$ clashon
😼 已开启代理环境
$ clashoff
😼 已关闭代理环境- 在启停代理内核的同时,同步设置系统代理。
- 亦可通过
clashproxy单独控制系统代理。
$ clashui
╔═══════════════════════════════════════════════╗
║ 😼 Web 控制台 ║
║═══════════════════════════════════════════════║
║ ║
║ 🔓 注意放行端口:9090 ║
║ 🏠 内网:http://192.168.0.1:9090/ui ║
║ 🌏 公网:http://8.8.8.8:9090/ui ║
║ ☁️ 公共:http://board.zash.run.place ║
║ ║
╚═══════════════════════════════════════════════╝
$ clashsecret mysecret
😼 密钥更新成功,已重启生效
$ clashsecret
😼 当前密钥:mysecret- 可通过浏览器打开
Web控制台进行可视化操作,例如切换节点、查看日志等。 - 默认使用 zashboard 作为控制台前端,如需更换可自行配置。
- 若需将控制台暴露到公网,建议定期更换访问密钥,或通过
SSH端口转发方式进行安全访问。
$ clashmixin
😼 查看 Mixin 配置
$ clashmixin -e
😼 编辑 Mixin 配置
$ clashmixin -c
😼 查看原始订阅配置
$ clashmixin -r
😼 查看运行时配置- 通过
Mixin自定义的配置内容会与原始订阅进行深度合并,且Mixin具有最高优先级,最终生成内核启动时加载的运行时配置。 Mixin支持以前置、后置或覆盖的方式,对原始订阅中的规则、节点及策略组进行新增或修改。
$ clashupgrade
😼 请求内核升级...
{"status":"ok"}
😼 内核升级成功- 升级过程由代理内核自动完成;如需查看详细的升级日志,可添加
-v参数。 - 建议通过
clashmixin为github配置代理规则,以避免因网络问题导致请求失败。
$ clashsub -h
Usage:
clashsub COMMAND [OPTIONS]
Commands:
add <url> 添加订阅
ls 查看订阅
del <id> 删除订阅
use <id> 使用订阅
update [id] 更新订阅
log 订阅日志
Options:
add:
--convert 强制使用订阅转换
update:
--auto 配置自动更新
--convert 使用订阅转换
del:
--force 强制删除(自动切换到其他订阅)$ clashsub ls
ID 状态 订阅链接
── ──── ────────
1 ✓ https://example.com/subscription
2 file:///root/config.yaml- 列表显示订阅 ID、使用状态(✓ 表示正在使用)和订阅链接
- 过长的 URL 会自动截断显示
# 添加在线订阅
$ clashsub add https://example.com/subscription
# 添加本地订阅
$ clashsub add file:///root/clashctl/resources/config.yaml
# 强制使用订阅转换
$ clashsub add <url> --convert- 支持添加本地订阅,使用
file://协议 - 当订阅链接解析失败或包含特殊字符时,请使用引号包裹以避免被错误解析
- 使用
--convert选项可强制通过订阅转换服务处理
# 删除订阅
$ clashsub del <id>
# 强制删除正在使用的订阅(自动切换到其他订阅)
$ clashsub del <id> --force- 删除正在使用的订阅时,会提示可用的其他订阅
- 使用
--force选项可自动切换到其他订阅后再删除 - 无法删除唯一的订阅
$ clashsub log [行数]- 显示订阅操作历史,带颜色高亮
- 默认显示最近 20 条记录
- 自动更新任务可通过
crontab -e进行修改和管理
$ clashtun
😾 Tun 状态:关闭
$ clashtun on
😼 Tun 模式已开启- 作用:实现本机及
Docker等容器的所有流量路由到clash代理、DNS 劫持等。 - 原理:clash-verge-rev、 clash.wiki。
- 注意事项:#100
项目提供了 clash.sh 工具,用于在命令行快速切换 Clash 节点。
- 自动从 clashctl 配置读取连接信息
- 支持交互式选择节点
- 批量测试节点延迟
- 自动选择最快节点
- 彩色输出,用户体验友好
# 查看所有代理组
$ ./clash.sh groups
# 列出某个代理组的所有节点
$ ./clash.sh nodes Proxy
# 切换到指定节点
$ ./clash.sh switch Proxy '香港 01'
# 交互式选择节点(推荐)
$ ./clash.sh pick
# 测试节点延迟
$ ./clash.sh delay '香港 01'
# 批量测试所有节点延迟(按延迟排序)
$ ./clash.sh test-all Proxy
# 自动选择最快节点
$ ./clash.sh auto Proxy# 使用环境变量覆盖配置
CLASH_HOST=192.168.1.100 CLASH_PORT=9090 CLASH_SECRET=xxx ./clash.sh pick
# 或导出环境变量
export CLASH_HOST=192.168.1.100
export CLASH_PORT=9090
export CLASH_SECRET=xxx
./clash.sh pickjq- JSON 处理工具curl- HTTP 客户端yq- YAML 处理工具(可选,用于自动读取配置)
安装依赖:
# Debian/Ubuntu
apt install jq curl
# CentOS/RHEL
yum install jq curl
# macOS
brew install jq curlbash uninstall.sh本次更新优化了订阅切换体验:
功能改进:
- ✨
clashsub use支持序号选择,表格格式显示订阅列表(带 ✓ 状态标记) - ✨ 智能输入识别:自动判断输入是序号还是 ID
本次更新修复了多个 bug 并改进了用户体验:
主要修复:
- ✅ 修复本地文件订阅支持(
file://协议) - ✅ 修复订阅重复检查逻辑错误
- ✅ 修复订阅更新参数处理 bug
- ✅ 修复 ID 类型不一致问题
功能改进:
- ✨ 订阅列表格式化显示(表格形式,带状态标记)
- ✨ 删除订阅时支持
--force选项 - ✨ 订阅添加支持
--convert选项 - ✨ 订阅日志带颜色高亮显示
详细更新内容请查看 CHANGELOG.md
- 编写本项目主要目的为学习和研究
Shell编程,不得将本项目中任何内容用于违反国家/地区/组织等的法律法规或相关规定的其他用途。 - 本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。
