Linux面白コマンド 7選

# はじめに
この記事はウェブクルー [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/webcrew) 13日目の記事になります。

# Linux面白コマンド 7選

突然ですが、linuxに`ls`コマンドというものが存在するのはご存じでしょうか？
通常であればフォルダの内容を表示してくれるものです。
```s
$ ls -l /
total 684
lrwxrwxrwx   1 root root      7 Apr 23  2020 bin -> usr/bin
drwxr-xr-x   2 root root   4096 Apr 23  2020 boot
drwxr-xr-x   8 root root   2740 Nov 17 17:29 dev
drwxr-xr-x 101 root root   4096 Nov 30 18:12 etc
drwxr-xr-x   3 root root   4096 May 27  2022 home
...
```

このコマンドをミスったり眠かったりして`sl`と打ってしまった経験はないでしょうか？

......、うんうん、ありますよね

linuxには`sl`コマンドというものが存在します。では実際に打ってみましょう。
(パッケージのインストールが必要です。`sudo apt install sl`など)

```sh 
$ sl

                                  (@@) (  ) (@)  ( )  @@    ()    @     O     @     O      @
                             (   )
                         (@@@@)
                      (    )

                    (@@@)
                  ====        ________                ___________
              _D _|  |_______/        \__I_I_____===__|_________|
               |(_)---  |   H\________/ |   |        =|___ ___|      _________________
               /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
              |      |  |   H  |__--------------------| [___] |   =|                        |
              | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
              |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
            __/ =| o |=-~~\  /~~\  /~~\  /~~\ ____Y___________|__|__________________________|_
             |/-=|___|=    ||    ||    ||    |_____/~\___/          |_D__D__D_|  |_D__D__D_|
              \_/      \_O=====O=====O=====O/      \_/               \_/   \_/    \_/   \_/

```
SLがターミナル上をかけてくれました(実際には動いています)
また、このコマンドには`-l`オプションがあり、すっきりしたSLが登場してくれます
```sh
$ sl -l

                              (@@) (  ) (@)  ( )  @@    ()    @     O     @     O      @
                         (   )
                     (@@@@)
                  (    )

                (@@@)
              ++      +------ ____                 ____________________ ____________________
              ||      |+-+ |  |   \@@@@@@@@@@@     |  ___ ___ ___ ___ | |  ___ ___ ___ ___ |
            /---------|| | |  |    \@@@@@@@@@@@@@_ |  |_| |_| |_| |_| | |  |_| |_| |_| |_| |
           + ========  +-+ |  |                  | |__________________| |__________________|
          _|--/O========O\-+  |__________________| |__________________| |__________________|
         //// \_/      \_/       (O)       (O)        (O)        (O)       (O)        (O)


```

こんな感じで、linuxにはちょっとユーモアのあるコマンドがいくつか存在します。
調べるといろいろ出てきますが、今日は7つ(SL含む)紹介しようと思います。

※これから紹介するコマンドはパッケージのインストールが必要なものがあります
記事ではdebian系のインストールを紹介していますが、Red-Had系の場合は読み替えてください
(`apt install sl` ⇒ `yum install sl`)

## ハッカー風コマンド
まずは`cmatrix`コマンド
実際に打ってみましょう
```s
$ sudo apt install cmatrix
$ cmatrix
```
![2022-11-30 182831.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976182/1cd39abf-53f9-74fd-7b77-7155cd7faaa8.png)

ランダムな文字列が、上から降ってくるようなアニメーションを表示できます。
なんか強そうですね。ハッカーになった気分です。


## 無限ループ表示コマンド
次はyesコマンド。
引数の文字列を無限に表示してくれます。何かに需要がありそうでなさそうですね。

```s
$ yes hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
...
```


## 牛にしゃべらせる
`cowsay`コマンドを使うことで牛に好きな言葉をしゃべらせることができます

```sh
$ sudo apt install cowsay
$ cowsay Hello
 _______
< Hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
```

実は牛だけではなく、いろいろなキャラクターが用意されています
表示できるキャラクターは`-l`オプションで表示できます。
(linuxのペンギンのキャラクターとかいます)

```s
$ cowsay -l
Cow files in /usr/share/cowsay/cows:
apt bud-frogs bunny calvin cheese cock cower daemon default dragon
dragon-and-cow duck elephant elephant-in-snake eyes flaming-sheep fox
ghostbusters gnu hellokitty kangaroo kiss koala kosh luke-koala
mech-and-cow milk moofasa moose pony pony-smaller ren sheep skeleton
snowman stegosaurus stimpy suse three-eyes turkey turtle tux unipony
unipony-smaller vader vader-koala www

$ cowsay -f hellokitty "出来立てのポップコーンはいかが？"
 __________________________________
< 出来立てのポップコーンはいかが？ >
 ----------------------------------
  \
   \
      /\_)o<
     |      \
     | O . O|
      \_____/
```
キティーちゃん。。なんか微妙かもしれない。。

## アスキーアート
文字をアスキーアートで表示するコマンドも用意されています。

```sh
$ sudo apt install figlet
$ figlet "Hello World"
 _   _      _ _        __        __         _     _
| | | | ___| | | ___   \ \      / /__  _ __| | __| |
| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` |
|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |
|_| |_|\___|_|_|\___/     \_/\_/ \___/|_|  |_|\__,_|
```
```sh
$ sudo apt install toilet
$ toilet "Hello World"
```
```
 m    m        ""#    ""#                 m     m               ""#        #
 #    #  mmm     #      #     mmm         #  #  #  mmm    m mm    #     mmm#
 #mmmm# #"  #    #      #    #" "#        " #"# # #" "#   #"  "   #    #" "#
 #    # #""""    #      #    #   #         ## ##" #   #   #       #    #   #
 #    # "#mm"    "mm    "mm  "#m#"         #   #  "#m#"   #       "mm  "#m##
```
(表示の関係で、コードブロックを分けています)


## 画像をアスキー表示する
画像をアスキーアートにすることもできます。
あんまり複雑な画像だとよくわからないことになるので、簡単な画像のほうがいいです
```s
$ sudo apt install aview
$ sudo apt install imagemagick
$ asciiview xxx.jpg
```
![2022-11-30 185310.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976182/b94a0533-0621-9f25-349d-227d3cedd2c0.png)


見えますか...? 見えます見えますあのキャラクターです


## 雪が降る
最後に冬っぽいものを紹介して終わろうと思います。
コマンド自体は特殊なコマンドというわけではないですが、良く紹介される1行です。

```s
$ ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S=["2743".to_i(16)].pack("U*");a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.1}'
```
![2022-11-30 190502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976182/5f4c54e1-d735-1355-7fd4-dd0a0579bc79.png)

これも実際には動いているので、コマンド打ってみると面白いです。

# あとがき
適当な紹介になってしまいましたが、いかがでしたでしょうか
普段は業務でしか使わないため、知らないコマンドも多かったのではないでしょうか

まあ、私もほとんど知識レベルで使うことなんてないんですが。
みなさんの息抜きになっていたら幸いです。