欢迎来到我的二次元小站~

Linux常用命令查询工具(好记性不如烂笔头)

一、脚本编写

以下是一个实用的中文查询Linux常用命令的Shell脚本,支持中文关键词模糊匹配,展示命令名称、用途和常用示例。脚本包含了文件操作、系统管理、网络操作等高频命令,且交互友好:

#!/bin/bash
# 中文查询Linux常用命令脚本
# 支持中文关键词模糊匹配,展示命令说明和示例

# 设置字符编码,确保中文正常显示
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

# 定义命令数据库(格式:"中文关键词|命令|用途|示例")
declare -A cmd_database=(
    ["文件查看|查看文件|cat"]="cat|查看文件内容|cat file.txt  # 查看文件全部内容\ncat -n file.txt  # 显示行号查看"
    ["复制|拷贝|cp"]="cp|复制文件/目录|cp file.txt /tmp/  # 复制文件到tmp目录\ncp -r dir/ /tmp/  # 递归复制目录"
    ["移动|重命名|mv"]="mv|移动/重命名文件/目录|mv old.txt new.txt  # 重命名文件\nmv file.txt /tmp/  # 移动文件到tmp"
    ["删除|移除|rm"]="rm|删除文件/目录|rm file.txt  # 删除文件\nrm -rf dir/  # 强制递归删除目录"
    ["创建目录|新建文件夹|mkdir"]="mkdir|创建目录|mkdir new_dir  # 创建单个目录\nmkdir -p dir1/dir2  # 递归创建多级目录"
    ["查看当前目录|pwd"]="pwd|显示当前工作目录|pwd  # 输出当前路径如:/home/user"
    ["切换目录|cd"]="cd|切换工作目录|cd /home  # 切换到home目录\ncd ..  # 回到上级目录\ncd ~  # 回到用户家目录"
    ["列出文件|查看文件列表|ls"]="ls|列出目录内容|ls  # 列出当前目录文件\nls -l  # 详细列表(权限/大小/时间)\nls -a  # 显示隐藏文件"
    ["查找文件|find"]="find|查找文件/目录|find / -name \"file.txt\"  # 全局查找文件\nfind ./ -type d  # 查找当前目录下所有子目录"
    ["搜索内容|grep"]="grep|文本内容搜索|grep \"error\" log.txt  # 在日志中搜索error\nps aux | grep nginx  # 查找nginx进程"
    ["查看进程|ps"]="ps|查看进程信息|ps aux  # 查看所有进程详细信息\nps -ef | grep java  # 查找java进程"
    ["杀死进程|kill"]="kill|终止进程|kill 1234  # 终止PID为1234的进程\nkill -9 1234  # 强制终止进程"
    ["查看磁盘|df"]="df|查看磁盘空间|df -h  # 人性化显示磁盘使用情况\ndf -T  # 显示文件系统类型"
    ["查看目录大小|du"]="du|查看目录/文件大小|du -sh dir/  # 显示目录总大小\ndu -h  # 显示各文件大小"
    ["网络状态|netstat"]="netstat|查看网络连接|netstat -tuln  # 查看监听端口\nnetstat -an  # 查看所有网络连接"
    ["查看IP|ip地址|ifconfig"]="ifconfig|查看/配置网络接口|ifconfig  # 查看所有网卡信息\nifconfig eth0  # 查看指定网卡信息"
    ["下载文件|wget"]="wget|网络下载文件|wget https://example.com/file.tar.gz  # 下载文件\nwget -O newname.tar.gz https://example.com/file.tar.gz  # 重命名下载"
    ["解压缩|解压|tar"]="tar|打包/解压缩文件|tar -zxvf file.tar.gz  # 解压gz压缩包\ntar -cvf archive.tar dir/  # 打包目录"
    ["权限修改|chmod"]="chmod|修改文件权限|chmod 755 script.sh  # 设置可执行权限\nchmod +x script.sh  # 添加执行权限"
    ["用户切换|su"]="su|切换用户|su root  # 切换到root用户\nsu - user  # 切换到用户并加载环境变量"
    ["执行权限|sudo"]="sudo|以管理员权限执行命令|sudo apt update  # 管理员权限更新软件源\nsudo -i  # 切换到root环境"
)

# 彩色输出函数
print_color() {
    local color=$1
    local text=$2
    case $color in
        red) echo -e "\033[31m$text\033[0m" ;;
        green) echo -e "\033[32m$text\033[0m" ;;
        yellow) echo -e "\033[33m$text\033[0m" ;;
        blue) echo -e "\033[34m$text\033[0m" ;;
        purple) echo -e "\033[35m$text\033[0m" ;;
        cyan) echo -e "\033[36m$text\033[0m" ;;
        *) echo "$text" ;;
    esac
}

