ターミナルとかのプロンプト表示を変更する

ターミナルとかのプロンプトを短くしたい、そんな時のお話。肝は`PS1`の書き方が・・・ちと覚えられない・・・こと。

# CentOS : Gitのブランチ名を表示する
- 環境
    - CentOS Linux release 7.9.2009 (Core)
    - GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
    - git-2.31.1

`[ユーザー名@ホスト名 現在ディレクトリ]$ `になっているのを色付きで以下みたいに変えます。

```bash:変更後イメージ
ユーザー名@現在ディレクトリ (Gitのブランチ名)
$ 
```
うっかりミス防止にGitのブランチ名がプロンプトに表示したいのです。

`git-prompt.sh`を探すときは`locate`コマンドを使うと便利そうです。今回は持っていないのでやりませんでしたが。
参考 : [locateコマンドについて詳しくまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-locate)

`git-prompt.sh`を持っていない場合は、https://github.com/git/git/tree/master/contrib/completion から`wget`できます。

```bash
# 1. 使っているシェルはBashです
$ echo $SHELL
/bin/bash

# 2. Gitをインストールした時に一緒に入っていたシェルを使います
$ ls -la /opt/git-2.31.1/contrib/completion/
total 128
drwxrwxr-x  2 root root  4096  3月 27 07:03 .
drwxrwxr-x 25 root root  4096  3月 27 07:03 ..
-rw-rw-r--  1 root root    14  3月 27 07:03 .gitattributes
-rw-rw-r--  1 root root 78497  3月 27 07:03 git-completion.bash # <<< これを使う
-rw-rw-r--  1 root root  4801  3月 27 07:03 git-completion.tcsh
-rw-rw-r--  1 root root  7117  3月 27 07:03 git-completion.zsh
-rw-rw-r--  1 root root 17778  3月 27 07:03 git-prompt.sh      # <<< これを使う

# 3. .bashrcにプロンプト文字をPS1で定義します
$ vi ~/.bashrc
# ------以下を追記------------------------------
source /opt/git-2.31.1/contrib/completion/git-prompt.sh
source /opt/git-2.31.1/contrib/completion/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
export PS1='\[\033[32m\]\u@\w\[\033[36m\]$(__git_ps1)\[\033[00m\]\n\$ '
# ------ここまで------------------------------

# 4. 反映する
$ source ~/.bashrc
```

|PS1の文字|意味|参考サイト|
|:--|:--|:--|
|\u|現在のユーザー名|[6.9 Controlling the Prompt - Bash Reference Manual](http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt)|
|\h|ホスト名|[6.9 Controlling the Prompt - Bash Reference Manual](http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt)|
|\w|現在の作業ディレクトリ。$HOMEはチルダで短縮されます ($PROMPT_DIRTRIM変数を使用) 。|[6.9 Controlling the Prompt - Bash Reference Manual](http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt)|
|\[|印刷されない文字のシーケンスを開始します。これは端末制御シーケンスをプロンプトに埋め込むために使用できます。|[6.9 Controlling the Prompt - Bash Reference Manual](http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt)|
|\]|印刷されない文字のシーケンスを終了します。|[6.9 Controlling the Prompt - Bash Reference Manual](http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt)|
|\[\033[{色番号}m\]|文字に色をつける。|[BashのPS1についての忘備録 - HRR Co., Ltd.](https://hrroct.hatenablog.com/entry/2015/08/11/204431)|

























# Cloud9 : {ユーザ}を消す
- 参考 : [BashのPS1についての忘備録 - HRR Co., Ltd.](https://hrroct.hatenablog.com/entry/2015/08/11/204431)

```bash
# 1. 使っているシェルを確認する(違うシェルを使っている場合は次で変更するファイルが違うはず)
ec2-user:~/environment $ echo $SHELL
/bin/bash

# 2. PS1の内容を変更する
ec2-user:~/environment $ vi ~/.bashrc
---------変更内容-----------------------
変更前) PS1='\[\033[01;32m\]$(_cloud9_prompt_user)\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)" 2>/dev/null) $ '
変更後) PS1='\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)" 2>/dev/null)\n$ '
------------------------------------------------------------------------

# 3. 反映する
ec2-user:~/environment $ source ~/.bashrc 

# 4. 完成！
~/environment
$ 
```

以下が緑の太字で内容をユーザ名を表示という意味になるのでそこを削除しました。
`\[\033[01;32m\]$(_cloud9_prompt_user)\[\033[00m\]`
以下が青の太字でディレクトリパス(ブランチ名)を表示するという意味になるので、その後ろに改行`\n`入れてみました。
`\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)" 2>/dev/null)`

変更前
![スクリーンショット 2021-02-24 18.30.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/7ef0ea91-9e81-e752-38c1-0e33923a53e0.png)
変更後
![スクリーンショット 2021-02-24 18.40.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/e7d29b4a-88fe-ac83-c167-687c6afd8207.png)


# Git Bash : {ユーザー}@{ホスト} MINGW64'を消す
- 参考
    - [Git Bashのプロンプトから不要な箇所を消してスッキリさせる - Qiita](https://qiita.com/EichiSanden/items/6dd7edb24ffb66b01276)
    - [bashのプロンプトを変更するには - atmarkit.co.jp](https://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html)

1. `/c/apps/Git/etc/profile.d/git-prompt.sh`をエディタで開く
1. 14~17行目をコメントアウト(下記コード参照)して保存する
2. Git Bashを再起動する

```sh:git-prompt.sh
#...省略...
	PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
	PS1="$PS1"'\n'                 # new line
	# PS1="$PS1"'\[\033[32m\]'       # change to green << 行をコメントアウト
	# PS1="$PS1"'\u@\h '             # user@host<space> << 行をコメントアウト
	# PS1="$PS1"'\[\033[35m\]'       # change to purple << 行をコメントアウト
	# PS1="$PS1"'$MSYSTEM '          # show MSYSTEM << 行をコメントアウト
	PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
	PS1="$PS1"'\w'                 # current working directory
	if test -z "$WINELOADERNOEXEC"
#...省略...
```