Skip to content

Repository files navigation

Linux Command Script Generator

一个零第三方依赖的 Python 小工具:把 commands/ 中的 .txt 命令清单转换为可单独复制、执行和记录日志的 Bash 脚本。

功能

  • 递归发现 commands/ 中的 TXT 文件,并生成同目录结构的 .sh 文件。
  • 使用 config/script_config.csv 为每份命令清单设置运行目录。
  • 自动为生成脚本记录开始时间、结束时间、退出码、标准输出和错误输出。
  • 日志实时显示在终端,同时追加到脚本旁的同名 .log 文件。
  • 支持 UTF-8、带 BOM 的 UTF-8,以及常见的 GB18030 中文文本。
  • 忽略去掉行首空白后以 # 开头的整行说明,同时保留命令内部的 #
  • Windows、Linux 和 macOS 均可运行生成器;生成结果使用 Bash 执行。

环境要求

  • Python 3.8 或更高版本
  • 执行生成脚本的 Linux/macOS 环境需要 Bash 和 tee

生成器只使用 Python 标准库。

快速开始

克隆仓库:

git clone https://github.com/yztshh/linux-command-script-generator.git
cd linux-command-script-generator

把命令写入 commands/ 下的一个或多个 TXT 文件。例如:

# 这一行是说明,不会写入生成脚本
pwd
uname -a
echo "Hello Linux"

Windows 可双击 run_generator.bat,或执行:

python generate_linux_scripts.py

Linux/macOS 可执行:

./run_generator.sh

如果入口文件刚从 Windows 复制过来且没有执行权限:

chmod +x run_generator.sh
./run_generator.sh

生成结果位于 output/。在 Linux 上可直接交给 Bash:

bash output/example.sh

也可以赋予执行权限后运行:

chmod +x output/example.sh
./output/example.sh

命令行参数

python generate_linux_scripts.py --all          生成全部脚本
python generate_linux_scripts.py --select 1     生成指定编号
python generate_linux_scripts.py --select 1,3-5 生成多个编号或范围
python generate_linux_scripts.py --list         只查看文件和配置

不带参数运行时,程序会显示命令清单并等待选择。输入 0 代表全部,输入 q 退出。

运行目录配置

首次运行后,程序会自动创建 config/script_config.csv

txt_file,work_dir
example.txt,~
install/app.txt,/opt/my-app
  • txt_file 是文件相对于 commands/ 的路径,不建议手工修改。
  • 留空或填写 ~:从当前 Linux 用户的家目录运行。
  • ~/project:从家目录下的 project 运行。
  • /opt/project:从绝对路径运行。
  • project/build:相对于当前 Linux 用户的 $HOME 解析。

新增 TXT 后再次运行程序,配置文件会自动补充新条目,已有配置保持不变。

日志

假设生成的是 output/example.sh,运行时会创建 output/example.log。日志采用追加模式,不会覆盖之前的记录。脚本所在目录必须可写。

生成脚本不会默认启用 set -e,所以普通命令失败后,后续命令仍会继续。需要遇错停止时,请在命令清单第一条加入:

set -e

非交互式脚本注意事项

生成脚本是非交互式 Bash。某些 Linux 发行版的 ~/.bashrc 会在非交互模式下提前返回,因此仅执行 source ~/.bashrc 不一定能加载 NVM 等工具。应直接加载工具的初始化文件,例如:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

安全提示

TXT 中的命令会以当前用户权限原样执行。运行前请检查生成脚本,不要运行来源不明的命令;包含 sudo、删除文件、修改服务或重启系统等操作时尤其需要谨慎。

项目结构

linux-command-script-generator/
├─ commands/                   TXT 命令清单
│  └─ example.txt              安全示例
├─ config/                     自动生成的本地配置
├─ output/                     自动生成的 Bash 脚本和日志
├─ tests/                      标准库单元测试
├─ generate_linux_scripts.py   主程序
├─ run_generator.bat           Windows 入口
├─ run_generator.sh            Linux/macOS 入口
└─ README.md

config/script_config.csv、生成脚本和日志默认被 Git 忽略,避免意外提交本地路径或执行记录。

开发检查

python -m unittest discover -s tests -v
python generate_linux_scripts.py --all

About

Generate portable Bash scripts with per-file working directories and automatic logs.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages