如何编写快捷命令扩展脚本

wen 实用脚本 1

本文目录导读:

如何编写快捷命令扩展脚本

  1. Windows 平台
  2. Linux/macOS 平台
  3. 跨平台工具
  4. 配置管理
  5. 最佳实践建议
  6. 常用命令
  7. 扩展方法
  8. 高级特性

我来详细介绍如何编写快捷命令扩展脚本,涵盖不同平台和方法。

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

扩展方法

  1. 在 commands/ 目录下添加新脚本
  2. 更新 main.ps1 导入
  3. 添加到文档

高级特性

命令自动补全

# 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 "创建目录"

这些方法可以根据你的需求组合使用,创建高效、易维护的快捷命令系统,记得定期备份和版本管理你的脚本文件。

抱歉,评论功能暂时关闭!