超级自恋狂 — 定制终端 ssh 欢迎语

今天宝子开学了,其实这个假期她在家也没待几天。昨天折腾完浏览器控制台自定义输出之后,目光又转向了很久之前就想做,但是一直没做的终端以及 ssh 的定制输出。

这个东西简单做法非常简单,不外乎是配置 sshd 的banner 或者/etc/update-motd.d/下的相关文件,然而,我想要的不仅仅是输出几个文字那么简单,最起码要能达到类似于昨天做的控制台输出 ascii 字符画的效果。

然而,这个实现起来的确比上文提到的控制台输出要复杂的多。毕竟作为纯文本的终端系统要输出复杂字符或者直接输出图片难度还是挺大的。

最开始是想基于 neofetch 来做:

Neofetch is a command-line system information tool written in bash 3.2+. Neofetch displays information about your operating system, software and hardware in an aesthetic and visually pleasing way.

The overall purpose of Neofetch is to be used in screen-shots of your system. Neofetch shows the information other people want to see. There are other tools available for proper system statistic/diagnostics.

The information by default is displayed alongside your operating system’s logo. You can further configure Neofetch to instead use an image, a custom ASCII file, your wallpaper or nothing at all.

You can further configure Neofetch to display exactly what you want it to. Through the use of command-line flags and the configuration file you can change existing information outputs or add your own custom ones.

Neofetch supports almost 150 different operating systems. From Linux to Windows, all the way to more obscure operating systems like Minix, AIX and Haiku. If your favourite operating system is unsupported: Open up an issue and support will be added.

地址:https://github.com/dylanaraps/neofetch/

效果:

在实际测试的时候发现左侧的图片要想实现项目首页的这个效果,竟然无法做到,按照 wiki 的指导,支持下面的 backend:

Neofetch 3.0 included a rewrite of how we handle different modes (imageascii and etc) which allowed us to add additional image backends to Neofetch. Neofetch now supports displaying images using catimglibcacachafaiterm2jp2akittypixtermpotlibsixeltermpixtycat, and w3m.

然而,不管是 iterm2 还是w3m,实际实现效果都非常差。无法正常显示要加载的图片。后来发现 viu 可以在终端显示图片,然而效果嘛,看下来还是不行,不过放到终端里面,也算是能看出人形来了。

然而,困难之处在于 neofetch 无法使用 viu 作为 backend 显示图片。

并且这个项目已经停止更新了,按照作者的说法是回家种地了。就在这个结束不久之后又出现了一堆新的 fetch。

按照评价最高的就是 fastfetch,这个东西同样支持定制化的图片输出。

Fastfetch is a neofetch-like tool for fetching system information and displaying it prettily. It is written mainly in C, with performance and customizability in mind. Currently, Linux, Android, FreeBSD, macOS, SunOS and Windows 7+ are supported.

地址:https://github.com/fastfetch-cli/fastfetch?tab=readme-ov-file

这个东西是用 c 语言开发的,不再跟 neofetch 一样是纯 bash 脚本。至于运行效率提升,应该是有一些。

同样,看项目首页的效果还是不错的:

既然选定了目标,那就继续开始折腾吧。由于家里的电脑是 windows,所以选择了远程 ssh 到 ubuntu 服务器上进行配置的方式。在测试的过程中发现基于 w3m 无法在 ssh 终端中显示图像。一番搜索之后,发现了这么一个项目:

https://github.com/sqlsec/fastfetch/tree/main?tab=readme-ov-file
Fastfetch 是一个类似 neofetch 的工具,用于获取系统信息并漂亮地显示它。它主要用 C 语言编写,并考虑了性能和可定制性。本项目是一个 Fastfetch 轮子,主要是集成了宝可梦显示和其他系列的恶搞图片,目前只在 Linux 和 macOS 平台下测试过。

里面继承了一个宝可梦的字符图片生成。那么基于这个东西既然能在 ssh 中显示,那么也就是说如果能生成宝可梦类似的文本就可以正常显示所谓的图片了。

上面的图片虽然模糊,但是生成一个网站 logo 应该是可以的。宝可梦的字符串是基于这个项目创建的:

https://gitlab.com/phoneybadger/pokemon-colorscripts.git

翻了半天代码发现,并不是通过图片生成的文本,而是本身就已经是文本:

这就尴尬了,也就是说通过这个项目的代码将图片转为文本已经不可能了。

google 上搜索 convert image/picture to text 或者convert image/picture to ascii,发现返回的都是 ocr 相关的内容,这该死的人工智能,现在已经没人有这种需求了吗?我是真的要讲图片转为文本,而不是要识别图片上的文本。翻了数十页,有用的信息 一条也没有。

