讨论

#!/bin/bash # 专家级 Linux Bash 脚本生成器 # 设置严格模式 set -euo pipefail IFS=$'\n\t' # 颜色定义 readonly RED='\033[0;31m' readonly GREEN='\033[0;32m' readonly YELLOW='\033[1;33m' readonly BLUE='\033[0;34m' readonly MAGENTA='\033[0;35m' readonly CYAN='\033[0;36m' readonly WHITE='\033[1;37m' readonly NC='\033[0m' # 无颜色 # 日志函数 log_info() { echo -e "${GREEN}[信息]${NC} $*" } log_warn() { echo -e "${YELLOW}[警告]${NC} $*" } log_error() { echo -e "${RED}[错误]${NC} $*" >&2 } log_debug() { if [[ "${DEBUG:-false}" == "true" ]]; then echo -e "${BLUE}[调试]${NC} $*" fi } log_success() { echo -e "${GREEN}[成功]${NC} $*" } # 错误处理 trap 'log_error "脚本在第 ${LINENO} 行出错"' ERR # 检查 root 权限 check_root() { if [[ $EUID -ne 0 ]]; then log_error "此脚本需要 root 权限运行" exit 1 fi } # 检查命令是否存在 check_command() { local cmd="$1" if ! command -v "$cmd" &> /dev/null; then log_error "命令 '$cmd' 未找到,请先安装" exit 1 fi } # 确认操作 confirm_action() { local prompt="$1" local response read -p "$prompt [y/N]: " response case "$response" in [yY][eE][sS]|[yY]) return 0 ;; *) return 1 ;; esac } # 备份文件 backup_file() { local file="$1" if [[ -f "$file" ]]; then cp "$file" "${file}.backup.$(date +%Y%m%d_%H%M%S)" log_info "已备份 $file 到 ${file}.backup.$(date +%Y%m%d_%H%M%S)" fi } # 显示进度条 show_progress() { local current="$1" local total="$2" local width=50 local percentage=$((current * 100 / total)) local filled=$((current * width / total)) local empty=$((width - filled)) printf "\r[" printf "%${filled}s" '' | tr ' ' '=' printf "%${empty}s" '' | tr ' ' ' ' printf "] %d%%" "$percentage" } # 获取系统信息 get_system_info() { log_info "系统信息:" echo "主机名: $(hostname)" echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)" echo "内核版本: $(uname -r)" echo "CPU 架构: $(uname -m)" echo "内存: $(free -h | awk '/^Mem:/ {print $2}')" echo "磁盘使用: $(df -h / | awk 'NR==2 {print $5}')" } # 主菜单 show_menu() { clear echo "==========================================" echo " 专家级 Linux Bash 脚本生成器" echo "==========================================" echo "1. 系统信息" echo "2. 系统更新" echo "3. 磁盘管理" echo "4. 日志管理" echo "5. 进程管理" echo "6. 网络工具" echo "7. 备份工具" echo "8. 退出" echo "==========================================" } # 系统更新 system_update() { log_info "开始系统更新..." if [[ -f /etc/debian_version ]]; then apt update && apt upgrade -y elif [[ -f /etc/redhat-release ]]; then yum update -y elif [[ -f /etc/arch-release ]]; then pacman -Syu --noconfirm else log_error "不支持的发行版" return 1 fi log_success "系统更新完成" } # 磁盘管理 disk_management() { echo "磁盘使用情况:" df -h echo -e "\n磁盘分区信息:" lsblk echo -e "\n磁盘 I/O 统计:" iostat 2>/dev/null || echo "iostat 未安装" } # 日志管理 log_management() { echo "系统日志:" journalctl --since "1 hour ago" --no-pager 2>/dev/null | tail -50 echo -e "\n日志文件大小:" du -sh /var/log/* 2>/dev/null | sort -rh | head -10 } # 进程管理 process_management() { echo "CPU 使用率最高的 10 个进程:" ps aux --sort=-%cpu | head -11 echo -e "\n内存使用率最高的 10 个进程:" ps aux --sort=-%mem | head -11 } # 网络工具 network_tools() { echo "网络接口:" ip addr show | grep -E "^[0-9]+:|inet " echo -e "\n网络连接:" ss -tuln echo -e "\nDNS 配置:" cat /etc/resolv.conf } # 备份工具 backup_tools() { local backup_dir="/backup/$(date +%Y%m%d)" mkdir -p "$backup_dir" echo "开始备份重要目录..." # 备份 /etc if confirm_action "备份 /etc 目录?"; then tar -czf "$backup_dir/etc.tar.gz" /etc 2>/dev/null log_success "已备份 /etc 到 $backup_dir/etc.tar.gz" fi # 备份 /home if confirm_action "备份 /home 目录?"; then tar -czf "$backup_dir/home.tar.gz" /home 2>/dev/null log_success "已备份 /home 到 $backup_dir/home.tar.gz" fi # 备份数据库(如果存在) if command -v mysqldump &> /dev/null; then if confirm_action "备份 MySQL 数据库?"; then mysqldump --all-databases > "$backup_dir/mysql_backup.sql" 2>/dev/null log_success "已备份 MySQL 数据库" fi fi log_info "备份完成,备份文件位于 $backup_dir" } # 主函数 main() { # 检查是否以 root 运行 if [[ $EUID -ne 0 ]]; then log_warn "某些功能需要 root 权限" fi while true; do show_menu read -p "请选择操作 [1-8]: " choice case $choice in 1) get_system_info ;; 2) system_update ;; 3) disk_management ;; 4) log_management ;; 5) process_management ;; 6) network_tools ;; 7) backup_tools ;; 8) log_info "感谢使用,再见!" exit 0 ;; *) log_error "无效选项,请重新选择" ;; esac echo read -p "按回车键继续..." done } # 执行主函数 main "$@"

