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"

六、避坑指南

  1. 路径分隔符
    • 统一使用 /(Windows CMD 兼容)
    • 含空格路径必须加引号:del "My Documents/tmp.txt"
  2. 递归删除风险
    • rm -rf /(Linux)和 del /s /q *(Win)不可逆
    • 操作前用 lsdir 确认目标
  3. 换行符问题
    • 现象:Windows 脚本用 CRLF\r\n),Linux 用 LF\n
    • 解决
      • Linux 转换:dos2unix script.sh
      • Windows 转换:PowerShell 执行 Get-Content script.sh \| Out-File -Encoding ASCII new.sh
  4. 环境变量作用域
    • Windows 临时变量:set VAR=value(仅当前 CMD 有效)
    • Linux 临时变量:export VAR=value(子进程可继承)
posted @ 2025-12-05 10:32  AJun816  阅读(2)  评论(0)    收藏  举报