Terminal(iTerm2) 入門

# Terminal(iTerm2) 入門

## 1. zsh 設定
### 1.1 bash から zsh に移行 (zsh使用中ならスキップ)

macOS Catalina から デフォルトシェルが bash から zsh に変更されたため警告が表示されるようになった。
これを機に移行する。
参考) https://support.apple.com/ja-jp/HT208050


**※ 以下手順はCatalina にアップデートしていることを想定**

#### 1. 以下を実行後

```sh
$ chsh -s /bin/zsh
```

新しいタブを開いて `echo $SHELL` を実行すると `/bin/zsh` になっている事がわかる

#### 2. 設定ファイルを移行

```sh
$ cat ~/.bash_profile >> ~/.zprofile
$ cat ~/.bashrc >> ~/.zshrc
```

### 1.2 補完を有効にする

```sh
$ brew install zsh-completions
$ cat <<\EOF >> ~/.zshrc
fpath=(/usr/local/share/zsh-completions $fpath) # 補完強化プラグイン
autoload -Uz compinit && compinit # 補完有効

# ↓ gitのブランチ名をTerminal上に表示
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
zstyle ':vcs_info:git:*' formats '%b'

# プロンプトにカレントディレクトリパス・ユーザー名を表示
PROMPT='%c %n$ '

# ワイルドカード使用時の no matches found 回避
setopt nonomatch
EOF
$ source ~/.zshrc
```

#### トラブルシューティング
※ もしタブを開いて以下の警告が表示されたら

```
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
```

以下の対応を行う

```sh
$ compaudit
There are insecure directories:
/usr/local/share
$ chmod go-w '/usr/local/share'
```


### 1.3 hstr 導入（履歴検索を便利にする）

```sh
$ brew install hstr
$ hstr --show-zsh-configuration >> ~/.zshrc
$ cat <<EOF >> ~/.zshrc
export HISTSIZE=1000 # メモリに保存される履歴の件数
export SAVEHIST=100000 # 履歴ファイルに保存される履歴の件数
setopt extended_history     # 履歴に実行時間も保存する
setopt hist_reduce_blanks   # 余分なスペースを削除して履歴に保存する
setopt hist_no_store        # historyコマンドは履歴に登録しない
setopt hist_expand          # 補完時に履歴を自動的に展開
setopt hist_save_no_dups    # 入力したコマンドが直前のものと同一なら古いコマンドのほうを削除する
setopt hist_find_no_dups    # ラインエディタでヒストリ検索し、ヒットした場合でも重複したものとみなさない
setopt hist_ignore_all_dups # 入力したコマンドを履歴に登録する時、同一がすでに存在した場合登録しない
setopt hist_no_functions    # 関数定義のためのコマンドは履歴から削除する
setopt hist_no_store        # 履歴参照のコマンドは履歴に登録しない
setopt hist_reduce_blanks   # コマンド中の余分な空白を削除する
setopt inc_append_history   # 履歴をインクリメンタルに追加
setopt share_history        # 他のシェルのヒストリをリアルタイムで共有する
EOF
```

## 2. 基本操作

|  動作 | コマンド | 補足 |
| ---- | ---- | ---- |
| タブを開く | command + T ||
| タブを閉じる | command + W ||
| タブを移動 | command + 左右キー ||
| 入力履歴表示 | ctrl + R | hstr を導入することでインクリメンタルサーチができるようになる |
| 履歴の一つ前を選択 | ctrl + P ||
| 履歴の一つ次を選択 | ctrl + N ||
| プロセスを強制終了 | ctrl + C | コマンドの応答がない場合に使用 |
| 画面をクリア | ctrl + L | |
| コマンドを補完 | tab | 入力中のコマンドが補完される |

## 3. よく使うコマンド

Mac上で使用するコマンドを厳選しました。
詳しいオプションは以下で調べてください。

Linux入門 コマンドリファレンス
https://webkaru.net/linux/command-reference/

|コマンド|使用方法リンク|
| ---- | ---- |
| ls | [使い方](https://eng-entrance.com/linux_command_ls)|
| cd | [使い方](https://eng-entrance.com/linux-command-cd)、[一つ前のディレクトリに戻る](https://blog.kawa-xxx.jp/entry/20120706/1341559487)
|pwd|[使い方](https://eng-entrance.com/linux-command-pwd)|
|touch|[使い方](https://eng-entrance.com/linux-command-touch)|
|mkdir|[使い方](https://eng-entrance.com/linux-command-mkdir)|
|cp|[使い方](https://eng-entrance.com/linux-command-mkdir)|
|mv|[使い方](https://eng-entrance.com/linux_command_mv)|
|rm|[使い方](https://eng-entrance.com/linux_command_rm)|
|rmdir|[使い方](https://eng-entrance.com/linux-command-rmdir)|
|ps|[プロセスとは](https://eng-entrance.com/linux-process)、[基本的使い方](https://eng-entrance.com/linux-command-ps)|
|kill| [使い方](https://eng-entrance.com/linux-command-kill)|
|pgrep, pkill| [使い方](https://qiita.com/uraura/items/12ff6112fd392f1be424)|
|which|[使い方](https://webkaru.net/linux/which-command/) |
|vim|[使い方](https://qiita.com/JpnLavender/items/fabcc79b4ab0d52e1f6d)|
|cat| [使い方](https://eng-entrance.com/linux_command_cat) |
|echo| [使い方](https://eng-entrance.com/linux-command-echo)|
|less| [使い方](https://qiita.com/ine1127/items/64b5b6cf52471c3fe59c)|
|tail -f| [使い方](https://eng-entrance.com/linux-command-tail)|
|zip|[使い方](https://qiita.com/griffin3104/items/948e38aab62bbb0d0610)|
|open|[使い方](http://www.aizulab.com/blog/mac-open-command/)|

## 4. 便利な設定

### ■ ls 短縮コマンド

```sh
$ cat <<EOF >> ~/.zshrc
# 便利なコマンド
alias ll='ls -lh'
alias la='ls -lha'
EOF
```

### ■ 新しいタブを開いたとき、前のタブのディレクトリを引き継ぐ

[Profile] → [General] → 「Reuse previous session's directory」にチェックを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44953/c9b858fc-bcca-bff0-fa2a-e643112c4edd.png)