闾丘婉奕 发表于 4 天前

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
            |退出|quit|exit)
                print_color "green" "感谢使用,再见!"
                exit 0
                ;;
            help|帮助|h|H)
                show_help
                ;;
            "")
                print_color "red" "错误:请输入有效关键词!"
                ;;
            *)
                search_commands "$input"
                ;;
      esac
    done
}

# 启动主程序
main 脚本功能特点:


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


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

输入关键词"复制",会显示:
命令: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 等目录中的可执行文件,将脚本移动到这些目录即可直接调用。
步骤:


[*] 建议重命名脚本(去掉后缀,更像系统命令,方便使用):
mv ./cmd_zh.sh cmd_zh
[*] 移动到 /usr/local/bin(该目录专门用于存放用户自定义的可执行程序,优先级高且不影响系统原有命令):
sudo mv cmd_zh/usr/local/bin/
[*] 确保脚本有执行权限:
sudo chmod +x /usr/local/bin/cmd_zh
使用:

此时在任意目录直接输入 cmd_zh即可运行脚本:
cmd_zh 验证是否成功:

在任意目录执行以下命令,能正常运行脚本即表示成功:
cmd_zh # 或 cmd_zh.sh 例如:
cd /tmp# 切换到临时目录 cmd_zh# 直接运行脚本,正常显示查询界面即成功
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

林鱼 发表于 昨天 05:45

感谢,下载保存了
页: [1]
查看完整版本: Linux常用命令查询工具(好记性不如烂笔头)