有时候,我们在系统内想快速查看当前的硬件配置、操作系统版本、运行时间等关键信息。无论是为了诊断问题、优化性能,还是单纯满足好奇心;亦或者是想分享当前的操作系统信息给小伙伴;我们都系统能快速查看这些信息。
然而,传统的命令行工具往往繁琐复杂,输出杂乱;聚合不同命令返回的信息,也比较繁琐。于是便诞生出了NeoFetch
。它能用一行命令,即可以简洁、美观的ASCII方式呈现系统信息,满足了用户快速获取关键数据的需求。
如果你想展示自己服务器的资源、Linux的配置,甚至Windows和macOS的配置,那么使用NeoFetch或者NeoFetch的类似命令行工具,实在是再合适不过了。
Neofetch
NeoFetch是一个命令行系统信息工具,以其简洁美观的输出格式和高度可定制性而闻名。它能够在终端中显示系统logo(通常是ASCII艺术形式)以及系统信息(如操作系统、硬件配置、安装的软件包等)。
官方的项目地址是:
可以看到,项目最早在
2015年12月30日
进行了第一次提交,在2024年04月20日
项目进行了归档,主分支最后一次的提交停留在2021年12月10日
。Neofetch还可以正常使用,但是Neofetch已经停止维护了。
Neofetch基于bash
,所以不需要编译,同时兼容性也好:
举个例子,main
函数内部的cache_uname
方法,就会使用Linux和macOS都有的命令:uname -srm
:
bash
cache_uname() {
# 使用空格作为分隔符读取并存储uname命令的输出结果(系统名、内核版本、机器类型)。
IFS=" " read -ra uname <<< "$(uname -srm)"
# 分别提取内核名称、版本和机器类型。
kernel_name="${uname[0]}"
kernel_version="${uname[1]}"
kernel_machine="${uname[2]}"
# 如果内核名称为"Darwin",则针对macOS进行特殊处理。
if [[ "$kernel_name" == "Darwin" ]]; then
# macOS在某些情况下报告的版本信息可能不正确,除非将此环境变量设置为0。
# 参考链接: https://github.com/dylanaraps/neofetch/issues/1607
export SYSTEM_VERSION_COMPAT=0
# 从/System/Library/CoreServices/SystemVersion.plist文件中读取系统版本信息。
# 使用awk命令解析.plist文件中的键值对。
IFS=$'\n' read -d "" -ra sw_vers <<< "$(awk -F'<|>' '/key|string/ {print $3}' \
"/System/Library/CoreServices/SystemVersion.plist")"
# 遍历读取到的系统版本信息数组,根据键名提取对应值。
for ((i=0;i<${#sw_vers[@]};i+=2)); do
case ${sw_vers[i]} in
# 当键名为ProductName时,获取系统名称。
ProductName) darwin_name=${sw_vers[i+1]} ;;
# 当键名为ProductVersion时,获取操作系统版本。
ProductVersion) osx_version=${sw_vers[i+1]} ;;
# 当键名为ProductBuildVersion时,获取操作系统构建版本。
ProductBuildVersion) osx_build=${sw_vers[i+1]} ;;
esac
done
fi
}
可以说,设计的非常巧妙。
安装使用
Neofetch的安装非常简单,在各大的软件包管理器都有发布:
bash
# macOS
brew install neofetch
# Linux Debian/Ubuntu
sudo apt install neofetch
# Linux CentOS
sudo yum install neofetch
安装完成,我们看看Neofetch的版本:
bash
neofetch --version
通常使用,只需要终端输入neofetch
即可输出系统信息:
如果细看neofetch的脚本,会发现还有很多可选项,这些在neofetch的wiki内也有记录:
接下来我们看看可选项有那些?
扩展使用
根据官方的wiki,neofetch在安装后,会自动生成默认配置文件,配置文件的存放地址在:${HOME}/.config/neofetch/config.conf
内。里面其实就是默认的输出内容定义:
bash
cat ${HOME}/.config/neofetch/config.conf
可以看到,默认情况下打印的内容,就在配置文件内的print_info
所定义。如果我们需要修改呢,有两种方法:
- 直接使用
vim
等文本编辑器修改这个文件即可。 - 在运行
neofetch
的时候,使用参数开启即可。
举个例子,默认情况,只显示内存,并没有显示内存使用的百分比;但是实际上在config.conf
文件内是可以开启的,比如:
bash
# 直接输出
neofetch --memory_percent on
或者直接修改配置文件
最后的结果:
Neofetch停止维护
Neofetch完全基于bash
,使其兼容性很不错;即使你的Debian从8已经到12,但是Neofetch版本一直没有更新,那么Neofetch的使用,也不会出现什么问题。
这也是为什么,Neofetch在归档前,已经三年没有更新,但使用起来也没有任何问题。可以预想到,未来很长一段时间也不会有任何问题。那些基础的命令free -m
、uname -s
等等,都是不会改变的。
但是,为什么Neofetch停止维护了呢? 或者说是项目归档了呢?
其实,根据reddit上的两篇文章,可能可以略知一二:
- Neofetch development discontinued, repository archived
- Found a text file at work titled "Why should I quit my job and become a goat farmer? (written during my "on-call" week)"
大概就是作者换行了(回家开农场了,不过不清楚是否真的回去开农场?),项目维护者经常面临着巨大的工作量,包括但不限于代码更新、设备兼容考虑、错误修复、功能请求处理以及社区管理等等繁琐事物,加上作者自己从事的软件工作;作者在技术工作中感到厌倦和疲惫。而且即使从事的是技术,也需要考虑政治和不同人的立场,也需要站队。
综合上述的内容,他现在更倾向于追求他认为更简单、压力更小、更纯粹的生活方式。
自然而然地,项目就放弃维护了。
说实话,有点可惜;不过也确实为作者感到高兴,他找到了更好的生活。虽然不知道他是否真的是回去开设农场,但是应该是一个不错的新生活。
回到NeoFetch,其实也有很多继任者:
- hyfetch: Neofetch with LGBTQ+ pride flags!
- [fastfetch: About
An actively maintained, feature-rich and performance oriented, neofetch like system information tool.](github.com/fastfetch-c...)
接任者都是非常好用的项目;不过受限于篇幅,接下来,我们就取其中的fastfetch来一起看看。
FastFetch
通常情况下,你可以把FastFetch当作NeoFetch使用。安装方式也是一样,FastFetch已经在各个平台的软件包管理器发布:
bash
# macOS
brew install fastfetch
# Linux Debian/Ubuntu (Debian 13 or newer)
sudo apt install fastfetch
当然,相比于NeoFetch全部基于bash
的shell脚本,FastFetch是基于C++的,你也可以进行编译安装:
或者直接下载预编译的版本:
比如Windows下载预编译版本使用:
亦或者Debian12使用deb
软件包安装:
直接使用软件包管理器安装好FastFetch后,直接和NeoFetch一样,在终端内直接使用fastfetch
命令即可:
如果你想展示全部内容:
bash
fetch -c all
可以看到,这一次,甚至蓝牙、Wi-Fi信号等都有了......
如果你需要自定义显示数据,那么和NeoFetch一样,编辑自定义配置即可。有些不一样的是,你需要先生成一个配置文件,再进行修改:
bash
# 生成默认配置文件
fastfetch --gen-config
# 使用Vim修改
vim $HOME/.config/fastfetch/config.jsonc
修改的内容,可以参考:
比如,我套用模板的效果:
亦或者,修改自定义的Logo:FastFetch: Logo options
bash
# 展示所有FastFetch支持的logo
fastfetch --list-logos
# 使用小号logo展示系统信息
fastfetch --logo-type small
# 等等
比如,我这里使用预设的macos2
:
END
让我们一齐瞩目那曾风靡一时的 NeoFetch 项目,即便如此耀眼的存在,亦难逃其创造者因个人考量而选择封存与告别维护的命运。这仿佛在诉说着一个不争的事实:人力有时而穷,世间万物皆有更迭,即便是最为璀璨的美好,也终将画上句点。
然而,在这看似无奈的循环中,我们能够且应当,珍惜并拥抱眼前的每一份美好。更有甚者,当我们具备相应的能力时,我们理应投身于创造与维系这份美好之中,让其得以延~ 比如: FastFetch现在就很好用呀(o′ω`o)ノ