Linuxとは？概要から基本の操作、コマンドを復習

<br>

## ■ はじめに
<br>
Linuxは、1991年に開発されたUnix系のオープンソースOSです。<br>
WindowsやmacOSとは異なり無料で配布されているため、誰でも自由に使用・改変することができます。

この記事でLinuxとは何かから基本的な操作をご説明しますので復習に役立ててみてください。

## ■ 目次
<br>

1. [Linuxって何？](#1-linux-って何)
2. [基本の操作](#2-基本の操作)
3. [よく使うコマンド](#3-よく使うコマンド)
4. [よく使うディレクトリ](#4-よく使うディレクトリ)
5. [まとめ](#5-まとめ)

## 1. Linux って何？
<br>

Linux（リナックス）は世界中で使用されており、特にサーバー環境や開発現場で人気があるOSです。<br>
名前の由来は開発者のファーストネームである `Linus` と、
UNIX系OSの最後の文字 `X` を組み合わせて出来たと言われているようです。

Linuxの特徴：
- **オープンソース**：誰でも自由に使用・改変することができる
- **安定性**：サーバーや開発環境で使用されることが多い
- **柔軟性**：カスタマイズがしやすい

有名なディストリビューション[^1]には、`Ubuntu` , `CentOS`, `Debian`などがあり、これらは用途に応じて使い分けられています。

## 2. 基本の操作
<br>

### 2-1. Shell（シェル）
Linuxでは、**Shell** というインターフェースを通じて、OSとのやりとりを行います。
その中で最も一般的なシェルが **bash**（バッシュ）です。
シェルは、コマンドを入力することでファイル操作やシステム制御を行うためのツールです。

そのためターミナルを開いて、コマンドを打ち込むといった操作が基本になります。

### 2-2. ファイルの操作
<br>
ここからはファイルやディレクトリを操作する基本コマンドの説明になります。

#### ディレクトリを移動する（cd）
```bash
cd /path/to/directory
```
:::note
`cd`は「Current Directory」（今いるディレクトリ）を意味します。
上記ではCurrent Directory を /path/to/directory に移動することとなります。
:::

#### 現在のディレクトリを表示する
```bash
pwd
```
:::note
`pwd`は「Print Working Directory」を意味します。
Working DirectoryをPrint（出力）する、といったイメージです。
:::
#### ファイル一覧を表示する
```bash
ls -l
```
:::note
`lsは`「list segments」の略で、その後の「-l」はオプションです。
オプションには-lのほかに「-a」, 「-F」, 「-1」などがあります。
:::

#### 新しいディレクトリを作成する
```bash
mkdir new_directory
```
:::note
`mkdir`は「make directory」を意味しており、ディレクトリの作成を行います。
:::

#### ファイルを削除する
```bash
rm filename.txt
```

:::note
`rm`は「remove」を意味しており、ファイルの削除を行います。
オプションに「-r」をしていすることで、ファイルを格納しているディレクトリも削除することが可能です。
:::

Linuxでは上記のようなコマンドを覚えることが重要です。
シンプルなコマンドが多いので、一度覚えると非常に効率よく操作することができます。

## 3. よく使うコマンド
<br>
ここでは日常的に使う便利なLinuxコマンドのいくつかの例を紹介します。

### 3-1. ファイルの閲覧・編集
<br>

#### ファイルの中身を表示する
```bash
cat filename.txt
```
:::note
`cat` は「concatenate（連結）」を意味しており、連結してファイルの中身を表示します。猫を操作することはできません。
:::

#### ファイルの前半部分だけ表示する
```bash
head filename.txt
```
:::note
`head` は対象のファイルの頭（前半）部分だけを表示します。
:::

#### ファイルの後半部分を表示する
```bash
tail filename.txt
```
:::note
`tail` は対象のファイルの尾（後半）部分だけを表示します。
:::


#### テキストエディタを使ってファイルを編集する（nanoやviなど）
```bash
nano filename.txt
```
:::note
`nano`はLinixで使用できるテキストエディタです。
nano以外には`vi`や`vim`など多岐にわたり利用することができますが、基本的には`vi`が多い印象です。
:::

### 3-2. プロセス管理
<br>

Linuxでは、複数のプログラム（プロセス）が同時に動作しており、それらを管理するコマンドもあります。

#### 実行中のプロセスを確認する
```bash
ps aux
```

:::note
`ps` は 「process status」を意味しており、プロセスの稼働状態を確認することができます。
:::

#### 特定のプロセスを終了する（-9で強制終了）
```bash
kill [プロセスID]
```

:::note
少し物騒にな単語ですが、文字通りの意味でプロセスを止めるためのコマンドです。
:::

### 3-3. ネットワークの確認
<br>

#### ネットワークの接続状況を確認する
```bash
ip
```

:::note
ネットワークのルーティングやデバイス、ポリシーなどに関する確認や設定ができるコマンドです。
`a` オプションで設定されている全てのIPアドレスを表示させることもできます。
:::

#### 他のホストに接続できるか確認する
```bash
ping www.example.com
```

:::note
`ping` コマンドはネットワークの疎通確認やサーバの死活監視をするために使用します。
相手側から正しい応答が返ってくれば、機器間でのネットワーク接続や設定に問題がないことが確認できます。
:::

## 4. よく使うディレクトリ
<br>
Linuxには、決まったディレクトリ構造があり、これを理解することでシステム全体を把握しやすくなります。


|ディレクトリ|説明|
|:-----------:|:------------:|
|/etc|設定ファイルが格納されるディレクトリ|
|/var[^2]|ログや一時ファイルが保存される場所|
|/bin[^3]|基本的なコマンドの実行ファイルが置かれている|
|/usr|ユーザー向けのアプリケーションやライブラリが格納される場所|
|/home|ユーザーごとのホームディレクトリ。各ユーザーが作業する場所|

<br>

## 5. まとめ
<br>
Linuxは最初こそコマンドがややこしいため取っつきにくいかもしれませんが、
基本的なコマンドを抑えることで段々と慣れてくるようになります。
本記事で紹介したコマンドやディレクトリ構造を覚えて、Linuxの操作に役立ててみてください。

[^1]:Linux カーネルから構築された、インストール可能なオペレーティングシステムのこと。
[^2]:/var：ログファイルやメール、一時ファイルなど、変動するデータが保存されるディレクトリ。
[^3]:/bin：システムの基本的なユーティリティ（`ls`, `cp`, `mv`, `cat` など）が置かれている。