【Linux】カスタマイズTerminal！

こんにちは！こちらは[AMBL株式会社のAdvent Calendar](https://qiita.com/advent-calendar/2022/ambl-rd)の記事です。

早速ですが、皆さんはTerminalをよく使っていますか？私は使っています。
Terminalと言っても、基本的には`WSL2`か`Linux`を愛用しています。
ここでは、皆さんに紹介したいことがあります。

それが、カスタマイズTerminalです！

すでにカスタマイズされている方はぜひYour Styleを教えてください！

# やりたいこと

Terminalをカスタマイズして、コマンドを楽しく打てること！

# Terminal

`Windows`の`WSL2`のTerminal（VS Code）は下記のようなものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2290515/5bccda7c-1fe3-2682-2b76-e1451308e92a.png)
うん、あまり面白くないですね。

では早速、やってみましょう！

# 修正対象ファイル

`Linux`上では`~/.bashrc`を修正して、Terminalをカスタマイズします。

`~/.bashrc`とはなんぞや？については下記を参照してください！

https://wa3.i-3-i.info/word13649.html

## 修正対象

今回のTerminalに関する変数は`PS1`になります。
ですので、`~/.bashrc`の最後の方に下記のように記載すれば簡単にTerminalをカスタマイズできます。

```bash
PS1+="\$(git branch 2> /dev/null | grep '^*' | colrm 1 2 | xargs -I BRANCH echo -n \"" # check if git branch exists
export PS1
```

更に下記のようにカラーコードを指定することで色も変えられます。

```bash

# Color
FMT_BOLD="\[\e[1m\]"
FMT_DIM="\[\e[2m\]"
FMT_RESET="\[\e[0m\]"
FMT_UNBOLD="\[\e[22m\]"
FMT_UNDIM="\[\e[22m\]"
FG_BLACK="\[\e[30m\]"
FG_BLUE="\[\e[34m\]"
FG_CYAN="\[\e[36m\]"
FG_GREEN="\[\e[32m\]"
FG_GREY="\[\e[37m\]"
FG_MAGENTA="\[\e[35m\]"
FG_RED="\[\e[31m\]"
FG_WHITE="\[\e[97m\]"
FG_YELLOW="\[\e[33m\]"
BG_GREY="\033[100m"
BG_BLACK="\[\e[40m\]"
BG_BLUE="\[\e[44m\]"
BG_CYAN="\[\e[46m\]"
BG_GREEN="\[\e[42m\]"
BG_MAGENTA="\[\e[45m\]"
BG_RED="\[\e[41m\]"
BG_YELLOW="\[\e[43m\]"

PS1+="${BG_MAGENTA}${FG_CYAN}${FG_BLACK} \u@\h "

```


# MY STYLE

それでは私のスタイルを皆さんに紹介したいと思います！
私はTerminalをこういうふうにしました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2290515/c1863f2f-c2d0-b6c2-b89f-55a3d8fc5219.png)

{仮想環境}|{デバイス情報}|{今のパス}|{git branch命}|{commitある・なし}

下記のコードを参照してください！

```bash
# count untracked files
parse_git_count() {
    expr $(git status --porcelain 2>/dev/null | grep -E "^ M|^??|^ D" | wc -l)
}

# change color between clean/dirty tree
parse_git_fg() {
    [[ $(git status -s 2>/dev/null) ]] && echo -e "\033[93m\e[1m BRANCH 🔀 $(parse_git_count)" || echo -e "\033[92m\e[1m BRANCH ✅ 0"
}

# Virtual ENV
function virtualenv_info() {
    # Get Virtual Env
    if [[ -n "$VIRTUAL_ENV" ]]; then
        # Strip out the path and just leave the env name
        venv="${VIRTUAL_ENV##*/}"
    else
        # In case you don't have one activated
        venv=''
    fi
    [[ -n "$venv" ]] && echo "($venv)"
}

VENV="\$(virtualenv_info)"

# change color between clean/dirty tree

# disable the default virtualenv prompt change
export VIRTUAL_ENV_DISABLE_PROMPT=1

PS1="${FG_BLACK}${BG_GREEN}${VENV}"
PS1+="${BG_MAGENTA}${FG_CYAN}${FG_BLACK} \u@\h "
PS1+="${BG_BLUE}${FG_GREY} \w "
PS1+="\$(git branch 2> /dev/null | grep '^*' | colrm 1 2 | xargs -I BRANCH echo -n \"" # check if git branch exists
PS1+="${BG_GREY}  "                                                                    # end FILES container / begin BRANCH container
PS1+="\$(parse_git_fg)${FMT_BOLD}  "                                                   # print current git branch
PS1+="${FMT_RESET}\")"                                                                 # end last container (either FILES or BRANCH)
PS1+="${FMT_RESET}\n"
PS1+="${FMT_BOLD}${FG_GREEN}╰> $ ${FMT_RESET}"
export PS1

```


# さいごに

`~/.bashrc`は非常に便利です。
少し追加すれば開発はより面白くなり、やる気も出るじゃないかと！

ぜひ使いこなしてみてください！

皆さんのおすすめスタイルがあればぜひシェアしてください！
さらに面白くしたいです！

それでは！