首页 / 资讯中心 / 文章详情

Linux 终端里的系统名片:neofetch 从安装到替代方案

Linux 终端里的系统名片:neofetch 从安装到替代方案 ★ FEATURED ARTICLE
我第一次在论坛里看到有人晒 neofetch 截图第一反应是这终端窗口里怎么有个发光的图标后来才知道那不是截图特效也不是壁纸而是终端里直接跑出来的系统信息展示。那个命令就叫 neofetch。作为一款命令行工具它干的事并不复杂却让无数 Linux、macOS 甚至 WSL 用户养成了一个习惯——打开终端先跑一下看一眼自己的系统状态顺便截个图。neofetch 本质上是一个用 Bash 编写的系统信息收集与展示工具。你不用安装什么图形界面不用启动什么服务只需要在终端里执行一条命令它就会把操作系统、内核版本、CPU、GPU、内存、桌面环境、主题、终端模拟器等一大堆信息整合成一张整齐的“信息卡片”。卡片左侧通常是一幅 ASCII 艺术 Logo右侧是逐行排列的系统信息。这种展示形式既直观又有极强的“晒图”属性以至于在很多技术社区的提问帖里你都看到它被作为系统信息的标准展示方式。这篇内容我想把 neofetch 拆开来讲清楚它是怎么工作的、安装和使用有什么讲究、配置文件怎么玩、常见的怪异问题出在哪以及它在 2024 年停更之后社区都在用什么替代品。虽然它现在已经被归档但它依然是许多人理解命令行系统信息采集的最好入口。1. neofetch 到底是个什么工具1.1 它不是监控工具而是“系统信息快照”听到“系统信息工具”这个名字有人会下意识认为它是用来监控 CPU 温度、磁盘 IO 或者网络流量的。不是。neofetch 更像是一台拍快照的相机你按下快门它立刻把当前系统的关键状态显示给你看拍完就退出不常驻、不轮询、不吃内存。这也决定了它非常适合做展示终端画面好看输出内容清晰不会产生任何后台负担。它的信息采集原理并不复杂。比如内核版本来自uname -r操作系统发行版信息来自/etc/os-release内存使用情况来自/proc/meminfo或freeCPU 型号则通过解析/proc/cpuinfo或者调用lscpu获取。neofetch 做的事情本质上就是把这一堆零散的系统命令和配置文件统一封装成一个好看又有序的界面。因为它只是一个 Bash 脚本所以几乎没有任何软件依赖这也是它能在各种发行版上迅速流行的原因之一。从这个角度看neofetch 没有解决什么“高精尖”问题它解决的是很实际的展示与确认需求我想一眼看清这台机器的系统环境我不想记一长串查询命令。这种“小而美”的工具恰好击中了很多人的痛点。1.2 为什么它能火这么多年neofetch 能火和三个因素分不开。第一它足够轻轻到一个 Bash 脚本就能完成所有工作用户不需要学习复杂的依赖管理。第二它默认输出足够美观ASCII Logo 加彩色信息行的组合在那个终端美化文化正兴盛的时期几乎是所有 “晒桌面” 贴子的标配。第三它提供了很强的定制能力从 Logo 到信息字段到颜色排列都能改这让它变成了一种个人风格的表达方式。我在不少开源项目文档里看到过 neofetch 输出截图它被用来快速展示运行环境这比干巴巴的文字描述要直观得多。前几年社区里甚至流行过一阵子“neofetch 挑战”大家比谁的输出更特别有人用自定义 ASCII 画了一只猫有人把信息行改成歌词。这种“玩起来”的属性是很多严肃工具不具备的。某种程度上说neofetch 不仅仅是一个命令行工具它也是命令行文化里的一个符号。2. 安装与首次运行一个命令看到系统全貌2.1 跨平台安装方法neofetch 的安装是我见过最省心的那类几乎所有主流发行版的软件源里都有它。我整理了一份常见系统的安装命令系统安装命令Debian / Ubuntusudo apt install neofetchFedora / RHELsudo dnf install neofetchArch / Manjarosudo pacman -S neofetchopenSUSEsudo zypper install neofetchGentoosudo emerge --ask neofetchmacOS (Homebrew)brew install neofetchWindows (WSL)在 WSL 发行版内使用对应包管理器安装如果你想用最新源码也可以直接去 GitHub 仓库拉取 release 包手动放到PATH目录里。neofetch 是纯 Bash 脚本不需要编译所以手动部署非常简单。不过对绝大多数人来说系统包管理器安装已经足够了。需要注意某些长期支持发行版的软件源版本会偏旧如果你遇到新硬件信息识别不正常可以优先考虑从上游更新而不是折腾配置文件。2.2 默认输出逐行解读安装完以后终端直接输入neofetch屏幕上就会跳出类似下面的内容userarchlinux -------------- OS: Arch Linux x86_64 Kernel: 6.8.9-arch1-1 Uptime: 2 hours, 15 mins Packages: 793 (pacman) Shell: zsh 5.9 Resolution: 1920x1080 DE: Hyprland WM: Hyprland Theme: Adwaita [GTK2] Icons: Adwaita [GTK2] Terminal: kitty CPU: Intel i7-12700H (20) 4.7GHz GPU: NVIDIA GeForce RTX 3060 Laptop Memory: 2846MiB / 32025MiB很多人第一次看到这堆信息只知道好看不知道每一行是怎么来的。我在下面的表里把字段、源头和含义梳理了一下输出字段信息来源 / 原理说明用户主机名whoamihostname顶部标题行可以通过配置修改显示格式OS/etc/os-release、lsb_release等读取发行版 ID 与版本信息Kerneluname -rLinux 内核版本号Uptime解析/proc/uptime后换算开机至今的时长Packages调用 dpkg、rpm、pacman 等不同发行版对应不同包管理器Shell$SHELL环境变量当前用户默认 ShellResolution读取显示服务器信息或xrandr主屏幕分辨率无桌面时可能失败DE / WMXDG_CURRENT_DESKTOP等环境变量识别桌面环境与窗口管理器Theme / IconsGTK 配置、dconf 等主要对桌面环境有效Terminal$TERM_PROGRAM或进程名探测当前终端模拟器名称CPU解析/proc/cpuinfo、lscpu显示型号、核心数与频率GPUlspci或显卡相关 API双显卡机器可能只显示部分内容Memoryfree或读取/proc/meminfo已用内存 / 总内存注意如果你看到某些字段显示 unknown不代表 neofetch 坏了更多时候是系统缺少对应命令或者环境变量没有被正确设置。后面排查章节我会细讲。3. 自定义配置把它调成你的“门面”3.1 配置文件是怎么加载的neofetch 首次运行会使用内置默认配置不生成任何文件。如果你想长期定制就需要自己生成一份配置文件。具体步骤是查看当前完整配置neofetch --print_config生成用户配置文件neofetch --config generate编辑文件~/.config/neofetch/config.conf临时指定其他配置neofetch --config /path/to/config.conf生成配置文件的命令会在~/.config/neofetch/目录下创建config.conf。这个文件本质是一段 Bash 脚本里面有大量的变量赋值以及一个决定输出顺序的print_info()函数。提醒如果你已经修改过配置再执行neofetch --config generate会直接覆盖同名文件不会备份旧版本。动手前建议先cp ~/.config/neofetch/config.conf ~/.config/neofetch/config.conf.bak。3.2 输出顺序与字段取舍配置文件里最核心的段落是print_info()。默认情况下它看起来是这样print_info() { info title info underline info os info kernel info uptime info packages info shell info resolution info de info wm info theme info icons info terminal info cpu info gpu info memory }这个函数就是 neofetch 的“排版灵魂”。每一行info xxx代表一个显示字段从上到下就是输出顺序。想隐藏某个字段就把对应行注释掉想调整位置就把整行上下移动。比如我觉得 GPU 信息很重要想让它紧跟 OS 显示那么只需要把info gpu挪到info os后面。info还支持自定义标签。默认info memory会显示成Memory: 2846MiB / 32025MiB。如果你想改成中文标签可以写成info memory 内存占用输出就会变成内存占用: 2846MiB / 32025MiB这个特性很实用尤其是需要在文档或截图里展示给非技术背景的人时自定义标签能让信息一看就懂。3.3 Logo、颜色与“好看”的学问neofetch 的视觉主要由两部分组成左侧的 ASCII Logo 和右侧信息行前的色块。更换 Logo 有两个途径。临时指定发行版 Logoneofetch --ascii_distro debian neofetch --ascii_distro arch neofetch --ascii_distro macos或者直接指定一个纯文本文件作为 Logoneofetch --ascii /path/to/my_logo.txt自制 ASCII Logo 有一个核心原则每行字符数必须控制在终端宽度内否则终端自动换行左右就会错位。很多人第一次自定义 Logo 就栽在这个细节上画了一幅精美字符画结果一运行全挤成一团。颜色控制方面最常用的是--colors参数。它控制右侧信息行前面的六段色块排列。如果你不喜欢彩色方块可以关掉neofetch --color_blocks off这一关整个输出会变得非常素净只剩下黑色字符和系统信息。我自己在写技术文档截图时经常用这种模式信息可读性更高也不会因为五颜六色显得喧宾夺主。3.4 每次打开终端都显示我建议加个判断很多人喜欢把neofetch直接写进 shell 启动文件像这样# ~/.bashrc 或 ~/.zshrc neofetch不对这个做法我劝你谨慎。如果你只是想在打开终端时“欣赏”一下还好但很多时候你开终端是为了快速跑命令每次都被一整屏系统信息挡在前面反而增加干扰。我更推荐两种方案。第一种设置别名想用的时候自己调alias sysneofetch输入sys就能看到系统信息不想看就不执行。第二种加一个条件判断只在本地交互终端显示if [ -z $SSH_CONNECTION ] [ -t 0 ]; then neofetch fi这个判断的意思是如果是 SSH 远程会话就跳过如果当前终端是交互式环境才显示。这样既能保留“打开终端就有系统信息”的仪式感又不会在远程操作或脚本执行时造成干扰。4. 常见问题与排查技巧4.1 输出左右错位怎么办这是遇到频率最高的问题。明明看别人的截图整整齐齐自己一跑Logo 和右侧信息各行其是像拼图没了参照线。原因通常有三个第一个是终端宽度不够。ASCII Logo 占用固定字符宽度窗口太窄就会触发终端软换行导致左右对不齐。解决办法是拉宽窗口或者用--ascii_size调整 Logo 大小neofetch --ascii_size small第二个是终端没有使用等宽字体。neofetch 的对齐完全建立在“每个字符等宽”这一前提下一旦用了非等宽字体整个排列就会散架。建议换成 Fira Code、JetBrains Mono 等常见等宽字体。第三个是特殊字符或超长文本导致自动折行。某些终端在收到超长行时会自动换行你可以尝试把信息字段中过长的主机名缩短或者减少输出行数来缓解。4.2 一堆 unknown 是什么意思unknown 是 neofetch 对“采集失败”的统一表示。常见场景如下字段常见原因排查方向GPU系统缺少lspci命令安装 pciutilsDE / WM窗口管理器过于小众或未设置环境变量检查XDG_CURRENT_DESKTOPShell$SHELL环境变量未设置检查登录 Shell 配置Resolution无桌面环境或显示服务器未启动确认是否处于图形会话Song / 音乐状态未安装对应的音乐播放器插件非必要可忽略你不需要对这些 unknown 太紧张。先用系统自带命令验证一下信息本身能否获取比如lspci -nn | grep -Ei vga|3d如果这条命令能正常输出那说明系统信息存在只是 neofetch 依赖的探测环节没找到数据。跟着依赖去补工具通常就能解决。4.3 特殊字符变成方块或乱码如果你看到输出里出现一堆□□或者问号第一反应应该是检查终端字体而不是怀疑配置文件。neofetch 在信息标签和某些状态显示里会使用特殊符号这类字符需要字体库里有对应字形。最直接的办法就是安装 Nerd Fonts 系列字体然后在终端模拟器设置里把字体切过去。我在一个远程容器环境里遇到过这个情况跑 neofetch 全是乱码。折腾了半天配置文件最后发现是远程终端工具没装 Nerd Font和 neofetch 一点关系都没有。所以记住乱码优先查字体其次再折腾配置。4.4 配置文件“消失”或解析异常如果你重装系统后发现~/.config/neofetch/目录不存在别意外。neofetch 只有在执行--config generate之后才会创建配置文件平时直接运行命令不会自动生成。需要自定义时手动执行一次生成即可。另外从网上复制配置时要小心 Windows 换行符问题。Windows 的文本文件行尾是\r\n而 Linux 只需要\n。如果把\r带进了 Bash 配置文件运行时会报奇怪的语法错误。处理方式很简单sed -i s/\r$// ~/.config/neofetch/config.conf这个命令会把所有行尾的\r去掉是解决跨平台复制配置问题的万能手段。5. 停更之后它还能继续用吗5.1 2024 年归档事件2024 年底neofetch 的作者 dylanaraps 将 GitHub 仓库标记为 archived项目进入只读状态。他在归档说明里表达得很坦白自己对项目的兴趣已经转移并且对继续用 Bash 维护这样一个大的脚本项目感到疲惫。这个消息出来后很多老用户心里有点复杂。但实事求是地说普通用户受的影响很小。neofetch 的工作是读取系统信息并展示这个逻辑本身非常稳定不需要针对新内核或新发行版频繁更新。系统的新版本不会让 neofetch “坏掉”它只会继续读取并显示仍然存在的信息。真正受影响的是那些希望增加新 Logo、新动画、新终端图像协议支持的需求这些后续都不太可能再有了。所以如果你已经在用 neofetch并且对它当下的表现满意继续用完全没问题。软件停更不等于立即死亡很多经典工具在被归档多年后依然被大量使用。5.2 社区的主流替代品fastfetch如果你想要一个还处于活跃开发中的同类型工具社区现在最推荐的是 fastfetch。它用 C 语言编写启动速度比 neofetch 快很多信息采集是异步并发完成的而且支持更多现代终端图像协议。从输出效果上看fastfetch 非常像 neofetch 的“精神续作”右侧系统信息、左侧 Logo、色块排列整体风格几乎无缝衔接。安装 fastfetch 也很方便sudo apt install fastfetch sudo dnf install fastfetch sudo pacman -S fastfetch brew install fastfetchfastfetch 的配置文件在~/.config/fastfetch/格式是 JSONC带注释的 JSON信息模块通过 modules 数组控制顺序。相比 neofetch 的 Bash 风格配置fastfetch 对新手更友好结构一眼就能看明白。参数名和 neofetch 有些差异比如 Logo 选择从--ascii_distro变成了--logo但整体迁移成本很低。我把自己的 neofetch 配置换成 fastfetch大概只花了不到十分钟。5.3 一点个人使用体会如果你刚接触命令行工具我建议别急着完全转向 fastfetch。neofetch 虽然停更了但它作为一个学习样本依然非常有价值。你可以打开它的 Bash 源码看看它是怎么解析/proc文件、怎么调用lspci、怎么匹配发行版 Logo 的。这些代码逻辑并不复杂但非常实用是理解系统信息采集最好的入门材料之一。我自己在旧笔记本上留了一个 neofetch不是因为 fastfetch 不好而是它启动极快、输出稳定而且早被我调教得顺手了。命令行工具的世界里“新”从来不是最好的标准“合手”才是。先把 neofetch 玩明白再去探索 fastfetch你会更清楚自己需要的到底是什么。
阅读完成 · 觉得有帮助?
咨询建站