本文目录导读:

我来详细介绍如何编写快捷命令扩展脚本,涵盖不同平台和方法。
Windows 平台
PowerShell 脚本(推荐)
创建一个自定义命令脚本:
# my-commands.ps1
# 自定义命令集
# 快速打开常用文件夹
function Open-Work {
Set-Location "D:\Projects\Work"
Write-Host "📂 已切换到工作目录" -ForegroundColor Green
}
# 快速查看系统信息
function Show-SysInfo {
Write-Host "=== 系统信息 ===" -ForegroundColor Cyan
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsArchitecture
}
# 批量重命名文件
function Rename-Files {
param(
[string]$Prefix = "file_",
[string]$Path = "."
)
Get-ChildItem $Path -File | ForEach-Object {
$newName = $Prefix + $_.Name
Rename-Item $_.FullName -NewName $newName
Write-Host "✅ 已重命名: $($_.Name) → $newName"
}
}
# 快速创建项目结构
function New-Project {
param([string]$ProjectName)
if ([string]::IsNullOrEmpty($ProjectName)) {
Write-Host "❌ 请指定项目名称: New-Project MyApp" -ForegroundColor Red
return
}
$paths = @("src", "tests", "docs", "build")
New-Item -Path $ProjectName -ItemType Directory -Force | Out-Null
foreach ($path in $paths) {
New-Item -Path "$ProjectName\$path" -ItemType Directory -Force | Out-Null
}
Write-Host "✅ 项目 $ProjectName 已创建" -ForegroundColor Green
}
注册 PowerShell 模块
# 保存到模块目录
# $env:USERPROFILE\Documents\PowerShell\Modules\MyCommands\MyCommands.psm1
# 加载模块
Import-Module MyCommands
# 自动加载(添加到 PowerShell profile)
if (Test-Path "$env:USERPROFILE\Documents\PowerShell\Microsoft.PowerShell_profile.ps1") {
Add-Content $PROFILE "`nImport-Module MyCommands"
} else {
New-Item -Path $PROFILE -ItemType File -Force
Add-Content $PROFILE "Import-Module MyCommands"
}
CMD 批处理脚本
@echo off :: quick-commands.bat :menu cls echo ======================================== echo 快捷命令集 echo ======================================== echo 1. 打开工作目录 echo 2. 启动开发环境 echo 3. 清理临时文件 echo 4. 备份项目 echo 5. 显示网络信息 echo 6. 退出 echo ======================================== set /p choice=请选择操作: if "%choice%"=="1" goto open_work if "%choice%"=="2" goto start_dev if "%choice%"=="3" goto clean_temp if "%choice%"=="4" goto backup if "%choice%"=="5" goto network if "%choice%"=="6" goto end :open_work cd /d D:\Projects\Work echo 已切换到工作目录 pause goto menu :start_dev start cmd /k "code ." start cmd /k "npm run dev" echo 开发环境已启动 pause goto menu :clean_temp del /q /s %TEMP%\* echo 临时文件已清理 pause goto menu :end echo 再见!
Linux/macOS 平台
Bash 脚本
#!/bin/bash
# ~/.bashrc 或 ~/.bash_profile 中添加
# 常用目录快捷方式
alias work='cd ~/Projects/Work'
alias docs='cd ~/Documents'
alias dev='cd ~/Projects/dev'
# Git 快捷命令
alias gs='git status'
alias ga='git add .'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph'
# 系统快捷命令
alias update='sudo apt update && sudo apt upgrade'
alias clean='sudo apt autoremove && sudo apt autoclean'
alias myip='curl ifconfig.me'
# 函数:创建并进入新目录
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 函数:快速查找文件
ff() {
find . -name "$1" -type f 2>/dev/null
}
# 函数:压缩备份
backup() {
if [ -z "$1" ]; then
echo "用法: backup <目录名>"
return 1
fi
tar -czf "$1_$(date +%Y%m%d).tar.gz" "$1"
echo "已备份 $1"
}
创建独立命令脚本
#!/bin/bash # /usr/local/bin/sysinfo # 系统信息快速查看工具 echo "系统信息:" uname -a echo "" echo "CPU:" lscpu | grep "Model name" echo "" echo "内存使用:" free -h echo "" echo "磁盘使用:" df -h | grep -v tmpfs
添加执行权限和使用
# 添加执行权限 chmod +x /usr/local/bin/sysinfo # 直接使用 sysinfo
跨平台工具
Python 脚本(跨平台)
#!/usr/bin/env python3
# quick_commands.py
# 跨平台快捷命令工具
import os
import sys
import platform
import subprocess
class QuickCommands:
def __init__(self):
self.system = platform.system()
def open_editor(self, path="."):
"""打开代码编辑器"""
if self.system == "Windows":
os.system(f"code {path}")
else:
os.system(f"code {path}")
def create_project(self, name):
"""创建新项目"""
os.makedirs(name, exist_ok=True)
for folder in ["src", "tests", "docs"]:
os.makedirs(f"{name}/{folder}", exist_ok=True)
print(f"✅ 项目 {name} 已创建")
def clear_cache(self):
"""清理缓存"""
if self.system == "Windows":
os.system("cleanmgr /sagerun:1")
else:
os.system("sudo apt clean && sudo apt autoremove")
print("缓存已清理")
def show_menu(self):
"""显示菜单"""
while True:
print("\n=== 快捷命令工具 ===")
print("1. 打开编辑器")
print("2. 创建项目")
print("3. 清理缓存")
print("4. 退出")
choice = input("请选择: ")
if choice == "1":
path = input("输入路径(默认当前目录): ")
self.open_editor(path or ".")
elif choice == "2":
name = input("输入项目名称: ")
self.create_project(name)
elif choice == "3":
self.clear_cache()
elif choice == "4":
break
else:
print("无效选择")
if __name__ == "__main__":
app = QuickCommands()
app.show_menu()
配置管理
统一的命令配置文件
# commands.yaml
# 集中管理快捷命令
commands:
# 项目相关
- name: init_project
description: 初始化项目结构
windows: "python scripts/init_project.py"
linux: "./scripts/init_project.sh"
macos: "./scripts/init_project.sh"
# 部署相关
- name: deploy
description: 部署到服务器
windows: "powershell deploy.ps1"
linux: "./deploy.sh"
macos: "./deploy.sh"
# 测试相关
- name: run_tests
description: 运行所有测试
windows: "python -m pytest"
linux: "python3 -m pytest"
macos: "python3 -m pytest"
Python 配置加载器
# command_loader.py
import yaml
import platform
import subprocess
class CommandLoader:
def __init__(self, config_file="commands.yaml"):
with open(config_file, 'r') as f:
self.config = yaml.safe_load(f)
self.system = platform.system().lower()
def get_command(self, name):
"""获取对应平台的命令"""
for cmd in self.config['commands']:
if cmd['name'] == name:
key = self.system if self.system in cmd else 'windows'
return cmd[key]
return None
def execute(self, name):
"""执行命令"""
cmd = self.get_command(name)
if cmd:
print(f"执行: {cmd}")
subprocess.run(cmd, shell=True)
else:
print(f"命令 {name} 不存在")
最佳实践建议
组织脚本结构
scripts/
├── commands/
│ ├── common/ # 通用命令
│ │ ├── git.ps1
│ │ ├── file.ps1
│ │ └── system.ps1
│ ├── project/ # 项目相关
│ │ └── init.ps1
│ └── deploy/ # 部署相关
│ └── deploy.ps1
├── config/
│ └── settings.json
└── main.ps1 # 主入口
版本管理
# 初始化 git 仓库记录脚本 cd ~/my-commands git init git add . git commit -m "初始化快捷命令集" # 创建分支管理不同环境 git checkout -b dev-env git checkout -b prod-env
文档化
# 快捷命令使用文档 ## 安装 ```powershell # Windows Invoke-Expression (Get-Content ~/my-commands/init.ps1 -Raw)
常用命令
| 命令 | 功能 | 示例 |
|---|---|---|
work |
切换到工作目录 | work |
new-project |
创建新项目 | new-project MyApp |
deploy |
部署项目 | deploy production |
扩展方法
- 在 commands/ 目录下添加新脚本
- 更新 main.ps1 导入
- 添加到文档
高级特性
命令自动补全
# bash 自动补全示例
_complete_mycommands() {
local cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "work docs dev deploy build" -- "$cur") )
}
complete -F _complete_mycommands mycmd
错误处理
#!/bin/bash
# 带错误处理的命令脚本
set -e # 出错立即退出
# 定义错误处理函数
error_handler() {
echo "❌ 错误发生在第 $1 行"
echo "命令: $2"
echo "退出码: $?"
exit 1
}
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
# 命令主体
echo "开始执行..."
mkdir -p "$HOME/backup" || error_handler $LINENO "创建目录"
这些方法可以根据你的需求组合使用,创建高效、易维护的快捷命令系统,记得定期备份和版本管理你的脚本文件。