Linux基本コマンド

# はじめに
<!-- 発端や概要を記載 -->
Linuxの基本コマンドについて勉強したので、メモ書きとして残します。
オプションについては全て書くと長くなるので、よく使いそうなものだけ記します。
# 目次
<!-- タイトルとアンカー名を編集 -->
1. [ファイル操作(ls, cp, mv, rm)](#ファイル操作)
1. [ディレクトリ操作(pwd, cd, mkdir, rmdir)](#ディレクトリ操作)
1. [ファイルの内容表示(cat, more, less)](#ファイルの内容表示)
1. [検索(find, grep, which)](#検索)
1. [コマンド書式やオプションの確認(man, --help)](#コマンド書式やオプションの確認)
1. [参考文献](#参考文献)

<!-- 各チャプター -->
# ファイル操作
- ### lsコマンド

`ls`はファイルを一覧表示するコマンドです
```
$ ls [オプション] [ファイルまたはディレクトリ]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -l        |詳細表示する|大体指定するオプション|
| -a        |隠しファイルも表示する|
| -r        |通常の逆の順番で表示する|
| -t        |更新時間の順番で並べる|新→古の順|
| -S        |ファイルサイズの順番で表示する|大→小の順|
| -X        |拡張子ごとにまとめて表示する|
| -R        |サブディレクトリ内も再起的に表示する|

- ### cpコマンド

`cp`はファイルをコピーするコマンドです
```
$ cp [オプション] [コピー元] [コピー先]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -p        |元ファイルの情報を保持する|設定ファイル編集前のバックアップ用によく使う|
| -r        |ディレクトリをコピーする|付けないとディレクトリのコピーができない|
| -i        |確認してからファイルを上書きする|
| -f        |確認せずにファイルを上書きする|上書き先ファイルを削除してからコピーしてる|

- ### mvコマンド

`mv`はファイルを移動するコマンドです
```
$ mv [オプション] [移動元ファイル] [移動先ファイル]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -i        |確認してからファイルを上書きする|
| -f        |確認せずにファイルを上書きする|上書き先ファイルを削除してから移動してる|

- ### rmコマンド

`rm`はファイルを削除するコマンドです
```
$ rm [オプション] [ファイルまたはディレクトリ]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -r        |ディレクトリを中身のファイルごと削除する|付けないとディレクトリを削除できない|
| -i        |確認してからファイルを削除する|
| -f        |確認せずにファイルを削除する|

<a id="#Chapter2"></a>
# ディレクトリ操作
- ### pwdコマンド

`pwd`は現在のディレクトリを表示するコマンドです
```
$ pwd
/home/usera
```

- ### cdコマンド

`cd`はディレクトリを移動するコマンドです
```
$ cd [ディレクトリ]
```

- ### mkdirコマンド

`mkdir`はディレクトリを作成するコマンドです
```
$ mkdir [オプション] [ディレクトリ]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -p        |指定されたディレクトリの上位ディレクトリも作成する|dir1/dir2のように書く|
| -m        |作成するディレクトリのパーミッションを設定する|

- ### rmdirコマンド

`rmdir`は空のディレクトリを削除するコマンドです
```
$ rmdir [オプション] [ディレクトリ]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -p        |指定した階層までのディレクトリを一括で削除する|dir1/dir2のように書く|

<a id="#Chapter3"></a>
# ファイルの内容表示
- ### catコマンド

`cat`はファイルの内容を表示するコマンドです
```
$ cat [オプション] [ファイル]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -n        |行番号を付加して表示する|
- ### moreコマンド

`more`はファイルの内容をページャで表示するコマンドです(ファイル末尾まで行くと終了)
```
$ more [ファイル]
```

| 操作コマンド |    内容     |    備考    |
|----------:|-------------|------------|
| スペース   |次のページに進む|
| b         |前の一画面に戻る|
| f         |次の一画面に進む|
| /単語     |単語を検索する|nで検索結果を進む、Nで戻る|
| q         |終了する|

- ### lessコマンド

`less`はファイルの内容をページャで表示するコマンドです(qを入力するまで終了しない)
```
$ less [ファイル]
```

| 操作コマンド |    内容     |    備考    |
|----------:|-------------|------------|
| スペース   |次のページに進む|
| b         |前の一画面に戻る|
| f         |次の一画面に進む|
| ↑         |前の行に進む|
| ↓         |次の行に進む|
| /単語     |単語を検索する|nで検索結果を進む、Nで戻る|
| q         |終了する|

<a id="#Chapter4"></a>
# 検索
- ### findコマンド

`find`はファイルがどこのディレクトリに存在するか検索するコマンドです
```
$ find [パス] [オプション] [ファイル]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -name     |ファイルやディレクトリ名を指定|ワイルドカードが使用できる|
| -user     |所有者を指定|
| -group    |所属グループを指定|
| -newer    |任意のファイルの更新日時よりも後に変更したファイルやディレクトリを指定|
| -mtime    |任意の日数に更新されたファイルやディレクトリを指定|
| -atime    |任意の分数にアクセスされたファイルやディレクトリを指定|

- ### grepコマンド

`grep`はファイルの中からデータを検索するコマンドです(正規表現が使用できる)
```
$ grep [オプション] [検索条件] [ファイル]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -e        |検索条件の文字列を複数指定|-e 文字列1 -e 文字列2 のように書く|
| -i        |検索条件の文字列の大文字小文字の区別を付けない|
| -v        |検索条件の文字列と一致しない行を検索する|
| -F        |検索パターンを正規表現ではなく、固定文字列として扱う|fgrepコマンドで同じことができる|
| -E        |拡張正規表現で検索を行う|egrepコマンドで同じことができる|

#### 正規表現
| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| ^        |行頭を表す|
| $        |行末を表す|
| .        |任意の一字を意味する|
| *        |直前文字の0 回以上の繰り返しを意味する|
| [...]    |.. の中の任意の一字を意味する|
| [^...]   |.. の文字が含まれないことを意味する|
| \        |正規表現の記号をエスケープする|

#### 拡張正規表現
| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| ?        |直前文字が0回もしくは1回の繰り返しを意味する|
| +        |直前文字の1回以上の繰り返しを意味する|

- ### whichコマンド

`which`はPATH環境変数を参照してコマンドのパスを表示するコマンドです
```
$ which [コマンド]
```

<a id="#Chapter5"></a>
# コマンド書式やオプションの確認
- ### manコマンド

`man`はコマンドのオンラインマニュアルを表示するコマンドです
```
$ man [オプション] [コマンド]
```

| オプション |    内容     |    備考    |
|----------:|-------------|------------|
| -k        |全てのマニュアルページ説明文を検索し、マッチしたものを一覧表示する|--aproposオプションで同じことができる|

- ### --helpオプション

`--help`はコマンドの実行に使えるオプションを調べることができるオプションです
```
$ [コマンド] --help
```

<a id="#reference"></a>
# 参考文献
- [エンジニアカレッジ](https://engineercollege.jp/)

- [ブログ「ちゃんとメモとったか？」](https://hara-chan.com/)
- [ブログ「BioErrorLog Tech Blog」](https://www.bioerrorlog.work/)
- [Ping-t](https://ping-t.com/)