这时突然灵光一现,直接搜索转化的文本:

https://www.google.com/search?q=%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84++++++++++++++++++++%0D%0A++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m+++++++++++++++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m++%0D%0A+%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B189%3B189%3B189m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84+++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%0D%0A%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B90%3B99%3B123m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B65%3B65%3B65m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B65%3B65%3B65m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B90%3B99%3B123m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m+%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B132%3B132%3B132m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B132%3B132%3B132m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%80&newwindow=1&sca_esv=0fc7dd398656b67a&biw=2519&bih=1218&sxsrf=AHTn8zrYB8iVn-PuK5p4PazbOlDmwyh7KQ%3A1739371785317&ei=CbWsZ_H3Esjo1e8P25fugAY&ved=0ahUKEwixoJXrsL6LAxVIdPUHHduLG2A4HhDh1QMIEg&uact=5&oq=%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84++++++++++++++++++++%0D%0A++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m+++++++++++++++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m++%0D%0A+%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B189%3B189%3B189m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84+++%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%0D%0A%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B90%3B99%3B123m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B65%3B65%3B65m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B65%3B65%3B65m%1B%5B48%3B2%3B65%3B65%3B65m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B99%3B132%3B173m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B90%3B99%3B123m%1B%5B48%3B2%3B99%3B132%3B173m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m+%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%84%1B%5B38%3B2%3B0%3B0%3B0m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B132%3B132%3B132m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B132%3B132%3B132m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B189%3B189%3B189m%1B%5B48%3B2%3B255%3B255%3B255m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B255%3B255%3B255m%1B%5B48%3B2%3B0%3B0%3B0m%E2%96%80%1B%5B0m%1B%5B38%3B2%3B0%3B0%3B0m%E2%96%80&gs_lp=Egxnd3Mtd2l6LXNlcnAi-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&sclient=gws-wiz-serp

nice,总算是给了点提示,ansi color,或者 ansi 。继续搜索图片转 ansi,最后终于找到了一个在线工具:

https://dom111.github.io/image-to-ansi/

那么有了这个东西,就可以将图片转化为宝可梦类似的字符串了。

下面会给出对应的 sh 脚本代码,测试效果可以直接扔到终端去测试。

图片转化解决了,剩下的就是怎么写配置文件。搜索的时候发现了这么一篇文章,同样里面给出了上面的配置文件脚本的合集:

https://www.sqlsec.com/2024/09/ubuntu.html#

参考文章给的:https://github.com/sqlsec/fastfetch里面的配置文件,编写自己的配置文件。

将上面图片转 ansi 给出的 sh 脚本保存为 sh 文件,修改配置文件的 图片为下面的内容:

