neofetch の(ほぼ)全ロゴAAを拝む

# neofetch is 何？

`neofetch --help`から抜粋:

> Neofetch is a CLI system information tool written in BASH. Neofetch displays information about your system next to an image, your OS logo, or any ASCII file of your choice.

neofetch というのは、使用中のシステムの情報を表示してくれるコマンドです。
コマンドライン上で動くもので、大きな特徴の1つが･･･

![screen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540894/5e011a2c-5902-3bdb-595c-af60870baf04.png)

OS のロゴのアスキーアートが出てくるところ。
そのアスキーアートが、色々な OS に対応しているわけです。

さて、そんな neofetch ですが･･･

**OS ロゴアスキーアート、どれだけ対応しているんだろう？**

というわけで、neofetch に収録されている全 OS ロゴアスキーアートを表示させてみることにします。

# `neofetch` のオプション

全表示と言っても、ソースコードを解析するような必要はありません。
というのも･･･

`neofetch --help`から抜粋:

```txt
--ascii_distro distro       Which Distro's ascii art to print
```

あるんですね、表示するロゴを指定するオプションが。
対応している OS もヘルプに記述してくれています。
ついでに、旧ロゴ、小サイズ表示ロゴなんてのもあるようです。

# ソースコードの取得

neofetch はオープンソースで、Github にてソースが公開されています。

https://github.com/dylanaraps/neofetch

そもそもシェルスクリプトなんですね、これ。

パッケージマネージャ経由で入れても良いのですが、せっかくなので最新のソースで全ロゴを確認してみたいですね。
なので、GitHub からクローンしてやります。

```sh
git clone https://github.com/dylanaraps/neofetch.git
cd neofetch
```

以降、neofetch の実行は、このディレクトリ上で `./neofetch` と行います。
`./`でないと、パッケージマネージャで入れられた、最新でない可能性のある neofetch が実行されてしまうので。

# スクリプト作り

まずはヘルプの文を処理してやります。

```txt
NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, AOSC,
Apricity, ArcoLinux, ArchBox, ARCHlabs, ArchStrike,
...
```

先端の`NOTE: `や末端の`have ascii logos`なんかを除去してやるとかで、これをこうしてああして･･･
(以下は文字列処理に用いたコマンド)

```sh
sed logo-reg -e 's/^ *//g' | sed -e 's/, /\n/g' | sed -e 's/,$/\n/g' | sed -e '/^$/d' > logo
sed logo-old -e 's/^ *//g' | sed -e 's/, /_old\n/g' | sed -e 's/,$/\n/g' | sed -e '/^$/d' >> logo
sed logo-ubuntu -e 's/^ *//g' | sed -e 's/, /\n/g' | sed -e 's/,$/\n/g' | sed -e '/^$/d' >> logo
sed logo-small -e 's/^ *//g' | sed -e 's/, /_small\n/g' | sed -e 's/,$/\n/g' | sed -e '/^$/d' >> logo
sort -f logo > logo-list
```

できあがり。長いので折りたたみで。

<details><summary>OS ロゴリスト</summary><div>

```logo-list
"AOSC OS"
"AOSC OS/Retro"
AIX
Alpine
Alpine_small
AlterLinux
Amazon
Anarchy
Android
android
Antergos
antiX
Apricity
Arch
ArchBox
ArchCraft
ARCHlabs
ArchMerge
ArchStrike
Arch_old
Arch_small
ArcoLinux
Arcolinux_small
Artix
Artix_small
Arya
Bedrock
Bitrig
BlackArch
BLAG
BlankOn
BlueLight
Bodhi
bonsai
BSD
BunsenLabs
Calculate
Carbs
CentOS
CentOS_small
Chakra
ChaletOS
Chapeau
Chrom
Cleanjaro
Cleanjaro_small
ClearOS
Clear_Linux
Clover
Condres
Container_Linux
CRUX
CRUX_small
Crystal Linux
Cucumber
dahlia
DarkOs
Debian
Debian_small
Deepin
DesaOS
Devuan
DracOS
DragonFly
Dragonfly
Dragonfly_small
Drauger
Elementary
ElementaryOS_small
EndeavourOS
Endless
EuroLinux
Exherbo
Fedora
Fedora_old
Fedora_small
Feren
FreeBSD
FreeBSD_small
FreeMiNT
Frugalware
Funtoo
GalliumOS
Garuda
Gentoo
Gentoo_small
gNewSense
GNOME
GNU
GoboLinux
Grombyang
Guix
GUIX_small
Haiku
Hash
Huayra
Hyperbola
iglunix
instantOS
IRIX
Itc
janus
Kali
KaOS
KDE_neon
Kibojoe
Kogaion
Korora
KSLinux
Kubuntu
LangitKetujuh
LaxerOS
LEDE
LFS
LibreELEC
LinuxLite_small
LinuxMint
Linux_Lite
Live_Raizo
LMDE
Lubuntu
Lunar
macos
Mac_small
Mageia
MagpieOS
Mandriva
Manjaro
Manjaro_small
Maui
Mer
Minix
MXLinux_small
MX_Linux
Namib
Neptune
NetBSD
NetBSD_small
Netrunner
Nitrux
NixOS
NixOS_small
Nurunner
NuTyX
Obarun
OBRevenge
OpenBSD
OpenBSD_small
openEuler
OpenIndiana
openmamba
OpenMandriva
OpenStage
openSUSE
openSUSE_Leap
OpenSUSE_small
openSUSE_Tumbleweed
OpenWrt
Oracle
OS Elbrus
osmc
PacBSD
Parabola
Parabola_small
Pardus
Parrot
Parsix
PCLinuxOS
Pengwin
Pentoo
Peppermint
Pisi
popos
POP_OS_small
Porteus
PostMarketOS
postmarketOS_small
Proxmox
PuffOS
Puppy
PureOS
Qubes
Qubyt
Quibian
Radix
Raspbian
Reborn_OS
Redcore
Redhat
Redhat_old
Redstar
Refracted_Devuan
Regata
Regolith
Rosa
Sabayon
sabotage
Sailfish
SalentOS
Scientific
semc
Septor
SereneLinux
SharkLinux
Siduction
Slackware
Slackware_small
SliTaz
SmartOS
Solus
Source_Mage
Sparky
Star
SteamOS
SunOS
SunOS_small
SwagArch
t2
Tails
TeArch
Trisquel
TrueOS
Ubuntu
Ubuntu-Budgie
Ubuntu-Cinnamon
Ubuntu-GNOME
Ubuntu-MATE
Ubuntu-Mate
Ubuntu-Studio
Ubuntu_old
Univention
Venom
VNux
Void
windows10
Windows7
XFerience
Xubuntu
Zorin
```

</div></details>

あとは、これを1行ずつ読んで、`neofetch` に `--ascii_distro` オプションを付けてループしてやれば良いわけだ。(`-L` でロゴのみ表示)

```sh
#!/bin/sh

while read line; do
echo "Logo of: $line"
./neofetch -L --ascii_distro $line
done < logo-list
```

# おしまいに

ソースを見てみた所、Windows11 のロゴもあったのですが、help に追加されていないことが発覚。
この調子だと、いくつか見逃したロゴもある様子･･･。
やっぱソースコードを色々やりくりしてやらないと、全確認は難しそうです。(なので、タイトルもほぼ全ロゴとしています。)
そこまでの気力は無かったので、ここではスルー･･･。