来自 Wikiprompt,自由的提示词百科全书

viardant

2025年12月11日

#!/bin/bash # 专家级 Linux Bash 脚本生成器 # 设置严格模式 set -euo pipefail IFS=$'\n\t' # 颜色定义 readonly RED='\033[0;31m' readonly GREEN='\033[0;32m' readonly YELLOW='\033[1;33m' readonly BLUE='\033[0;34m' readonly MAGENTA='\033[0;35m' readonly CYAN='\033[0;36m' readonly WHITE='\033[1;37m' readonly NC='\033[0m' # 无颜色 # 日志函数 log_info() { echo -e "${GREEN}[信息]${NC} $*" } log_warn() { echo -e "${YELLOW}[警告]${NC} $*" } log_error() { echo -e "${RED}[错误]${NC} $*" >&2 } log_debug() { if [[ "${DEBUG:-false}" == "true" ]]; then echo -e "${BLUE}[调试]${NC} $*" fi } log_success() { echo -e "${GREEN}[成功]${NC} $*" } # 错误处理 trap 'log_error "脚本在第 ${LINENO} 行出错"' ERR # 检查 root 权限 check_root() { if [[ $EUID -ne 0 ]]; then log_error "此脚本需要 root 权限运行" exit 1 fi } # 检查命令是否存在 check_command() { local cmd="$1" if ! command -v "$cmd" &> /dev/null; then log_error "命令 '$cmd' 未找到,请先安装" exit 1 fi } # 确认操作 confirm_action() { local prompt="$1" local response read -p "$prompt [y/N]: " response case "$response" in [yY][eE][sS]|[yY]) return 0 ;; *) return 1 ;; esac } # 备份文件 backup_file() { local file="$1" if [[ -f "$file" ]]; then cp "$file" "${file}.backup.$(date +%Y%m%d_%H%M%S)" log_info "已备份 $file 到 ${file}.backup.$(date +%Y%m%d_%H%M%S)" fi } # 显示进度条 show_progress() { local current="$1" local total="$2" local width=50 local percentage=$((current * 100 / total)) local filled=$((current * width / total)) local empty=$((width - filled)) printf "\r[" printf "%${filled}s" '' | tr ' ' '=' printf "%${empty}s" '' | tr ' ' ' ' printf "] %d%%" "$percentage" } # 获取系统信息 get_system_info() { log_info "系统信息:" echo "主机名: $(hostname)" echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)" echo "内核版本: $(uname -r)" echo "CPU 架构: $(uname -m)" echo "内存: $(free -h | awk '/^Mem:/ {print $2}')" echo "磁盘使用: $(df -h / | awk 'NR==2 {print $5}')" } # 主菜单 show_menu() { clear echo "==========================================" echo " 专家级 Linux Bash 脚本生成器" echo "==========================================" echo "1. 系统信息" echo "2. 系统更新" echo "3. 磁盘管理" echo "4. 日志管理" echo "5. 进程管理" echo "6. 网络工具" echo "7. 备份工具" echo "8. 退出" echo "==========================================" } # 系统更新 system_update() { log_info "开始系统更新..." if [[ -f /etc/debian_version ]]; then apt update && apt upgrade -y elif [[ -f /etc/redhat-release ]]; then yum update -y elif [[ -f /etc/arch-release ]]; then pacman -Syu --noconfirm else log_error "不支持的发行版" return 1 fi log_success "系统更新完成" } # 磁盘管理 disk_management() { echo "磁盘使用情况:" df -h echo -e "\n磁盘分区信息:" lsblk echo -e "\n磁盘 I/O 统计:" iostat 2>/dev/null || echo "iostat 未安装" } # 日志管理 log_management() { echo "系统日志:" journalctl --since "1 hour ago" --no-pager 2>/dev/null | tail -50 echo -e "\n日志文件大小:" du -sh /var/log/* 2>/dev/null | sort -rh | head -10 } # 进程管理 process_management() { echo "CPU 使用率最高的 10 个进程:" ps aux --sort=-%cpu | head -11 echo -e "\n内存使用率最高的 10 个进程:" ps aux --sort=-%mem | head -11 } # 网络工具 network_tools() { echo "网络接口:" ip addr show | grep -E "^[0-9]+:|inet " echo -e "\n网络连接:" ss -tuln echo -e "\nDNS 配置:" cat /etc/resolv.conf } # 备份工具 backup_tools() { local backup_dir="/backup/$(date +%Y%m%d)" mkdir -p "$backup_dir" echo "开始备份重要目录..." # 备份 /etc if confirm_action "备份 /etc 目录?"; then tar -czf "$backup_dir/etc.tar.gz" /etc 2>/dev/null log_success "已备份 /etc 到 $backup_dir/etc.tar.gz" fi # 备份 /home if confirm_action "备份 /home 目录?"; then tar -czf "$backup_dir/home.tar.gz" /home 2>/dev/null log_success "已备份 /home 到 $backup_dir/home.tar.gz" fi # 备份数据库(如果存在) if command -v mysqldump &> /dev/null; then if confirm_action "备份 MySQL 数据库?"; then mysqldump --all-databases > "$backup_dir/mysql_backup.sql" 2>/dev/null log_success "已备份 MySQL 数据库" fi fi log_info "备份完成,备份文件位于 $backup_dir" } # 主函数 main() { # 检查是否以 root 运行 if [[ $EUID -ne 0 ]]; then log_warn "某些功能需要 root 权限" fi while true; do show_menu read -p "请选择操作 [1-8]: " choice case $choice in 1) get_system_info ;; 2) system_update ;; 3) disk_management ;; 4) log_management ;; 5) process_management ;; 6) network_tools ;; 7) backup_tools ;; 8) log_info "感谢使用,再见!" exit 0 ;; *) log_error "无效选项,请重新选择" ;; esac echo read -p "按回车键继续..." done } # 执行主函数 main "$@" 一个系统提示,指示AI生成高质量、可投入生产的Bash脚本,包含错误处理、彩色输出和完整参数支持。

提示词内容收藏

🌐
我是Linux脚本开发专家。我会根据你描述的工作流创建专业的Bash脚本,包含错误处理、彩色输出、全面的参数处理与帮助标志、适当的文档,并遵循Shell脚本最佳实践,以确保代码干净、健壮、高效且易于维护。我会包含有意义的注释,并确保脚本兼容常见的Linux发行版。

登录后即可复制此提示词并保存到你的收藏

登录

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| prompts.chat| bash-scripting| linux-automation

讨论