当前位置: 首页 > article >正文

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用法。总结这个脚本虽小却能显著提升环境排查效率。你可以把它放在常用脚本库中新装系统后跑一遍立刻知道还缺哪些工具或者在接手他人项目时快速对齐开发环境。希望这个小工具能为你带来便利如果你觉得有用欢迎点赞、收藏也欢迎在评论区交流改进建议。完整脚本可私信或评论区留言获取。

相关文章:

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

作者:尘一不染 | 2026-04-17 ———————————————— 版权声明:本文为CSDN博主「尘一不染」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 在日常的Linux开发或运维工作中,我们…...

llama.cpp部署QWEN3.5-9B和Gemma4-e4b,用Claude Code对比测试

昨天部署了Gemma4:26B和E4B,一是自己显存不够,部署的时候总是爆显存。二是claude code与Gemma4配合有问题,claude爆内存,任务进行不下去。 所以今天我又通过llama.cpp部署了QWEN3.9-9B,并做了些测试。 结论&#xff1a…...

HASH、MAC、HMAC 对比

对比汇总表--**Hash(散列)****MAC(消息认证码)****HMAC(哈希MAC)**全称Hash FunctionMessage Authentication CodeHash-based MAC输入任意长度消息消息 密钥消息 密钥输出固定长度摘要固定长度认证码固定…...

如何在3天内快速上手OpenSPG知识图谱引擎?完整实战指南 [特殊字符]

如何在3天内快速上手OpenSPG知识图谱引擎?完整实战指南 🚀 【免费下载链接】openspg OpenSPG is a Knowledge Graph Engine developed by Ant Group in collaboration with OpenKG, based on the SPG (Semantic-enhanced Programmable Graph) framework.…...

UnSHc深度解析:Shell脚本安全审计与逆向工程的技术实现

UnSHc深度解析:Shell脚本安全审计与逆向工程的技术实现 【免费下载链接】UnSHc UnSHc - How to decrypt SHc *.sh.x encrypted file ? 项目地址: https://gitcode.com/gh_mirrors/un/UnSHc 在Shell脚本安全领域,SHc加密工具因其强大的保护能力而…...

手机银行App模拟器

分享一款银行模拟器,农业银行模拟器,装逼娱乐神器,安卓苹果都支持!功能: 修改余额,自由修改数据,也可以模拟余额冻结和转出失败,功能多多,使用起来也是非常的方便,看图片…...

文件上传1

在日常使用各类网站、APP 的过程中,文件上传是我们每天都会接触的基础功能:更换社交账号头像、发布朋友圈配图、上传学习文档、提交作业文件、上传博客封面图…… 这些场景背后,都是Web 文件上传技术在支撑。一、文件上传核心原理解读在动手写…...

LVGL + SquareLine:嵌入式里「中英两套字串」怎么做(无需完整 i18n 框架)

LVGL + SquareLine:嵌入式里「中英两套字串」怎么做(无需完整 i18n 框架) 适用场景:ESP-IDF + LVGL,界面由 SquareLine Studio 生成;不想维护字符串 ID、gettext、.po 那一套,只希望 中文默认 UI + NVS 记忆语言 + 进屏刷新,英文尽量短以适应小屏。 1. 为什么不搞「正经…...

招聘类 Android 应用开发全栈实践与性能优化

引言 移动互联网时代,招聘平台已成为连接人才与企业的核心桥梁。作为 Android 开发工程师,负责招聘类应用的研发工作,不仅要求扎实的底层技术功底,更需要深刻理解招聘场景下的业务逻辑、用户交互特性以及对性能与稳定性的极致追求。本文将围绕一个招聘类 Android 应用从 0…...

Windows系统安装Node.js教程

Windows系统安装Node.js教程 本文档详细介绍了在Windows系统上安装Node.js的完整步骤,包括下载、安装和验证过程,帮助用户快速搭建Node.js开发环境。 一、Node.js 简介 Node.js 是一个基于 Chrome V8 引擎构建的开源、跨平台 JavaScript 运行时环境,它允许开发者在服务器…...

tinyalsa(0)

先给你一个完整配置 采样率(rate) 48000 声道数(channels) 2(左右声道) 采样格式 16bit(2字节) period_size 480 period_count 4一、先从“声音本…...

数据科学中的Pandas数据框扩展

在数据科学和机器学习的领域中,处理数据结构往往是日常工作的一部分。尤其是当我们需要处理图结构数据时,构建和操作邻接矩阵是常见任务之一。Pandas作为Python中处理数据的强大工具,提供了许多便捷的方法来操作数据框(DataFrame)。本文将探讨如何使用Pandas高效地扩展数据…...

龙虾量化实战法(QClaw)

龙虾量化上手法 如果你只是想快速搭一套能用的量化分析流程,这篇文章就是写给你的。最近市面上这类量化课程真的很多,讲得热闹,卖得也凶,但我个人一直不觉得这东西有多大价值。原因很简单,很多课讲到最后,还…...

关于FLOPs与MACs的说明

关于FLOPs与MACs的说明: 尽管通常被称为"FLOPs",但fvcore的FlopCountAnalysis返回的值实际上代表的是MACs(乘加运算次数)。 正如FlopCountAnalysis的文档字符串(第53行)所述:“我们将…...

算法学习第七天