# 显示帮助信息
show_help() {
    clear
    print_color "cyan" "======= Linux中文命令查询工具 ======="
    echo "使用说明:"
    echo "1. 输入中文关键词(如:复制、查看文件、进程)"
    echo "2. 支持模糊匹配(如输入'文件'会显示所有文件相关命令)"
    echo "3. 输入 'q' 或 '退出' 退出程序"
    echo "4. 输入 'help' 或 '帮助' 显示本帮助信息"
    echo -e "\n常用关键词示例:"
    print_color "yellow" "文件查看、复制、删除、进程、网络、解压、权限、磁盘"
    echo "======================================"
}

# 搜索命令函数
search_commands() {
    local keyword=$1
    local found=0
    
    print_color "blue" "\n======= 搜索结果(关键词:$keyword)======="
    echo ""

    # 遍历命令数据库匹配关键词
    for key in "${!cmd_database[@]}"; do
        if [[ "$key" == *"$keyword"* ]]; then
            found=1
            # 解析命令信息
            local info=${cmd_database[$key]}
            local cmd=$(echo "$info" | cut -d'|' -f1)
            local desc=$(echo "$info" | cut -d'|' -f2)
            local example=$(echo "$info" | cut -d'|' -f3)
            
            # 输出命令信息
            print_color "green" "命令:$cmd"
            print_color "purple" "用途:$desc"
            print_color "yellow" "示例:"
            echo -e "$example\n"
            echo "--------------------------------------"
        fi
    done

    if [ $found -eq 0 ]; then
        print_color "red" "未找到相关命令,请尝试其他关键词!"
        print_color "yellow" "提示:输入 'help' 查看帮助和常用关键词"
    fi
}

# 主程序
main() {
    clear
    show_help
    
    while true; do
        echo -e "\n"
        print_color "cyan" "请输入查询关键词(输入q退出/help帮助):"
        read -p "➜ " input
        
        # 处理输入
        case $input in
            [qQ]|退出|quit|exit)
                print_color "green" "感谢使用,再见!"
                exit 0
                ;;
            help|帮助|h|H)
                show_help
                ;;
            "")
                print_color "red" "错误:请输入有效关键词!"
                ;;
            *)
                search_commands "$input"
                ;;
        esac
    done
}

# 启动主程序
main

脚本功能特点:

  1. 中文模糊匹配:输入如"文件"、"进程"、"网络"等关键词,自动匹配相关命令
  2. 彩色输出:命令/用途/示例使用不同颜色区分,更易阅读
  3. 完整的命令说明:每个命令包含用途描述+常用示例
  4. 友好的交互:支持help/帮助、q/退出等交互指令
  5. 编码兼容:设置UTF-8编码,确保中文正常显示

使用方法:

  1. 将脚本保存为 cmd_zh.sh
  2. 添加执行权限:chmod +x cmd_zh.sh
  3. 运行脚本:./cmd_zh.sh
  4. 输入中文关键词查询(如:复制、查看进程、解压、磁盘空间)

示例查询效果:

输入关键词"复制",会显示:

命令:cp
用途:复制文件/目录
示例:
cp file.txt /tmp/  # 复制文件到tmp目录
cp -r dir/ /tmp/  # 递归复制目录

可扩展说明:

如果需要添加更多命令,只需在 cmd_database 数组中按照格式添加:
["中文关键词1|中文关键词2|命令"]="命令|用途|示例"
例如添加ping命令:
["网络测试|ping"]="ping|测试网络连通性|ping baidu.com # 测试百度连通性\nping -c 4 192.168.1.1 # 发送4个数据包测试"

该脚本兼容大多数Linux发行版(Ubuntu、CentOS、Debian等),只需确保系统安装了bash和基本的文本处理工具(cut、grep等)。

二、脚本加入系统环境变量,使其能在任意目录直接调用

Linux 系统会默认搜索 /usr/local/bin/usr/bin/bin 等目录中的可执行文件,将脚本移动到这些目录即可直接调用。

步骤:

  1. 建议重命名脚本(去掉后缀,更像系统命令,方便使用):

    mv ./cmd_zh.sh cmd_zh
    
  2. 移动到 /usr/local/bin(该目录专门用于存放用户自定义的可执行程序,优先级高且不影响系统原有命令):

    sudo mv cmd_zh /usr/local/bin/
    
  3. 确保脚本有执行权限

    sudo chmod +x /usr/local/bin/cmd_zh
    

使用:

此时在任意目录直接输入 cmd_zh 即可运行脚本:

cmd_zh

验证是否成功:

在任意目录执行以下命令,能正常运行脚本即表示成功:

cmd_zh  # 或 cmd_zh.sh

例如:

cd /tmp  # 切换到临时目录
cmd_zh   # 直接运行脚本,正常显示查询界面即成功
posted @ 2025-12-12 16:06  bcgbsh  阅读(0)  评论(0)    收藏  举报