Linuxコマンドまとめ

## このページについて
Linuxコマンドを理解するため、使いたいときにさっと使えるようにするため、自分なりにまとめてみました。

## 参考
- [Linux標準教科書](https://linuc.org/textbooks/linux/)
- [【Linuxコマンド】tarでアーカイブを作成・展開する方法](https://www.sejuku.net/blog/51116)

ありがとうございます！

## Linuxコマンド
### 【ls】ファイル・ディレクトリの参照
`ls [オプション] [ファイル]`
- ファイルではなくディレクトリを指定した場合、指定したディレクトリ内にあるファイルやディレクトリを一覧表示できる。
- 絞り込む場合、ワイルドカード（*や?のこと）を使うことができる。
    - `ls *.conf`の場合、`.conf`で終わるファイルがリスト表示される
    - `ls ???.conf`の場合、ファイル名部分が3文字のconfがリスト表示される

| オプション | 説明 |
|:-:|:-:|
| -a  | .で始まる隠しファイルも出力  |
| -l  |  ファイル権限、ファイル所有者、更新日等も表示 |
| -t | 最終更新時間によってソートをして出力  |
| -r  | 逆順にソートをして出力  |

※`ls -al`のようにオプションを同時指定することもできる。

### 【cp】ファイルのコピー
`cp [オプション] コピー元　コピー先`
- コピー先が存在しないファイル名の場合、新たに作成される
- コピー先にディレクトリを指定した場合、コピー先の下にコピー元のファイルのコピーが作成される
- コピー先が存在するファイル名の場合、上書きされる

| オプション | 説明 |
|:-:|:-:|
|  -i | 処理を行うときに確認する  |
|  -r |  ディレクトリの中にある全てのファイル・ディレクトリに対してコピーする |
| -p  |  元ファイル情報を保持したままコピーを作成できる |

### 【mv】ファイルの移動（ファイル名の変更）
`mv 移動元ファイル 移動先ファイル`
- 移動先が存在するディレクトリの場合、移動元が移動先ディレクトリの下に移動する
- 移動元がファイル名、移動先が存在しないファイル名の場合、移動先のファイル名に変更される
  ※ディレクトリも同様

| オプション | 説明 |
|:-:|:-:|
| -i  | 処理を行うときに確認する  |
| -f  | 強制的に処理を実行する  |

### 【rm】ファイルの削除
`rm ファイル名`

| オプション | 説明 |
|:-:|:-:|
| -i  |  処理を行うとき確認する |
| -f  | 強制的に処理を実行する  |
|  -r | ディレクトリを対象にする。ディレクトリ野中にファイルやディレクトリも削除する  |

### 【pwd】現在のディレクトリの表示
`pwd`

### 【cd】ディレクトリの変更
`cd [ディレクトリ名]`
- 現在のディレクトリを、指定したディレクトリへ変更する

### 【mkdir】ディレクトリの作成
`mkdir ディレクトリ名`

| オプション | 説明 |
|:-:|:-:|
| -p  | 指定されたディレクトリの上位のディレクトリも作成する  |

### 【rmdir】ディレクトリの削除

`rmdir ディレクトリ名`
- 中が空である時のみディレクトリ削除できる
  ※ディレクトリにファイルが存在する場合は`rm -r`

| オプション | 説明 |
|:-:|:-:|
| -p  | 指定した階層までのディレクトリを一括で削除  |

### 【cat】ファイル内容を表示
`cat ファイル名`
※一度に全部表示される。行数がたくさんあると流れて確認できない。

| オプション | 説明 |
|:-:|:-:|
| -n  | 行番号を付加して表示する  |

### 【more】【less】ページャーを使った表示
- `more ファイル名`
- `less ファイル名`

※ページャーでファイルを開いたあと、`f`コマンドで次の画面に進む

### 【find】ファイルの検索
`find パス -name ファイル名`
- ファイルがどこのディレクトリに存在するか検索できる。

### 【grep】ファイルの中からデータを検索
`grep [オプション] 検索条件 [指定ファイル]`
- 指定ファイルはワイルドカードを使用した複数ファイルも可
- 検索条件は正規表現を使用可

| オプション | 説明 |
|:-:|:-:|
| -e  | 文字列を検索パターンとして扱う  |
| -i  | 検索パターンと入力ファイルの双方で、大文字小文字の区別を行わない  |
| -v  | 検索パターンとマッチしなかった行を選択する  |

### 【touch】ファイルのタイムスタンプの変更
`touch [オプション] ファイル名`
- 存在しないファイル名を指定する場合、中身が空であるファイルを作成する

### 【head】ファイルの先頭を取得
`head [オプション] ファイル名`

| オプション | 説明 |
|:-:|:-:|
| -n  |  先頭から指定した行を標準出力する |
| -c  |  先頭から指定したバイト文を標準出力する |

### 【tail】ファイルの末尾を取得
`tail [オプション] ファイル名`

| オプション | 説明 |
|:-:|:-:|
| -n  |  末尾から指定した行を標準出力する |
| -c  |  末尾から指定したバイト文を標準出力する |
| -f | 変更をリアルタイムで変更を見ることができる |

### 【sort】テキストファイルの中身をソート
`sort [オプション] ファイル名`

| オプション | 説明 |
|:-:|:-:|
| -r  | 逆順でソートする  |
| -k n  | n列目のデータをソートする  |
| -n  | 数値としてソートする  |

### 【uniq】行の重複の消去
`uniq ファイル名`
- 直前の行と同じ内容があった場合、対象行を出力しない
  ※連続していない場合、消去の対象にならない

### 【tr】文字列の置き換え
`tr 文字列1 文字列2`
- 標準入力からのデータを文字ごとに置き換えることができる

### 【diff】ファイルの比較
`diff [オプション] ファイル1 ファイル2`
- 変更の有無を調べられる

| オプション | 説明 |
|:-:|:-:|
| -c  | context diff 形式で差分を出力する  |
| -u  | unified diff 形式で差分を出力する  |

### 【chmod】アクセス権の変更
`chmod モード ディレクトリ（またはファイル）`
モード指定の書き方は以下の2通りの記述方法がある。
- モードの書式を複数書き、カンマで区切って指定
- 8進数3桁で各ユーザのレベル指定

| オプション | 説明 |
|:-:|:-:|
| -R  | ディレクトリの中のディレクトリも変更する  |

### 【chown】所有者の変更
`chown ユーザ[:グループ] ディレクトリ（またはファイル）`

- ユーザとグループを変更するにはrootユーザーである必要がある

| オプション | 説明 |
|:-:|:-:|
| -R  | ディレクトリの中のディレクトリも変更する  |

### 【scp】ファイル送信
`scp [オプション] コピー元パス コピー先パス`
- ローカルからリモート、あるいはリモート同士でのファイル送信に使う
- 現在いない場所を指定する場合、`ユーザー名@ホスト名:`をパスに指定する必要がある

| オプション | 説明 |
|:-:|:-:|
| -i 秘密鍵ファイル | 秘密鍵ファイルを指定する  |
| -P  | ポート番号を指定する  |
| -r  | ディレクトリ内を再帰的にコピーする  |

### 【zip】ファイル圧縮
`zip [オプション] ZIPファイル [対象ファイル]`
- ファイルをzip形式で圧縮する。

| オプション | 説明 |
|:-:|:-:|
| -r  | ディレクトリも含めて圧縮する |
| -f | 変更があったファイルの分だけZIPファイルを更新する |
| -u | 変更があったファイルの更新または新規ファイルの追加だけを行う |
| -d | 	指定したファイルをZIPファイルから削除する |
| -j | 	パス情報を除いてファイルだけを格納する（階層無視） |


### 【unzip】zipファイルを展開する
`unzip [オプション] zipファイル 展開先ファイル`

### 【gzip】単一ファイルを高圧縮し元ファイルを削除する
`gzip [オプション]  圧縮したいファイル名`
- 基本的にその場で上書きして.gzとする。

| オプション | 説明 |
|:-:|:-:|
| -k  | 元ファイルを残す(keep) |
| -c| 圧縮結果を標準出力に出す |


### 【tar】複数ファイルを1つのアーカイブにする
`tar [オプション] アーカイブ名(.tar) ファイル1 ファイル2 ...`
| オプション | 説明 |
|:-:|:-:|
| -c  | アーカイブ作成(create) |
| -z | gzipで圧縮(.tar.gz)。圧縮元は削除されない。 |
| -f | アーカイブファイル名を指定 |
| -v | 	進捗表示 |
| -j | 	bzip2で圧縮(.tar.bz2)。圧縮元は削除されない。 |

## おわりに
まとめることでLinuxコマンドについて整理されました。
仕事で困ったときはこのページを活用してみようと思います。