Linuxコマンド

# 目次
[■■よく使うコマンド■■](#よく使うコマンド)

[■移動・表示](#移動表示)
[【 cd 】ディレクトリ間を移動](#-cd-ディレクトリ間を移動)
[【 ls 】ファイル・ディレクトリの一覧表示](#-ls-ファイルディレクトリの一覧表示)
[【 pwd 】カレントディレクトリ表示](#-pwd-カレントディレクトリ表示)
[【 cat 】ファイルの中身表示](#-cat-ファイルの中身表示)

[■作成・削除・コピー](#作成削除コピー)
[【 touch 】ファイル作成](#-touch-ファイル作成)
[【 mkdir 】ディレクトリ作成](#-mkdir-ディレクトリ作成)
[【 rm 】ファイル削除](#-rm-ファイル削除)
[【 rmdir 】空のディレクトリ削除](#-rmdir-空のディレクトリ削除)
[【 rm -r 】ファイルとディレクトリまとめて削除](#-rm--r-ファイルとディレクトリまとめて削除)
[【 cp 】ファイル・ディレクトリをコピー](#-cp-ファイルディレクトリをコピー)

[■名称変更・ファイルの移動](#名称変更ファイルの移動)
[【 mv 】ファイル名変更・ディレクトリ名変更](#-mv-ファイル名変更ディレクトリ名変更)
[【 mv 】ファイル移動](#-mv-ファイル移動)

[■ファイルを探す](#ファイルを探す)
[【 find 】ファイル検索](#-find-ファイル検索)



[■プロンプトのカスタマイズ](#プロンプトのカスタマイズ)
[・現在のディレクトリのみ表示 (長いパスも表示されない)](#現在のディレクトリのみ表示-長いパスも表示されない)
[・一般的なデフォルト設定](#一般的なデフォルト設定)

[■エイリアス](#エイリアス)
[・長いパスを省略](#長いパスを省略)

[■オプション](#オプション)
[【 -qq 】コマンド出力を非常に静かに](#--qq-コマンド出力を非常に静かに)
[【 -p 】(mkdir)親ディレクトリも同時に作成](#--p-mkdir親ディレクトリも同時に作成)
[【 -rf 】(rm)ファイルやディレクトリを再帰的に強制削除する](#--rf-rmファイルやディレクトリを再帰的に強制削除する)

[■その他](#その他)
[【 /dev/null 】出力破棄](#-devnull-出力破棄)
[【 2>/dev/null 】標準エラー出力](#-2devnull-標準エラー出力)
[【 df オプション 】ディスク容量確認](#-df-オプション-ディスク容量確認)


# ■■よく使うコマンド■■

# 移動・表示

<br>

### 【 cd 】ディレクトリ間を移動
```bash:コマンド
# ホームディレクトリ移動
cd

# 一つ上のディレクトリ移動
cd ..

# 二つ上のディレクトリ移動
cd ../../

# ルートディレクトリ移動
cd /

# 任意のディレクトリ移動※ここではVSCodeディレクトリに移動
cd /home/vscode
```

### 【 ls 】ファイル・ディレクトリの一覧表示
```bash:コマンド
ls

# 隠しファイルを含め全て表示
ls -a

# ファイルの詳細表示
ls -l

# 縦表示(数字の１)
ls -1

# 縦表示(ディレクトリ→ファイルの順に表示)
ls -1 --group-directories-first
# エイリアス設定
vim ~/.bashrc
alias <lsv>='<ls -1 --group-directories-first>'
source ~/.bashrc
```


### 【 pwd 】カレントディレクトリ表示
```bash:コマンド
pwd
```

### 【 cat 】ファイルの中身表示
```bash:コマンド
cat <ファイル名>
```


<br>

# ■作成・削除・コピー

### 【 touch 】ファイル作成
```bash:コマンド
# 複数作成の場合
 touch <ファイル名1> <ファイル名2>	
```

### 【 mkdir 】ディレクトリ作成
```bash:コマンド
# 複数作成の場合
mkdir <ファイル名1> <ファイル名2>

# 親ディレクトリも同時に作成 → カレントディレクトリが`user`で`work`が存在せず`project`を作成
mkdir -p /home/user/work/project
```

### 【 rm 】ファイル削除
```bash:コマンド
# 複数削除の場合
rm <ファイル名1> <ファイル名2>
```



### 【 rmdir 】空のディレクトリ削除
```bash:コマンド
rmdir <ディレクトリ名>
```

### 【 rm -r 】ファイルとディレクトリまとめて削除
```bash:コマンド
rm -r <ディレクトリ名>
```

### 【 cp 】ファイル・ディレクトリをコピー

```bash:コマンド
cp <コピー元> <コピー先>

# ファイルをコピー(同じディレクトリ)
cp <既存のファイル名> <新しいファイル名>

# ディレクトリをコピー※中のファイルもコピーされる
cp -r <既存のディレクトリ名> <新しいディレクトリ名>
```

<br>
<br>
<br>


# ■名称変更・ファイルの移動

### 【 mv 】ファイル名変更・ディレクトリ名変更
```bash:コマンド
# ファイル名変更
mv <変更前のファイル名> <変更後のファイル名>

# ディレクトリ名変更※スラッシュ( "/" )が入る
mv <変更前のディレクトリ名>/ <変更後のディレクトリ名>/
```

### 【 mv 】ファイル移動
```bash:コマンド
# 単体の場合
mv <ファイル名> <移動先ディレクトリ>


# 複数作成の場合
mv <ファイル名1> <ファイル名2> <移動先ディレクトリ>
```



# ファイルを探す

### 【 find 】ファイル検索

```bash:コマンド
# 基本的な形式
find <検索開始ディレクトリ> <検索条件> <アクション>

# -name ファイル名指定(大文字小文字区別する)
find / -name .ssh

# -iname ファイル名指定(大文字小文字区別しない)
find / -iname .ssh
```

```bash:コマンド
# 特定のディレクトリを検索 (-type d)
find / -type d -name .ssh

# 特定のファイルを検索(-type f)
find / -type f -name .ssh

# ワイルドカード("*") クオーテーションで囲むことを推奨
find / -name "*ssh"
# -> システム全体で名前が「ssh」で終わるファイルやディレクトリを探す
```

<br>
<br>
<br>

# ■プロンプトのカスタマイズ

<br>

###  現在のディレクトリのみ表示 (長いパスも表示されない)

```bash:コマンド
export PS1="\W\$ "
```
![screenshot_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711935/ec448e89-be51-bdf4-3b8b-2b127654e759.png)

<br>

### 一般的なデフォルト設定

```bash:コマンド
export PS1="\[\e]0;\u@\h: \w\a\]\[\e[32m\]\u@\h\[\e[33m\] \w\[\e[0m\]\$ "
```
以下のような表記に戻す
![screenshot_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711935/308c6b15-cdf8-e81e-47c4-76f8ce5a91a8.png)

<br>

# ■エイリアス

<br>
### 長いパスを省略
よく使う長いパスに対して、エイリアスを設定して簡単にアクセスできるように出来ます。
これで、`docs` と入力するだけで、指定した長いパスにすぐに移動できます。

```bash
alias docs="cd /home/user/documents"
```


# ■オプション

### 【 -qq 】コマンド出力を非常に静かに

-q は `quiet` を意味し、通常の出力を減少させます。
-qq は `quiet` オプションをさらに強化し、ほとんどまたは完全に出力を抑制します。
※例
```dockerfile
RUN apt-get update -qq
```

### 【 -p 】(mkdir)親ディレクトリも同時に作成

1. `/home/user/documents` が既に存在していることが前提。
2. もし `/home/user/documents/work` が存在していない場合、`mkdir -p` はまず `work` ディレクトリを作成します。
3. その後、 `/home/user/documents/work/project` ディレクトリを作成します。

```bash
mkdir -p /home/user/documents/work/project
```

### 【 -rf 】(rm)ファイルやディレクトリを再帰的に強制削除する
```bash
rm -rf directory
```
`-r`: (recursive:再帰的) 再帰的に削除します。つまり、ディレクトリとその中に含まれるすべてのファイルやサブディレクトリを削除します。
`-f`: (force:強制) エラーメッセージを表示せず、強制削除を行います。

**再帰的削除**

1. 指定したディレクトリの中にディレクトリが含まれていた場合、再びそのディレクトリの中に入って同じ削除処理を繰り返す。
2. サブディレクトリ内のすべてのファイルやサブディレクトリを処理し終えたら、元のディレクトリに戻り、最後にそのディレクトリ自体を削除。



# ■その他

### 【 /dev/null 】出力破棄
```bash:コマンド
/dev/null
# -> ここに送られたデータはすべて削除
```

### 【 2>/dev/null 】標準エラー出力
```bash:コマンド
find / -name ".ssh" 2>/dev/null
# -> 権限エラーを出力せず .ssh を探します
```

### 【 df オプション 】ディスク容量確認
```bash:コマンド
df -h | sort -k 2 -rh
```
ディスクファイルシステム
`-h`は人間が読める表記 human
`-k`はキーで、ソートする列を指定
`-r`がリバースで、降順していすることで大きい数字から並ぶ