【メモ】Linuxコマンド

## はじめに

Linuxについて学習したので、利用頻度が高そうなLinuxコマンドをまとめておきます。

## Linux コマンド一覧

| コマンド名 | 内容 |
|:-----------|:-----------|
| cd | カレントディレクトリの変更 |
| pwd | カレントディレクトリの表示 |
| ls | カレントディレクトリ内のファイルやディレクトリの一覧を表示する |
| mkdir | 新規ディレクトリの作成 |
| rmdir | 既存ディレクトリの削除 |
| cat | 24行以下のファイルの内容の確認 |
| less | 25行以上のファイルの内容の確認 |
| tail | ファイルの末尾から10行出力 |
| touch | ファイルの新規作成 |
| rm | ファイルの削除 |
| mv | ファイルの移動、ファイル名の変更 |
| cp | ファイルの複製 |
| ln | ハードリンクとシンボリックリンクの作成 |
| find | ファイルやディレクトリの検索 |
| chmod | ファイルやディレクトリのアクセス権限の変更 |
| chown | ファイルやディレクトリの所有者の変更 |
| ps | 現在実行されているプロセスのスナップショットの表示 |
| kill | 実行中のプロセスの強制終了 |

## Linuxコマンドのオプション一覧

上記コマンドの中でも、個人的に利用頻度が高いかつ忘れがちなLinuxコマンドのオプションについてまとめておきます。

### cd / または ~

- `/` は、ルートディレクトリに移動する
- `~` は、ホームディレクトリに移動する 

``` shell: 書き方
    $ cd /
    $ cd ~
```

### ls -l

長 (Long) 形式で、ファイルやディレクトリの一覧を表示する

``` shell: 書き方
    $ ls -l
```

### cat -n

行番号を追加して、24行以下のファイルの内容を表示する

``` shell: 書き方
    $ cat -n hoge.txt
```

### mkdir -p

指定されたディレクトリの上位ディレクトリも同時に作成する

``` shell: 書き方
    $ mkdir -p dir1/dir2/dir3
```

### rmdir -p

指定した階層までのディレクトリを一括で削除する。オプションをつけない場合は、指定のディレクトリのみ削除する

``` shell: 書き方
    $ rmdir -p dir1/dir2/dir3
```

### lessコマンド内での操作

| 項目 | 内容 |
|:-----------|:-----------|
| スペース | 次の1ページに進む |
| b | 前の画面に戻る |
| f | 次の画面に進む |
| ↑ | 前の行に戻る |
| ↓ | 次の行に進む |
| ↓ | 次の行に進む |
| /単語 | 単語を検索、nキーで検索結果をジャンプします |
| q | lessコマンドを終了する |

### tail -f

リアルタイムでファイルの変更を確認できる、リアルタイムでログファイルなどの変更を確認する際に活用するとよい

``` shell: 書き方
    $ tail -f hoge.txt
```

### rm -f

ファイル削除時の確認をスキップして、ファイルを削除する

``` shell: 書き方
    $ rm -f hoge.txt
```

### cp -r

ディレクトリを複製する

``` shell: 書き方
    $ cp -r dir1
```

### ln -s

シンボリックリンクを作成する。オプションをつけない場合は、ハードリンクが作成される

``` shell: 書き方
    $ ln -s dir1 dir2
```

### findコマンドの使い方

記載したパス配下のファイル名を検索できる

``` shell: 書き方
    $ find パス -name ファイル名
```

### chmodコマンドの使い方

8進数表記を利用した`chmod`コマンドの使い方についてまとめる

``` shell: 書き方
    $ chmod 8進数表記のモード ディレクトリ名
    $ chmod 8進数表記のモード ファイル名
```

- アクセス権限を`-rw-rw-r--`としたい場合：8進数で`664`と指定する
    - ユーザー：読取、書込
    - グループ：読取、書込
    - その他ユーザー：読取
- アクセス権限を`--w-rw-rw-`としたい場合：8進数で`266`と指定する
    - ユーザー：書込
    - グループ：読取、書込
    - その他ユーザー：読取、書込
- アクセス権限を`--w-rwxrwx`としたい場合：8進数で`277`を指定する
    - ユーザー：書込
    - グループ：読取、書込、実行
    - その他ユーザー：読取、書込、実行

パーミッションごとの8進数の対応表は以下の通りである。

| パーミッション | 内容 | 8進数 |
|:------------:|:------------:|:------------:|
| r | 読取 | 4 |
| w | 書込 | 2 |
| x | 実行 | 1 |

### chownコマンドの使い方

ファイルやディレクトリの所有者を変更するには、rootユーザである必要がある

``` shell: 書き方
    $ chown at-sacai dir3
    $ chown at-sacai hoge.txt
```

 ### killコマンド使用時の補足

`kill`コマンドを実行する前に、実行中のプロセスIDを確認するには`ps`コマンドを実行する。また、これから実行予定のコマンドの末尾に`$$`をつけて実行することで、コマンドのプロセスIDを確認できる

 ## メモ

 ### リダイレクト

 以下のコードで、`ls`コマンドの実行結果を、`output.txt`に出力できる。`cat`コマンドとリダイレクトを組み合わせて、あるファイルの中身を出力することも可能

``` shell: 書き方
    $ ls > output.txt
    $ ls 1 > ouoput.txt
```

### 標準出力と標準エラー出力

標準出力と標準エラー出力を1つのファイルに出力する際は、以下のコードを実行する

``` shell: 書き方
    $ ls -l hoge.txt > output.txt 2>&1
```

※標準エラー出力のみ行いたい場合は、以下のコードを実行する

``` shell: 書き方
    $ ls -l hoge.txt 2 > output.txt
```

### パイプ

パイプでつなげることで、パイプの前のコマンドと後ろのコマンドの標準入力が可能となる

``` shell: 書き方
    $ ls -l hoge.txt | less
```

### grepコマンドの使い方

ファイルの中からデータを検索できる、`find`コマンドはファイル名を検索するコマンド

``` shell: 書き方
    $ grep 検索条件 指定ファイル名
    $ grep hoge output.txt
```