Windows/Linux 脚本开发速查表
目录
Windows/Linux 脚本开发速查表
概述
以下为整合后的 Windows/Linux 常用脚本集合,涵盖基础命令、常用常量、流程控制、文件操作、权限管理及跨平台脚本模板,采用极简示例与对比表格,便于快速查阅:
一、基础命令对比(极简示例)
| 功能 | Windows 命令 | Linux 命令 |
|---|---|---|
| 列目录 | dir |
ls |
| 切换目录 | cd \path |
cd /path |
| 复制文件 | copy src dst |
cp src dst |
| 删除文件 | del file |
rm file |
| 压缩文件 | tar -cf data.zip dir |
zip data.zip dir |
| 解压文件 | tar -xf data.zip |
unzip data.zip |
路径分隔符兼容技巧:
跨平台脚本统一用/(Windows 支持C:/test格式)
二、常用常量/环境变量速查表
| 常量类型 | Windows 批处理 | Linux Shell | 使用场景 |
|---|---|---|---|
| 脚本目录 | %~dp0 |
$(dirname "$0") |
跨平台路径拼接:%~dp0/logs → $(dirname "$0")/logs |
| 所有参数 | %* |
$@ |
遍历参数时保留空格(Linux) |
| 错误状态 | %ERRORLEVEL% |
$? |
错误处理:if %errorlevel% neq 0(Win) |
| 临时目录 | %TEMP% |
$TMPDIR |
跨平台临时文件生成:echo > %TEMP%/tmp.log |
| 用户目录 | %USERPROFILE% |
$HOME |
配置文件存储:~/.config(Linux) |
| 随机数 | %RANDOM% |
$RANDOM |
生成1-100随机数:$((RANDOM%100+1))(Linux) |
三、流程控制语法
1. 条件判断
:: Windows(检查文件存在)
if exist "file.txt" ( echo 存在 ) else ( echo 不存在 )
# Linux(检查文件存在)
if [ -f "file.txt" ]; then echo "存在"; else echo "不存在"; fi
2. 循环结构
:: Windows遍历文件
for %%i in (*.txt) do echo %%i
# Linux遍历文件
for file in *.txt; do echo "$file"; done
3. 函数定义
:: Windows函数
:say_hello
echo Hello, %1!
goto :eof
:: 调用:call :say_hello "Alice"
# Linux函数
say_hello() { echo "Hello, $1!"; }
# 调用:say_hello "Alice"
四、文件操作进阶
1. 目录与文件管理
| 操作 | Windows | Linux |
|---|---|---|
| 递归创建目录 | mkdir a\b\c(需逐级创建) |
mkdir -p a/b/c |
| 递归删除目录 | rmdir /s /q dir |
rm -rf dir |
| 查看文件内容 | type file |
cat file |
| 实时日志监控 | findstr "error" log.txt |
`tail -f log.txt |
2. 权限管理差异
| 权限类型 | Windows | Linux |
|---|---|---|
| 文件只读 | attrib +r file.txt |
chmod u-w file.txt |
| 可执行文件 | (扩展名决定) | chmod +x script.sh |
| 权限标志 | 完全控制/修改/读取 | rwx(用户/组/其他) |
五、跨平台脚本模板
Windows:日志清理工具
@echo off
set LOG_DIR=%~dp0/logs
forfiles /p "%LOG_DIR%" /s /m *.log /d -7 /c "cmd /c del @path"
echo [%DATE%] 清理完成 >> "%LOG_DIR%/clean.log"
Linux:自动备份工具
#!/bin/bash
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR" || exit 1
cp -r /data/* "$BACKUP_DIR"
tar -czf "$BACKUP_DIR.tar.gz" "$BACKUP_DIR"
rm -rf "$BACKUP_DIR"
六、避坑指南
- 路径分隔符
- 统一使用
/(Windows CMD 兼容) - 含空格路径必须加引号:
del "My Documents/tmp.txt"
- 统一使用
- 递归删除风险
rm -rf /(Linux)和del /s /q *(Win)不可逆- 操作前用
ls或dir确认目标
- 换行符问题
- 现象:Windows 脚本用
CRLF(\r\n),Linux 用LF(\n) - 解决
- Linux 转换:
dos2unix script.sh - Windows 转换:PowerShell 执行
Get-Content script.sh \| Out-File -Encoding ASCII new.sh
- Linux 转换:
- 现象:Windows 脚本用
- 环境变量作用域
- Windows 临时变量:
set VAR=value(仅当前 CMD 有效) - Linux 临时变量:
export VAR=value(子进程可继承)
- Windows 临时变量:
登峰造极的成就源于自律

浙公网安备 33010602011771号