「LinuC Level1」に合格した時の話

# はじめに

「LinuC Level1」ってどんな感じですか？と聞かれた時に答えられる為の備忘録です。

想定読者は下記のとおりです。
- これからLinuC Level1を受験しようかなと考えている方
- LinuC Level1受験に向けて勉強している方

勉強中に残したノートから役に立ちそうなものをピックアップしました。**後から見返してみて気がつきましたが、101の内容がほとんどです。**

## 勉強方法

いたって普通になにも特別なことはせず、主題毎に下記の順で行いました。

1. 「Linux教科書 LinuCレベル1 - 翔泳社」（通称:あずき本）を読む
2. Ping-tで演習(2週)
3. 公式の例題を2021年から最新まで解く

Ping-tでは1問毎に正解を参照して、知らないことを覚えてからもう1週する方法をとりました。

## MacでLinux環境を試したいあなたへ

実際にコマンドを実行したい時はLimaで試しました。MacでWSLのようにLinux仮想マシンを起動できます。Windows環境の方はWSLで良いと思います。

[GitHub - lima-vm/lima: Linux virtual machines, with a focus on running containers](https://github.com/lima-vm/lima)

参考にした記事はこちら↓
[Lima: Parallels と VMWare なしで macOS で Linux 仮想機を使うツールの紹介 | DevelopersIO](https://dev.classmethod.jp/articles/lima-using-vm-on-macos-without-parallels-vmware/)

:::note info
デバイス関係の操作(mkfs/mount)を試したい場合は、環境が完全の独立したUTMやVirtualBoxなどのハイパーバイザを使用した方が良いでしょう。
:::

# tarの圧縮オプション忘れがち

作成の`-c (Create)`や抽出の`-x (eXtract)`は覚えやすいですが、圧縮フォーマットについては忘れがちでした。古参ほどそれっぽいオプションが割り当てられるので、**登場順で覚える**ことにしました。

| オプション | 効果               | フォーマット登場時期 |
| ----- | ---------------- | ---------- |
| -z    | アーカイブをgzipでフィルタ  | 1992年頃     |
| -j    | アーカイブをbzip2でフィルタ | 1996年頃     |
| -J    | アーカイブをxzでフィルタ    | 2009年頃     |

なお「z」の次が「j」な理由について、ChatGPT曰く『「j」が「zip」の語感に似ているからではないでしょうか？』とのことです。（**事実かどうかはさておき**覚えるには丁度いいかと思います）

# psコマンドがややこしい

ハイフンがついたりついてなかったりするのは「UNIXオプション」と「BSDオプション」の2種類が利用できるためです。**効果の違いがあるものだけ覚えれば、あとは雰囲気で行きましょう。**

| オプション    | 効果                 |
| -------- | ------------------ |
| ax,-e,-A | 全てのプロセスを表示         |
| u,-u     | 実行ユーザーを表示          |
| p,-p     | PIDを指定(オプション無しと同等) |
| l,-l     | 親プロセスのPIDや実行優先度を表示 |
| -f       | フルフォーマット(詳細)で表示    |
| e        | コマンド名や環境変数を表示      |
| f,-H     | ツリー(階層)表示          |

試験とは直接関係はないですが、参考にした記事はこちら↓
[psコマンドに潜むBSDとSystemVの系譜｜unknown protocol](https://note.com/usop/n/n0fc0058c229c)
[あなたはps -ef派なのか、auxf派なのかをちょっとだけまとめてみた | pyama.fun](https://pyama.fun/archives/6029)

# パッケージマネージャーもややこしい

ほとんど同じサブコマンドが利用できますが、アップデート系は挙動が違ったり、同等機能が無かったりします。また、aptに関しては旧コマンド(apt-xxxx)で覚える必要があります。~~この主題1.04が一番面倒でした。~~

特に注意した点は下記のとおり。
- rpmはアンインストールがerase(-e)
- パッケージ情報を確認するapt系の「show」に対して、yum系は「info」
	- ただし、dpkgは「show」ではなく「status」
- apt-fileにはsearchと同等のfindサブコマンド、showと同等のlistサブコマンドがあるが**apt-cacheにfindとshowは無い。**
- aptの旧コマンドに`yum list`に相当する機能が無い。`dpkg -l`を使う
- サブコマンドに省略形は無い
	- npmとごっちゃになって「apt i tmux」とかできそうで、**できない**

最終的にはスプレッドシートにapt新、apt旧、yum、dpkg、rpmで対応表を作りました。全てのコマンドについて検証したわけでは無いので実運用では参考までに。

![aptとyumの違い.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459707/281ab5e6-aa06-3d45-ecd9-f7a9ed29e3f6.png)

:::note info
ネットで検索すると`dnf`に関する情報が出ると思います。RHEL8からは`yum`ではなく、`dnf`を使いますが少なくともLinuC Level1の範囲ではそのまま`dnf`を`yum`に読み替えて問題ありません。
:::

# シェルのパターンと正規表現は似て非なるもの

どちらも`*`や`?`などの記号を使ってパターンマッチングを行いますが別物です。わかっているつもりでも、いざ**この中からパターンに当てはまるものを全部選べ**となるとわりとミスが多かったです。

| 記号    | パターン         | 正規表現                    |
| ----- | ------------ | ----------------------- |
| *     | 0文字以上の任意の文字  | **直前の**文字を0回以上繰り返し      |
| ?     | 任意の1文字       | **直前の**文字が0回または1回       |
| []    | 指定した文字のいずれか  | ←同じ                     |
| {n,m} | 指定した文字列のいずれか | **直前の**文字がn回以上、m回以下繰り返し |

# viの操作はゲームで覚える

ゲームでvi(vim)の操作を覚えることができるサイトです。Level4から有料らしいですが、基本的な操作は序盤で十分だと思うので試しにどうぞ。
[Learn VIM while playing a game - VIM Adventures](https://vim-adventures.com)

# 結局CIDRとIPアドレスの数は丸暗記した

計算すればいい話なんですが、まあよく使う範囲で丸暗記することにしました。全部覚えなくても/20や/27あたりを覚えておけば全部いけると思います。実際に**利用可能な数はIPアドレスの数から2を引いてください。**

| CIDR | サブネットマスク        | IPアドレスの数 |
| ---- | --------------- | -------- |
| /20  | 255.255.240.0   | 4096     |
| /21  | 255.255.248.0   | 2048     |
| /22  | 255.255.252.0   | 1024     |
| /23  | 255.255.254.0   | 512      |
| /24  | 255.255.255.0   | 256      |
| /25  | 255.255.255.128 | 128      |
| /26  | 255.255.255.192 | 64       |
| /27  | 255.255.255.224 | 32       |
| /28  | 255.255.255.240 | 16       |
| /29  | 255.255.255.248 | 8        |
| /30  | 255.255.255.252 | 4        |

# オンライン受験(OnVUE受験)について

同じオンライン受験でもAWS認定試験では「環境について細かく指摘された」や「担当が外国人が日本語が通じなかった」などの情報があったので不安でしたが、特にトラブルなく終えることができました。

ただし、**公式がWindowsでの受験を推奨しているので**デスクトップPCで受験しましたが、部屋のチェックでWebカメラの配線がギリギリでそこだけは四苦八苦しました。

# さいごに

試験結果は101が693点、102が760点でした。思ったより101が低かったのですが、まあ良しとします。難易度はどちらも同じぐらいだと思います。勉強時間も101と102同じです。

Linuxは実務や趣味で少し触ったことがある程度から勉強を始めましたが、最初の資格には丁度いい規模と難易度に感じました。個人で取得するには**そこそこな値段**をしますが、取得してよかったと思います。会社で補助が受けられる方にはオススメします。

実務で活かすにはSSH周りの深掘りとネットワークの基礎をもう少し+Gitに関する知識が欲しいなと感じました。Level2は実務経験を積んでからかなと思います。