Linuxの基礎コマンド纏め

## Linuxの仕組み
Linuxではターミナルにコマンド入力を行う事で様々な操作を実行できます。  
これはCLI(Command Line Interface)であるシェルがユーザーから受け取ったコマンドを解釈した後、OSの中核となるカーネルにコマンド実行を要求し、カーネルが実行結果をディスプレイに送信する事で実現しています。  
今回はそのコマンドについて纏めていきます(使用頻度の多いオプションのみ記載しています)。

## コマンド一覧
**ディレクトリ操作を行う**

| コマンド | 機能                           | オプション                                                                                                  |
| :------- | :----------------------------- | :---------------------------------------------------------------------------------------------------------- |
| cd       | カレントディレクトリを移動する | -                                                                                                           |
| pwd      | カレントディレトリを表示する   | -                                                                                                           |
| ls       | ディレクトリの中身を表示する   | `-a` : 全てのファイルを表示する <br> `-l` : ファイルの詳細情報を表示する <br> `-F` : ファイル種別を表示する |
<br>

**ファイル・ディレクトリ操作を行う**

| コマンド | 機能                                       | オプション                                                                                                                             |
| :------- | :----------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- |
| touch    | ファイルを作成する                         | -                                                                                                                                      |
| mkdir    | ディレクトリを作成する                     | `-p` : 親ディレクトリも作成する                                                                                                        |
| rmdir    | 空のディレクトリを削除する                 | -                                                                                                                                      |
| rm       | ファイル・ディレクトリを削除する           | `-r` : ディレクトリ削除する                                                                                                            |
| mv       | ファイル・ディレクトリを移動・リネームする | `-i` : 同一ファイル・ディレクトリがある場合は確認する                                                                                  |
| cp       | ファイル・ディレクトリをコピーする         | `-i` : 同一ファイル・ディレクトリがある場合は確認する                                                                                  |
| ln       | ハードリンク・シンボリックリンクを作成する | `-s` : シンボリックリンクを作成する                                                                                                    |
| find     | ファイル・ディレクトリを検索する           | ※オプションではなく検索式 <br> `-name` : ファイル名で検索する <br> `-type` : ファイルタイプで検索する <br> `-print` : パス名を表示する |
<br>

**ファイルの中身を表示する**

| コマンド | 機能                                   | オプション                                |
| :------- | :------------------------------------- | :---------------------------------------- |
| cat      | ファイルの中身を表示する               | `-n` : 行番号を追加する |
| less     | ファイルの中身を別ウィンドウで表示する | -                                         |
| head     | ファイルの先頭部分を表示する           | `-n` : 行数を指定して表示する             |
| tail     | ファイルの末尾部分を表示する           | `-n` : 行数を指定して表示する             |
<br>

**ユーザー管理の操作を行う**

| コマンド | 機能                                 | オプション                      |
| :------- | :----------------------------------- | :------------------------------ |
| chmod    | ファイルのアクセス権を変更する       | `-R` : ディレクトリを対象にする |
| chown    | ファイルの所有者名を変更する         | `-R` : ディレクトリを対象にする |
| chgrp    | ファイルのグループ名を変更する       | `-R` : ディレクトリを対象にする |
| id       | 自分のユーザーidとグループidを表示する | -                               |
| sudo       | コマンド単位でroot権限を付与する | -                               |

<br>

**プロセス・ジョブの操作を行う**

| コマンド | 機能                                 | オプション                                                                        |
| :------- | :----------------------------------- | :-------------------------------------------------------------------------------- |
| ps       | 実行中のプロセスを表示する           | `-l` : 長いフォーマットで表示する <br> `aux` : 全ユーザのプロセスの詳細を表示する |
| jobs     | 実行中のジョブを表示する             | -                                                                                 |
| fg       | ジョブをフォアグラウンドに切り替える | -                                                                                 |
| bg       | ジョブをバッググラウンドに切り替える | -                                                                                 |
| kill     | プロセス・ジョブを終了する           | -                                                                                 |
<br>

**コマンドの使い方を表示する**

| コマンド | 機能                                 | オプション                                                                        |
| :------- | :----------------------------------- | :-------------------------------------------------------------------------------- |
| help     | コマンドのマニュアルを表示する(簡易)            | -                                                                                 |
| man       | コマンドのマニュアルを表示する(詳細) | -                                                                                 |

## chmodの使い方(補足)

パーミッションは`rwx` × 3で表され、user・group・otherの順で表示する。
`ls -l ファイル名`でパーミッションを確認できる。
```bash
-rwxr--r--  ... example.txt
```
このパーミッションを訳すと以下のようになる。
| ファイル種別| user | group  | other | 
| :---| :------- | :--| :--- |
| `-`:ファイル | `r`:読み込み<br>`w`:書き込み<br>`x`:実行 | `r`:読み込み  | `r`:読み込み | 

<br>

パーミッションを変更する。
| コマンド | 機能                                 |
| :------- | :----------------------------------- |
| chmod u+x ファイル名    | userに実行(execute)権限を与える|
| chmod u-x ファイル名    | userの実行(execute)権限を消去する|

一括で変更したい場合は8進数を使うと便利。対応表は次の通り。
| 記号 | r | w | x |
| :------- | :------- | :------ | :------ |
| 8進数 | 4 | 2 | 1 |

与えたい権限の8進数の和を指定する。
| コマンド | 機能                                 |
| :------- | :----------------------------------- |
| chmod 755 ファイル名    | user:読み込み・書き込み・実行の権限を与える<br>group:読み込み・実行の権限を与える<br>other:読み込み・実行の権限を与える