Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Setup Tool

这是一个用于初始化 Ubuntu 开发环境的 Bash 脚本集合,能够自动安装常用开发工具,并配置 zsh、tmux、vim 与可选的 Neovim 环境。脚本支持静默模式、预览模式、卸载模式,并通过日志记录主脚本操作过程。

特性

  • 安装常用编程工具和开发环境
  • 安装并配置 oh-my-zsh
  • 配置 tmux、vim 用户配置
  • 可选安装并配置 Neovim
  • 支持静默模式、预览模式和部分卸载功能
  • 支持运行日志记录
  • 覆盖部分用户配置前会创建备份文件

支持环境

当前脚本面向以下环境:

  • Ubuntu 或基于 apt 的 Ubuntu 兼容环境
  • Bash
  • sudo 权限
  • 可访问 Ubuntu apt 软件源

WSL 可能可用,但当前仓库尚未明确验证完整 WSL 兼容性。

使用方法

1. 克隆仓库获取工具

git clone https://github.com/storious/ubuntu-setup-tool.git
cd ubuntu-setup-tool

2. 运行主初始化脚本

默认情况下,脚本将以详细模式运行,输出到终端并记录到以当前日期命名的日志文件中。

bash common.sh

查看可用命令和参数:

bash common.sh --help

3. 可选参数

参数 说明
--help, -h 显示帮助信息
--quiet, -q 以静默模式运行脚本,隐藏命令输出
--dry-run 预览将执行的操作,不执行系统修改命令
--with-ssh 初始化时启用并启动 SSH 服务;默认不启用
--uninstall 卸载或移除脚本管理的部分配置

4. 示例

详细模式执行初始化:

bash common.sh

静默模式执行初始化:

bash common.sh --quiet

预览初始化操作,不实际执行系统修改命令:

bash common.sh --dry-run

初始化并启用 SSH 服务:

bash common.sh --with-ssh

卸载脚本管理的部分配置:

bash common.sh --uninstall

预览卸载操作:

bash common.sh --dry-run --uninstall

安装并配置 Neovim:

bash nvim_setup.sh

预览 Neovim 安装与配置操作:

bash nvim_setup.sh --dry-run

日志记录

每次运行 common.sh,都会将输出日志保存在以当前日期命名的 .log 文件中。日志文件会记录脚本的主要操作步骤,便于排查问题。

# 日志文件示例
2026-06-04.log

脚本功能

common.sh

主初始化脚本会执行以下操作:

  1. 请求并验证 sudo 权限;在 --dry-run 模式下跳过实际验证
  2. 执行 apt-get update
  3. 执行 apt-get upgrade
  4. 安装基础开发工具和 CLI 工具,包括:
    • ssh
    • build-essential
    • vim
    • gcc-doc
    • gdb
    • wget
    • ripgrep
    • valgrind
    • bear
    • git
    • tmux
    • zsh
    • curl
  5. 默认仅安装 ssh 包,不启用 SSH 服务;如传入 --with-ssh,则启用并启动 ssh 服务
  6. pkg/ 复制 oh-my-zsh、zsh 插件和主题资源
  7. 复制 config/.zshrc~/.zshrc
  8. 将默认 Shell 切换为 zsh
  9. 复制 config/.vimrc~/.vimrc
  10. 复制 tmux 配置到 ~/.config/tmux/
  11. 执行 apt-get autoremove --purge

nvim_setup.sh

Neovim 安装脚本支持:

参数 说明
--help, -h 显示帮助信息
--dry-run 预览将执行的 Neovim 安装与配置操作,不执行系统修改命令

Neovim 安装脚本会执行以下操作:

  1. 添加 ppa:neovim-ppa/unstable
  2. 安装 neovimpython3-devpython3-pip
  3. 检查 Neovim 是否包含 Lua 支持
  4. 创建 ~/.config/nvim
  5. 复制 config/nvim 配置到用户 Neovim 配置目录

当前 Neovim 配置目标版本为 >= 0.12,附带基础配置,支持文件浏览、代码补全、LSP 管理和 Lua 配置。

安全说明

该工具会修改用户系统和用户目录配置。运行前请确认你理解以下影响:

  • 会使用 sudo 安装和升级 apt 软件包
  • 默认仅安装 ssh 包,不启用 SSH 服务;传入 --with-ssh 时会启用并启动 ssh 服务
  • 会尝试将默认 Shell 修改为 zsh
  • 会写入用户目录下的配置文件
  • 会复制仓库内的 pkg/config/ 资源到用户目录
  • nvim_setup.sh 会添加 Neovim unstable PPA

--dry-run 可用于预览 common.shnvim_setup.sh 将执行的命令,不会执行 apt 安装、服务启用、文件复制、删除或移动等系统修改命令。common.sh 仍会通过日志函数输出内容,并可能生成当天的 .log 文件。

建议首次运行前备份重要 dotfiles 和 Neovim/tmux/zsh 配置。

配置覆盖与备份策略

common.sh 在覆盖以下文件前,会将已存在的文件移动为带时间戳的备份文件:

  • ~/.zshrc
  • ~/.vimrc
  • ~/.config/tmux/tmux.conf
  • ~/.config/tmux/tmux.conf.local

备份文件示例:

~/.zshrc.bak.20260604120000

nvim_setup.sh 在覆盖已有 Neovim 配置前,也会将 ~/.config/nvim 移动为带时间戳的备份目录,例如:

~/.config/nvim.bak.20260604120000

卸载范围

bash common.sh --uninstall 当前主要处理以下内容:

  • 调用 ~/.oh-my-zsh/tools/uninstall.sh,如果不存在则尝试手动删除 ~/.oh-my-zsh~/.zshrc
  • 将 tmux 配置移动为 .bak 文件:
    • ~/.config/tmux/tmux.conf
    • ~/.config/tmux/tmux.conf.local

卸载模式不会保证完整恢复系统到运行脚本前的状态,也不会自动卸载所有 apt 软件包或回滚 apt-get upgrade 的结果。

验证与开发检查

修改脚本后,建议优先运行一键检查:

make check

也可以直接运行检查脚本:

bash scripts/check.sh

检查内容包括:

bash -n common.sh
bash -n nvim_setup.sh
bash -n scripts/check.sh
shellcheck common.sh nvim_setup.sh scripts/check.sh
shfmt -i 4 -d common.sh nvim_setup.sh scripts/check.sh
bash common.sh --help
bash common.sh --dry-run --uninstall
bash common.sh --dry-run --with-ssh
bash nvim_setup.sh --help
bash nvim_setup.sh --dry-run

如需自动格式化 Bash 脚本,可运行:

make format

完整安装/卸载测试建议在一次性 Ubuntu 虚拟机、容器或测试环境中执行,避免影响个人工作机。

注意事项

  • 该脚本需要 sudo 权限执行,以安装、升级和卸载系统软件或配置。
  • 默认安装的开发环境包括 zsh、tmux、vim、git、curl 等工具。
  • 如需 Neovim,单独运行 bash nvim_setup.sh
  • 在执行脚本前,请确保系统有足够磁盘空间,并确认可以访问所需软件源。
  • 如果你不需要某些工具,可以根据需要修改脚本中的软件包列表。

参考项目

许可

该项目遵循 MIT License。

About

📚 A simple ubuntu live-server setup script include zsh, tmux and neovim (v0.12.0+) with basic config. 一个简单的 ubuntu 系统开发环境初始化脚本

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages