Linuxのコマンド集

## はじめに
Linuxのコマンドを勉強したのですが、忘れることが多いので備忘録として書きました
# cdコマンド
ディレクトリを移動するコマンド
```
$ cd /home 
# /homeディレクトリに移動する
```
#### 特別なディレクトリの指定
ディレクトリには特殊な名前のディレクトリがあり、cdコマンドで移動する場合特殊な指定方法がある
| ディレクトリ | 意味 | 指定方法 |
|:-:|:-:|:-:|
|  カレントディレクトリ | 現在自分がいるディレクトリ  | .  |
|親ディレクトリ   |  一つ上の階層のディレクトリ | ..  |
|ホームディレクトリ   |/home/ユーザ名ディレクトリ   | ~  |
| ルートディレクトリ  |  /ディレクトリ |  / |
# pwdコマンド
カレントディレクトリを表示するコマンド
```
$ pwd
# /home 現在自分がいるディレクトリを表示している
```
# lsコマンド
ファイルやディレクトリの一覧を表示するコマンド
``` 
$ ls / 
etc home dev usr
```
#### パス名展開
パス名展開とは複数のファイルを一度に指定する時に使う便利なもの。lsコマンドだけではなく他のコマンドでも使用できる
 | 記号 | 意味 |
|:-:|:-:|
| *  | 任意の文字列  |
|  ? | 任意の1文字  |

  ```
  #拡張子がhtmlのファイルを表示したい時
  ＄　ls *.html
  index.html home.html
  # wから始まり4文字で終わるファイルの表示
  $ ls w???
  work
```
#### オプション　
オプションとはハイフンに何かの記号をつけることでコマンドの動作を変えることができる。lsコマンドでよく使うオプションは

- -l ファイルの詳細情報を表示する
- -a 隠しファイルも含めた全てのファイルを表示する
- -F ファイルの種別を表示する　

 | 記号| 意味 |
|:-:|:-:|
| /   |  ディレクトリ |
|  @ |  シンボリックリンク |
|   *|  実行可能ファイル |
|  記号なし  |  通常ファイル |

# mkdirコマンド
ディレクトリを作成するコマンド
```
$ mkdir work 
```
#### mkdirのオプション
-pで深い階層までのディレクトリを一度に作れる
```
$ mkdir -p test/2024/03
# これでtest、2024、０３というディレクトリを一度に作れる
```
# rmdirコマンド
空のディレクトリを削除するコマンド。空ではないディレクトリを削除しようとするとエラーになる
```
$ rmdir work
```
# catコマンド
ファイルの中身を表示するコマンド
```
$ cat /etc/hosts
```
# lessコマンド
ファイルの中身をスクロールで表示するコマンドファイルの中身が多い時に使う
```
$ less /etc/hosts
```
# touchコマンド
空のファイルを作成するコマンド。ファイルが存在しない時は作成し、存在するときはタイムスタンプを更新する
```
$ touch test test1
# 複数のファイルも間を開けることで一度に作れる
```
# rmコマンド
ファイルやディレクトリを削除するコマンド。rmで削除するとゴミ箱にいかずそのまま削除されるので注意が必要
```
$ rm test test1
# 複数のファイルも間を開けることで一度で削除する
```
#### rmで使うオプション
- -r ディレクトリも合わせて削除する
```
$ rm -r work
```
- -iファイルの削除前に確認する
```
$ rm -i work
```
# mvコマンド
ファイルの移動、ファイル名を変更するコマンド
```
$ mkdir work #新しいディレクトリの作成
$ touch file #新しいファイルの作成
$ mv file file1 # ファイル名の変更
$ mv file work # ファイルを移動
```
mvコマンドのオプション
- -i 上書き前に確認する
```
$ mv -i file file1
```
# cpコマンド
ファイル、ディレクトリをコピーするコマンド。コピー先のファイルがすでにあると上書きされるので注意する
```
$ cp file new_file #ファイルをコピー
$ cp file work # ファイルをディレクトリ内にコピー
```
cpコマンドのオプション
- -i 上書きする前に確認する
```
$ cp -i file new_file 
```
-  -r ディレクトリをコピーする
```
$ cp -r work new_work
```
# lnコマンド
リンクを張るコマンド。リンクとはLinuxではファイルに別名をつけることができ、別名をつけることをリンクを張るという。lnコマンドを使用用途としては
- 長いパス名を省略したい時
- 複数のバージョンを共存させ最新を区別したい時
などがあるリンクにはハードリンクとシンボリックリンクがある
#### ハードリンク
- 一つのファイルに複数の名前をつける
- ハードリンクのファイルをを消す方法は全てのハードリンクのファイルを消す
#### シンボリックリンク
- リンク先のパス名が書かれた特殊なファイル
- シンボリックリンクを残したままファイルを削除したり、移動したりするとファイルを見れなくなる
```
$ln file1 file2
# ハードリンクを張る、オプションをつけないとハードリンクになる
```
lnコマンドのオプション
- -s シンボリックリンクを張る

```
$ ln -s file1 file3
```

# findコマンド
ファイルを検索するコマンド

```
$ find . -name REMDME.md -print
# findコマンドは検索するディレクトリ、検索条件、検索アクションの順で書く上の場合は.がディレクトリ、-name REMDME.mdが検索条件、-printが検索アクション
```

#### よく使われる検索条件
- -name ファイル名を指定して検索。ファイル名の大文字小文字は区別する
```
# ワイルドカードが使える（他の検索条件でも使用可能）*を使って指定する時は''で囲うこと
$ find . -name'*.html` -print
```
- -iname -nameと同じ、違いは-inameは大文字小文字を区別しない
- -type ファイルの種類で検索
```
# -type fは通常ファイル
$ find . -type f -print

# -type lはシンボリックリンク
$ find . -type l -print

# -type dはディレクトリ
$ find . -type d -print
```
# chmodコマンド
ファイルやディレクトリのパーミッション（操作の権限）を設定する
```
$ chomod [u,g,o,a][+,-,=][r,w,x][ファイルorディレクトリ]
# 書き方は誰に、権限の変更、どの権限を、の順番になる
```
| 記号 | 意味 | 記号 | 意味 | 記号 | 意味 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| u | 所有者  |  + |  権限の追加 |  r |  読み取り |
|  g | グループ  | -  |  権限の削除 | w  | 書き込み  |
|  o | その他ユーザー  | =  | 記述した権限にする  | x  |  実行 |
|  a |  全ユーザー |   |   |   |   |
# chownコマンド
ファイルの所有者やグループを変更する

```
$ chown [ユーザーorはグループ] [ファイルorディレクトリ]

# 例
# test1.txtのユーザー所有権を変更する
$ chow root test1.txt

#　グループの所有権も変更する場合
$ chow root:root test1.txt
```
# psコマンド
実行中のプロセス（実行中のプログラム）を表示するコマンド
```
$ ps
```
#### psコマンドで使うオプション
- aux 全ユーザーのプロセス、詳細情報を表示する。オプションだが　-をつけなくて良い
# killコマンド
ジョブ（まとめて実行されるプロセスの集まりがジョブ）やプロセスを終了させるコマンド
```
kill %1[ジョブID]
kill 4965[プロセスID]
```