Linux系统环境一键检测脚本:快速查看所有已安装的开发工具与版本

张开发
2026/4/20 4:54:40 15 分钟阅读

分享文章

Linux系统环境一键检测脚本:快速查看所有已安装的开发工具与版本
作者尘一不染 | 2026-04-17————————————————版权声明本文为CSDN博主「尘一不染」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。在日常的Linux开发或运维工作中我们经常需要快速了解当前系统安装了哪些编程语言、数据库、容器工具等环境。手动逐一输入--version命令不仅繁琐还容易遗漏。本文分享一个实用的Bash 脚本它能自动检测系统中常见的开发环境与工具并将结果分为已安装和未安装两部分清晰展示非常适合系统初始化检查、环境迁移确认或技术文档撰写。脚本功能概览全面检测涵盖编程语言Python、Java、Node.js、Go、Rust、Ruby、PHP、Perl、编译工具GCC、G、Make、CMake、包管理器apt、yum、dnf、pacman、snap、flatpak、数据库客户端MySQL、PostgreSQL、MongoDB、SQLite3、Redis、容器工具Docker、Podman、VirtualBox、版本控制Git、SVN以及常用工具curl、wget、vim等。版本信息提取对于已安装的工具自动获取并显示版本号。智能分类输出检测结果分为【已安装的环境】和【未安装的环境】两个区块一目了然。颜色高亮未安装的条目以红色字体突出显示需终端支持 ANSI 颜色。轻量无依赖纯 Bash 实现无需额外安装任何工具即可运行。脚本源码#!/bin/bash # ------------------------------------------------------------ # Linux 系统环境检测脚本 # 功能检测常见开发工具、运行环境及其版本最后分类汇总已安装/未安装项 # ------------------------------------------------------------ RED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m BLUE\033[0;34m NC\033[0m declare -A RESULTS check_cmd() { local name$1 local cmd$2 local version_arg$3 local redirect${4:-21} if command -v $cmd /dev/null; then local version_info version_info$(eval $cmd $version_arg $redirect | head -n1 | sed s/^[[:space:]]*//;s/[[:space:]]*$//) RESULTS[$name]$version_info else RESULTS[$name]${RED}未安装${NC} fi } check_python() { if command -v python3 /dev/null; then local ver ver$(python3 --version 21 | head -n1) RESULTS[Python]$ver elif command -v python /dev/null; then local ver ver$(python --version 21 | head -n1) RESULTS[Python]$ver else RESULTS[Python]${RED}未安装${NC} fi } check_java() { if command -v java /dev/null; then local ver ver$(java -version 21 | head -n1) RESULTS[Java]$ver else RESULTS[Java]${RED}未安装${NC} fi } check_gcc() { if command -v gcc /dev/null; then local ver ver$(gcc --version 21 | head -n1) RESULTS[GCC]$ver else RESULTS[GCC]${RED}未安装${NC} fi } check_gpp() { if command -v g /dev/null; then local ver ver$(g --version 21 | head -n1) RESULTS[G]$ver else RESULTS[G]${RED}未安装${NC} fi } check_make() { if command -v make /dev/null; then local ver ver$(make --version 21 | head -n1) RESULTS[Make]$ver else RESULTS[Make]${RED}未安装${NC} fi } check_cmake() { if command -v cmake /dev/null; then local ver ver$(cmake --version 21 | head -n1) RESULTS[CMake]$ver else RESULTS[CMake]${RED}未安装${NC} fi } check_node() { if command -v node /dev/null; then local ver ver$(node --version 21) RESULTS[Node.js]$ver else RESULTS[Node.js]${RED}未安装${NC} fi } check_npm() { if command -v npm /dev/null; then local ver ver$(npm --version 21) RESULTS[npm]$ver else RESULTS[npm]${RED}未安装${NC} fi } check_go() { if command -v go /dev/null; then local ver ver$(go version 21 | head -n1) RESULTS[Go]$ver else RESULTS[Go]${RED}未安装${NC} fi } check_rust() { if command -v rustc /dev/null; then local ver ver$(rustc --version 21 | head -n1) RESULTS[Rust]$ver else RESULTS[Rust]${RED}未安装${NC} fi } check_ruby() { if command -v ruby /dev/null; then local ver ver$(ruby --version 21 | head -n1) RESULTS[Ruby]$ver else RESULTS[Ruby]${RED}未安装${NC} fi } check_php() { if command -v php /dev/null; then local ver ver$(php --version 21 | head -n1) RESULTS[PHP]$ver else RESULTS[PHP]${RED}未安装${NC} fi } check_perl() { if command -v perl /dev/null; then local ver ver$(perl --version 21 | grep -m1 This is perl | sed s/.*This is perl [0-9]\, //; s/ built.*//) if [ -z $ver ]; then ver$(perl --version 21 | head -n1) fi RESULTS[Perl]v$ver else RESULTS[Perl]${RED}未安装${NC} fi } check_mysql() { if command -v mysql /dev/null; then local ver ver$(mysql --version 21 | head -n1) RESULTS[MySQL Client]$ver else RESULTS[MySQL Client]${RED}未安装${NC} fi } check_psql() { if command -v psql /dev/null; then local ver ver$(psql --version 21 | head -n1) RESULTS[PostgreSQL Client]$ver else RESULTS[PostgreSQL Client]${RED}未安装${NC} fi } check_mongo() { if command -v mongosh /dev/null; then local ver ver$(mongosh --version 21 | head -n1) RESULTS[MongoDB Shell]$ver elif command -v mongo /dev/null; then local ver ver$(mongo --version 21 | head -n1) RESULTS[MongoDB Shell]$ver else RESULTS[MongoDB Shell]${RED}未安装${NC} fi } check_sqlite3() { if command -v sqlite3 /dev/null; then local ver ver$(sqlite3 --version 21 | head -n1) RESULTS[SQLite3]$ver else RESULTS[SQLite3]${RED}未安装${NC} fi } check_redis() { if command -v redis-cli /dev/null; then local ver ver$(redis-cli --version 21 | head -n1) RESULTS[Redis Client]$ver else RESULTS[Redis Client]${RED}未安装${NC} fi } check_pkg_managers() { if command -v apt /dev/null; then RESULTS[APT]$(apt --version 21 | head -n1) else RESULTS[APT]${RED}未安装${NC} fi if command -v yum /dev/null; then RESULTS[YUM]$(yum --version 21 | head -n1) else RESULTS[YUM]${RED}未安装${NC} fi if command -v dnf /dev/null; then RESULTS[DNF]$(dnf --version 21 | head -n1) else RESULTS[DNF]${RED}未安装${NC} fi if command -v pacman /dev/null; then RESULTS[Pacman]$(pacman --version 21 | head -n1) else RESULTS[Pacman]${RED}未安装${NC} fi if command -v snap /dev/null; then RESULTS[Snap]$(snap --version 21 | head -n1) else RESULTS[Snap]${RED}未安装${NC} fi if command -v flatpak /dev/null; then RESULTS[Flatpak]$(flatpak --version 21 | head -n1) else RESULTS[Flatpak]${RED}未安装${NC} fi } check_docker() { if command -v docker /dev/null; then local ver ver$(docker --version 21 | head -n1) RESULTS[Docker]$ver else RESULTS[Docker]${RED}未安装${NC} fi } check_podman() { if command -v podman /dev/null; then local ver ver$(podman --version 21 | head -n1) RESULTS[Podman]$ver else RESULTS[Podman]${RED}未安装${NC} fi } check_virtualbox() { if command -v VBoxManage /dev/null; then local ver ver$(VBoxManage --version 21 | head -n1) RESULTS[VirtualBox]$ver else RESULTS[VirtualBox]${RED}未安装${NC} fi } check_git() { if command -v git /dev/null; then local ver ver$(git --version 21 | head -n1) RESULTS[Git]$ver else RESULTS[Git]${RED}未安装${NC} fi } check_svn() { if command -v svn /dev/null; then local ver ver$(svn --version 21 | head -n1) RESULTS[SVN]$ver else RESULTS[SVN]${RED}未安装${NC} fi } check_misc() { check_cmd curl curl --version check_cmd wget wget --version check_cmd vim vim --version | head -n1 check_cmd nano nano --version check_cmd htop htop --version check_cmd tmux tmux -V check_cmd screen screen --version } # ------------------------------------------------------------ # 执行所有检测 # ------------------------------------------------------------ echo -e ${BLUE}正在检测系统环境请稍候...${NC}\n check_python check_java check_gcc check_gpp check_make check_cmake check_node check_npm check_go check_rust check_ruby check_php check_perl check_mysql check_psql check_mongo check_sqlite3 check_redis check_pkg_managers check_docker check_podman check_virtualbox check_git check_svn check_misc RESULTS[系统]$(uname -a) RESULTS[发行版]$(cat /etc/os-release 2/dev/null | grep -E ^PRETTY_NAME | cut -d -f2 | tr -d ) # ------------------------------------------------------------ # 输出汇总报告分类显示已安装和未安装 # ------------------------------------------------------------ echo -e \n${GREEN} 环境检测报告 ${NC}\n categories( 系统 发行版 Python Java GCC G Make CMake Node.js npm Go Rust Ruby PHP Perl MySQL Client PostgreSQL Client MongoDB Shell SQLite3 Redis Client APT YUM DNF Pacman Snap Flatpak Docker Podman VirtualBox Git SVN curl wget vim nano htop tmux screen ) installed_items() missing_items() for key in ${categories[]}; do value${RESULTS[$key]} [[ -z $value ]] continue if [[ $value *未安装* ]]; then missing_items($key : $value) else installed_items($key : $value) fi done if [[ ${#installed_items[]} -gt 0 ]]; then echo -e ${GREEN}【已安装的环境】${NC} for item in ${installed_items[]}; do printf %s\n $item done echo fi if [[ ${#missing_items[]} -gt 0 ]]; then echo -e ${RED}【未安装的环境】${NC} for item in ${missing_items[]}; do printf %s\n $item done echo fi echo -e ${GREEN} 检测完成 ${NC}完整源码下载为避免文章过长完整脚本已上传至https://github.com/AiW520/env-check-scripthttps://github.com/AiW520/env-check-script或可私信获取。使用方法1. 创建脚本文件在 Linux 终端中执行bashnano check_env.sh或者直接把从Github下载好的脚本拖到Linux系统桌面上将完整代码粘贴进去保存退出。2. 赋予执行权限bashchmod x check_env.sh3. 运行脚本bash./check_env.sh运行效果示例在 Ubuntu 20.04 系统上执行后输出如下在windows系统上也可以注意事项与扩展建议检测范围脚本目前检测的是命令行工具是否存在通过command -v。例如检测 MySQL 客户端mysql命令而非 MySQL 服务是否运行。如需检测服务状态可自行添加systemctl is-active mysql等逻辑。特殊版本输出部分工具如 Java、Perl版本信息输出在 stderr脚本已做重定向处理可正确捕获。自定义添加若需检测其他工具如pip、conda、nginx可参照check_cmd函数格式添加。适用系统理论上支持所有主流 Linux 发行版Debian/Ubuntu、RHEL/CentOS、Arch 等macOS 可能需要调整部分命令如sed用法。总结这个脚本虽小却能显著提升环境排查效率。你可以把它放在常用脚本库中新装系统后跑一遍立刻知道还缺哪些工具或者在接手他人项目时快速对齐开发环境。希望这个小工具能为你带来便利如果你觉得有用欢迎点赞、收藏也欢迎在评论区交流改进建议。完整脚本可私信或评论区留言获取。

更多文章