Skip to content

DKCopy/clash-for-linux-install

 
 

Repository files navigation

Linux 一键安装 Clash

本项目 fork 自 nelvko/clash-for-linux-install

感谢原作者 @nelvko 的出色工作!本 fork 在原项目基础上进行了功能改进和增强。

GitHub License GitHub top language GitHub Repo stars

preview

✨ 功能特性

本 Fork 新增功能

  • clash.sh 节点切换工具:命令行快速切换节点,支持批量测试延迟、自动选择最快节点、交互式选择等功能。
  • 订阅切换优化clashsub use 命令支持序号选择,提供更友好的交互式订阅切换体验。
  • 订阅管理增强:支持本地文件订阅(file:// 协议)、格式化列表显示、智能删除(--force 选项)、订阅转换(--convert 选项)等。

原项目功能

  • 支持一键安装 mihomoclash 代理内核。
  • 兼容 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            显示帮助信息

💡clashonclashctl onTab 补全更方便!

优雅启停

$ clashon
😼 已开启代理环境

$ clashoff
😼 已关闭代理环境
  • 在启停代理内核的同时,同步设置系统代理。
  • 亦可通过 clashproxy 单独控制系统代理。

Web 控制台

$ 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 端口转发方式进行安全访问。

Mixin 配置

$ clashmixin
😼 查看 Mixin 配置

$ clashmixin -e
😼 编辑 Mixin 配置

$ clashmixin -c
😼 查看原始订阅配置

$ clashmixin -r
😼 查看运行时配置
  • 通过 Mixin 自定义的配置内容会与原始订阅进行深度合并,且 Mixin 具有最高优先级,最终生成内核启动时加载的运行时配置。
  • Mixin 支持以前置、后置或覆盖的方式,对原始订阅中的规则、节点及策略组进行新增或修改。

升级内核

$ clashupgrade
😼 请求内核升级...
{"status":"ok"}
😼 内核升级成功
  • 升级过程由代理内核自动完成;如需查看详细的升级日志,可添加 -v 参数。
  • 建议通过 clashmixingithub 配置代理规则,以避免因网络问题导致请求失败。

管理订阅

$ 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 进行修改和管理

Tun 模式

$ clashtun
😾 Tun 状态:关闭

$ clashtun on
😼 Tun 模式已开启
  • 作用:实现本机及 Docker 等容器的所有流量路由到 clash 代理、DNS 劫持等。
  • 原理:clash-verge-revclash.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 pick

依赖要求

  • jq - JSON 处理工具
  • curl - HTTP 客户端
  • yq - YAML 处理工具(可选,用于自动读取配置)

安装依赖:

# Debian/Ubuntu
apt install jq curl

# CentOS/RHEL
yum install jq curl

# macOS
brew install jq curl

🗑️ 卸载

bash uninstall.sh

📝 更新日志

最近更新 (2026-03-06)

本次更新优化了订阅切换体验:

功能改进

  • clashsub use 支持序号选择,表格格式显示订阅列表(带 ✓ 状态标记)
  • ✨ 智能输入识别:自动判断输入是序号还是 ID

2026-03-05

本次更新修复了多个 bug 并改进了用户体验:

主要修复

  • ✅ 修复本地文件订阅支持(file:// 协议)
  • ✅ 修复订阅重复检查逻辑错误
  • ✅ 修复订阅更新参数处理 bug
  • ✅ 修复 ID 类型不一致问题

功能改进

  • ✨ 订阅列表格式化显示(表格形式,带状态标记)
  • ✨ 删除订阅时支持 --force 选项
  • ✨ 订阅添加支持 --convert 选项
  • ✨ 订阅日志带颜色高亮显示

详细更新内容请查看 CHANGELOG.md

📖 常见问题

👉 Wiki · FAQ

🔗 引用

⭐ Star History

Star History Chart

🙏 Thanks

@鑫哥

⚠️ 特别声明

  1. 编写本项目主要目的为学习和研究 Shell 编程,不得将本项目中任何内容用于违反国家/地区/组织等的法律法规或相关规定的其他用途。
  2. 本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。

About

😼 优雅地使用基于 clash/mihomo 的代理环境

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 100.0%