"modules": [
        {
            "type": "command",
            "text": "sh $HOME/.config/fastfetch/sh/logo-80.sh",
            "key": "\n"
        },

上面的代码没有在 logo 字段内设置,目前还没发现怎么在 logo 中执行命令,如果直接将生成的字符串贴到 logo 内会报错。

通过下面的命令验证配置文件,主要文件路径要复制到用户目录下的.config/fastfetch/中。

这个是基于 zsh 的,当然如果是 iterm 那么效果就更加惊艳了。如下面:

远程 ssh 效果:

为了简化上面的操作,于是我创建了一个开源项目,如果需要可以直接拉取代码针对性修改即可。

下面正文开始啦:

1.安装 fastfetch,具体安装方法,参考https://github.com/fastfetch-cli/fastfetch

Linux

 

Some distros package an outdated fastfetch version. Older versions receive no support, so please try always to use the latest version.

Packaging status

  • Ubuntu: ppa:zhangsongcui3371/fastfetch (for Ubuntu 22.04 or newer)
  • Debian: apt install fastfetch (for Debian 13 or newer)
  • Debian / Ubuntu: Download fastfetch-linux-<proper architecture>.deb from Github release page and double-click it (for Ubuntu 20.04 or newer and Debian 11 or newer).
  • Arch Linux: pacman -S fastfetch
  • Fedora: dnf install fastfetch
  • Gentoo: emerge --ask app-misc/fastfetch
  • Alpine: apk add --upgrade fastfetch
  • NixOS: nix-shell -p fastfetch
  • openSUSE: zypper install fastfetch
  • ALT Linux: apt-get install fastfetch
  • Exherbo: cave resolve --execute app-misc/fastfetch
  • Solus: eopkg install fastfetch
  • Slackware: sbopkg -i fastfetch
  • Void Linux: xbps-install fastfetch
  • Venom Linux: scratch install fastfetch

You may need sudodoas or sup to run these commands.

If fastfetch is not packaged for your distro or an outdated version is packaged, linuxbrew is a good alternative: brew install fastfetch

macOS

 

Windows

 

  • scoopscoop install fastfetch
  • Chocolateychoco install fastfetch
  • wingetwinget install fastfetch
  • MSYS2 MinGWpacman -S mingw-w64-<subsystem>-<arch>-fastfetch

You may also download the program directly from the GitHub releases page in the form of an archive file.

FreeBSD

 

  • pkg install fastfetch

Android (Termux)

 

  • pkg install fastfetch

2.拉取项目代码:git clone https://gitee.com/obaby/baby-fetch

将项目目录下的 fastfetch 复制到用户目录下的.config 目录下

cp -rf fastfetch ~/.config/

增加一键部署脚本,下载后直接执行 deploy.sh 即可,支持 bash, zsh 终端!后续步骤可以省略了!!!

增加一键部署脚本,下载后直接执行 deploy.sh 即可,支持 bash, zsh 终端!后续步骤可以省略了!!!

增加一键部署脚本,下载后直接执行 deploy.sh 即可,支持 bash, zsh 终端!后续步骤可以省略了!!!

直接修改 welcome.sh 修改加载配置文件皆可!

直接修改 welcome.sh 修改加载配置文件皆可!

直接修改 welcome.sh 修改加载配置文件皆可!

(venv) zhongling@ZhongLingdeMBP baby_fetch % /bin/bash /Users/zhongling/PycharmProjects/baby_fetch/deploy.sh
===========================================================================
Baby fetch自动部署工具
obaby@mar
https://h4ck.org.cn
https://oba.by
https://nai.dog
===========================================================================
Start deploy:
copy files......
*************************************
Write config to terminal profile:
process .bash_profile
already exists, skip
-------------------------------------
process .zshrc
already exists, skip
-------------------------------------
process .profile
already exists, skip
All done, have a nice day
===========================================================================

 

红字部分于2015.01.13 17.25 更新!

3.修改终端配置文件,在修改之前需要确定当前运行的终端是什么 bash,zsh 或者是其他的什么东西。

例如,我这里的终端是 zsh,运行 fastfetch 查看 shell 字段:

vim ~/.zshrc

添加以下代码:

if [ -f ~/.config/fastfetch/welcome.sh ]; then
    ~/.config/fastfetch/welcome.sh
fi

如果是 bash :

vim ~/.bash_profile

同理其他的终端修改对应的位置文件,执行 source ~/.zshrc加载配置文件,如果无误应该就可以看到效果了。

目前针对 macos welcome.sh 会针对是否运行在 iterm 内加载不同的配置文件:

#!/bin/bash
if [ "$TERM_PROGRAM" = "iTerm.app" ]; then
#    echo "当前运行在 iTerm 中"
     fastfetch -c ~/.config/fastfetch/config-obaby-mac-iterm-weding.jsonc
else
#    echo "当前没有运行在 iTerm 中"
    fastfetch -c ~/.config/fastfetch/config-obaby-logo-80.jsonc
fi

同样定制化加载的文件也可以通过修改 welcome.sh实现,或者直接修改这个文件加载的配置文件实现。

为了更好的体验效果,在 mac 下建议安装 iterm,linux 下建议安装kitty。

iterm 建议通过 homebrew 安装:

brew install iterm2

https://iterm2.com

https://sw.kovidgoyal.net/kitty/binary/

4.显示问题,如果显示有乱码建议安装包含自带字体图标的字体,可以通过这里下载:https://www.nerdfonts.com/font-downloads

项目中已经包含了两个字体压缩包,可以直接安装使用。

同样,针对 ssh 的欢迎语也可以通过修改终端配置文件实现,这么改的好处是,针对不同用户可以用户自己定义。并且不需要修改 sshd配置文件,无需重启服务。

测试环境:

Mac:

 CPU Apple M1
󰋵 GPU Apple Apple M1 Ghz
󰀚 Memory 13.46 GiB / 16.00 GiB (84%)
󰘳 Shell zsh v5.9
󰀚 Disk 200.69 GiB / 228.27 GiB (88%) – apfs [Read-only]
󰀚 Disk 5.06 MiB / 5.06 MiB (100%) – hfs [External, Read-only]
󰀚 Disk 766.07 MiB / 934.23 MiB (82%) – apfs [External, Read-only]
󰘳 Network en0 192.168.8.100/24
󱦟 OS Age 20132 days
󱫐 Uptime 41 days, 23 hours, 57 mins
 Machine MacBook Pro (13-inch, M1, 2020) (Apple Inc.)

Ubuntu:

󰀶 OSUbuntu 22.04.4 LTS x86_64
󱢌 Bios449e491 (0.0)
 KernelLinux 5.15.0-92-generic
󰏗 Packages1190 (dpkg), 3 (snap)
󰹑 Display1024x768 @ 60 Hz
 Terminalsshd

● ● ● ● ● ● ● ●

 CPUIntel(R) Xeon(R) Platinum
󰋵 GPUCirrus Logic GD 5446 Ghz
󰀚 Memory1.00 GiB / 1.65 GiB (61%)
󰘳 Shellbash v5.1.16
󰀚 Disk27.71 GiB / 39.01 GiB (71%) – ext4
󰘳 Networketh0 172.23.120.93/20
󱦟 OS Age 380 days
󱫐 Uptime 89 days, 20 hours, 50 mins
 MachineAlibaba Cloud ECS (Alibaba Cloud)

项目地址:

https://gitee.com/obaby/baby-fetch

https://github.com/obaby/baby-fetch

参考链接:

https://github.com/sqlsec/fastfetch

https://www.sqlsec.com/2024/09/ubuntu.html#%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B

https://talyian.github.io/ansicolors/

https://gitlab.com/phoneybadger/pokemon-colorscripts

 

☆版权☆

* 网站名称:obaby@mars
* 网址:https://obaby.org.cn/
* 个性:https://oba.by/
* 本文标题: 《超级自恋狂 — 定制终端 ssh 欢迎语》
* 本文链接:https://obaby.org.cn/2025/02/19232
* 短链接:https://oba.by/?p=19232
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

50 comments

  1.  Level 6
    Google Chrome 131 Google Chrome 131 Mac OS X 10.15 Mac OS X 10.15 cn中国–香港 Cloudie_Limited

    你的无聊程度,在我看有种爆表的感觉,😂 下一个是啥,你接入ssh只有你自己看到,然后你还折腾一圈自己部署一个欢迎界面。按照这个逻辑,我甚至可以,给我的博客404写一套花活了,这么一说,好像我的404都是空的。。。还真可以折腾下,可惜没有那个闲功夫啊。

      1.  Level 6
        Google Chrome 131 Google Chrome 131 Mac OS X 10.15 Mac OS X 10.15 cn中国–香港 Cloudie_Limited

        此刻我觉得你强的可怕,全身上下没有死角。斗宗强者恐怖如斯~
        大概我能想到的,你都折腾过了。

      2.  Level 6
        QQbrowser 13 QQbrowser 13 Windows 11 Windows 11 cn中国–广东–珠海 电信

        好萌的404小女生,你真会折腾,这个纯粹自娱自乐的ssh样式

        1. 公主 Queen 
          Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

          嗯嗯,是哒,之前有个爱好就是给各种工具加图片哈哈哈

  2. Level 6
    Firefox 135 Firefox 135 Windows 10 Windows 10 cn中国–安徽–合肥 移动

    哈哈,厉害!
    for Debian 13 or newer?我以为debian13出来了….看了下没有啊

  3. Level 1
    Safari 17 Safari 17 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–临沂 联通

    这篇文章有点硬,一个你一个jeffer.z,看到你们这么能折腾挺羡慕的。

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      这个其实跟逆向的 pe diy 差不多,自定义可执行文件给程序加一些原来没有的功能,类似于:https://h4ck.org.cn/?s=glass+cmd

  4. Level 3
    Google Chrome 133 Google Chrome 133 Mac OS X 10.15 Mac OS X 10.15 cn中国–北京–北京 联通

    这哪是自恋,是取悦自己,看到这个就有一点好心情,多好🤓

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      嗯嗯,这么一说的确是取悦自己的,嘻嘻

  5. Level 4
    Google Chrome 133 Google Chrome 133 Mac OS X 10.15 Mac OS X 10.15 cn中国–湖北–武汉 电信

    让我想起来今天折腾的东西,把 Cailbre 的图标换成 MacOS 统一的方形。
    一般来说修改图标只用覆盖 .app 的内置 icns 文件就好了,但是这个软件的作者另辟蹊径的使用了一个藏得深的 png 图片作为图标,我真的是服了,让我一通好找。

    1. 公主 Queen 
      Google Chrome 126 Google Chrome 126 Mac OS X 10.15 Mac OS X 10.15 cn中国–山东–青岛 联通

      的确,很多东西会在不同的地方存储文件,之前改 pycharm 的启动图片也是,虽然目录下有启动图但是实际上那个启动图是打在 jar 包内的,就贼麻烦。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注