1. 环形链表 II 总结链表与数组的适用场景差异,提交第一周学习小结 题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,使用整数 pos…...

OpenCore Legacy Patcher终极解决方案:4步完整技术指南让旧Mac焕发新生

OpenCore Legacy Patcher终极解决方案:4步完整技术指南让旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是…...

Unity URP 实战:基于Kajiya-Kay与Marschner的头发着色器深度解析

1. 头发渲染为什么这么难? 第一次尝试做头发渲染的时候,我对着屏幕发呆了整整一天。为什么游戏里的头发看起来总是那么假?这个问题困扰了我很久。后来才发现,头发的光学特性比我们想象中复杂得多 - 每根头发实际上是个微型圆柱体&…...

基于c/c++实现linux/windows跨平台ntp时间戳服务器

目录使用场景c/c源码结果验证windows编译命令linux编译命令服务器输出结果客户端输出结果使用场景 在某些严格要求时间同步很精准的项目中,获取网络ntp时间的时间延时比较大,做滤波处理可能效果也不理想。因此可以搭建一个本地ntp服务器,这样…...

如何快速上手NVIDIA Profile Inspector:新手必看的完整显卡优化教程

如何快速上手NVIDIA Profile Inspector:新手必看的完整显卡优化教程 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 想彻底释放你的NVIDIA显卡性能吗?NVIDIA Profile Inspector正…...

做再生牛津布出口的靠谱公司有哪些?

做再生牛津布出口,想找个靠谱的伙伴,这事儿我太有感触了。 在这个行业里泡了五年,看过太多品牌方和采购朋友踩坑。要么是环保认证搞不定,货到了港口被卡住;要么是面料性能不达标,看着挺“绿”,用…...

对话式革新:OpenClaw全场景实战指南(含CloudBase开发全流程\+生态深度解析)

在AI原生工具爆发的2026年,鹅厂OpenClaw以“文本驱动、本地优先、事件编排”的核心优势,打破了传统AI助手“只建议、不执行”的局限,从单一工具升级为覆盖办公、创作、学习、研发等多场景的生态体系。它并非简单的对话机器人,而是…...

大学生如何准备AI面试

前两天一个学弟找我,说他投了十几家AI公司的算法岗,全军覆没。 他简历上写的是「熟悉Transformer架构」、「掌握PyTorch」、「参与过NLP相关项目」,看起来没什么毛病,但面试官一开口就问,「你训练过一个模型从零到上线…...

在国产麒麟系统上,手把手教你离线搞定osg3.4.0和osgEarth2.9的编译(附完整依赖包)

国产麒麟系统离线编译OSG 3.4.0与osgEarth 2.9全流程指南 在信创产业快速发展的背景下,国产操作系统与硬件平台正逐步成为关键基础设施的核心选择。银河麒麟作为国产操作系统的代表之一,其稳定性和安全性已得到广泛验证。然而,在三维地理信息…...

大模型时代最后的符号堡垒,正在崩塌?——全球首份AGI融合技术成熟度评估报告(Gartner未发布版节选)

第一章:大模型时代最后的符号堡垒,正在崩塌? 2026奇点智能技术大会(https://ml-summit.org) 符号主义曾是人工智能的基石——逻辑推理、形式化验证、可解释规则系统,构成了人类对“智能”的最初建模。然而,当大语言模…...

【2024 AGI迁移学习权威白皮书】:基于172个跨模态任务实测数据,揭示仅12.6%模型具备真正泛化迁移能力

第一章:AGI跨领域迁移学习能力的定义与核心挑战 2026奇点智能技术大会(https://ml-summit.org) AGI跨领域迁移学习能力,指通用人工智能系统在未经历显式训练的前提下,将从源任务(如自然语言理解)中习得的抽象表征、推…...

AGI武器化临界点已至:全球7国军方内部评估报告泄露,5个致命伦理漏洞亟待封堵

第一章:AGI武器化临界点的现实判定与战略警示 2026奇点智能技术大会(https://ml-summit.org) 当前,AGI武器化已脱离理论推演阶段,进入可实证观测的临界演化窗口。多国军事AI项目披露的自主决策延迟数据、开源大模型在红蓝对抗环境中生成战术…...

自指宇宙学研究大纲:存在如何通过自我描述而实在化(世毫九实验室原创理论)

自指宇宙学研究大纲:存在如何通过自我描述而实在化 作者:方见华 单位:世毫九实验室 1. 引言与理论背景 1.1 研究动机与问题提出 当代物理学面临着前所未有的理论困境。粒子物理标准模型与广义相对论在各自领域取得了极致成功,却始…...

Switch手柄在电脑上玩转PC游戏:BetterJoy功能详解与实战指南

Switch手柄在电脑上玩转PC游戏:BetterJoy功能详解与实战指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcod…...

【maaath】Flutter for OpenHarmony 国际化集成指南:实现中英文动态切换

Flutter for OpenHarmony 国际化集成指南:实现中英文动态切换 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net作者:maaath一、背景介绍 在移动应用开发中,国际化(Internationalization&#x…...

面试官:Skills是什么?讲一讲它的工作原理

一、标准答案参考 直接上答案:Skills本质是结构化的本地文件夹,用来补充某个领域的流程、知识和工具,让模型在相关场景下自动或按需调用,是面向大模型的能力封装。 二、扩展问题 1、Skills 和 Prompt 的区别是什么? …...