Bashプロンプトを今更変更する：YYYY/MM/DD hh:mm:ss ユーザ@ホスト:カレントディレクトリ$（下線付き）

# とりあえず、今はコレにした：YYYY/MM/DD hh:mm:ss ユーザ@ホスト:カレントディレクトリ$（下線付き）
```
export PS1='\[\e[4m\]\D{%Y/%m/%d} \t \u@\h:\w\$\[\e[0m\] '
```

こんな感じになります。下線ついていると意外と見やすいです。
![スクリーンショット 2016-02-20 14.05.59.png](https://qiita-image-store.s3.amazonaws.com/0/26565/8716ce7d-c1ee-d256-50e7-e77a0ae19792.png)

これを ~/.bashrcとかに書いておきます。

# 先に表示したい文字列を決める
`\[\e[4m\]`こういうのが、何か面倒くさそう。。てなるので、一旦無視します。こういうのは、文字装飾で必要なので表示したい文字列とは関係なし。後でいいです。

このページ見れば、どういうのが表示出来るかだいたい分かります。
- [Bash Prompt HOWTO: > 2.5. Bash Prompt Escape Sequences](http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.html)
- [bashのプロンプトを変更するにはbashのプロンプトを変更するには](http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html)

私のやつだと、文字装飾無視するとこうなります。

```
# 文字装飾なし
export PS1='\D{%Y/%m/%d} \t \u@\h:\w\$ '

# 文字装飾あり（完成形）
export PS1='\[\e[4m\]\D{%Y/%m/%d} \t \u@\h:\w\$\[\e[0m\] '
```

- '全体をシングルクォーテーションで囲む'：お決まり
- \D{%Y/%m/%d}：YYYY/MM/DD
- \t：hh:mm:ss
- \u：ユーザ
- \h：ホスト
- \w：カレントディレクトリ
- 空白・@・$は、ただ表示したい文字列

# 最後に表示文字列を装飾する
まず、`\[\e[4m\]`これが何なのか分解して、ざっと理解します。

- 色の制御とかは、`\[`・・・`\]`で囲む（・・・に↓を入れる
- 色の部分：`\e[色属性m`

なので、あとは色属性のところを好きなようにチョイスすれば良いということです。
`\[\e[0;32m\]`の`0;32`が純粋にその部分。

では、0;32は何なのか？と言うと。。

- 0は通常フォント、1とするとbold、4は下線、という感じ。
- ;は区切り。なので、下線だけで色はいいわ。という場合は、4だけ書くという感じ。
- 32の3が文字の色指定を表す。4とすると背景色、という感じ。
- 32の2が具体的な色を表す。2だと緑、1だと赤、という感じ。

私のやつで言うと、色は付けてなくて、下線だけの装飾ということになります（上の添付画像の通り）。

3は何色でとかは、末尾の参考サイトなどに載ってます。

## ただ、ここで注意！：装飾は設定したらしっぱなし
下線だけの装飾と言いつつ（`\[\e[4m\]`の部分）、最後にも`\[\e[0m\]`という装飾が付いてます。

```
export PS1='\[\e[4m\]\D{%Y/%m/%d} \t \u@\h:\w\$\[\e[0m\] '
```

なんでかというと、これが無いと下線つきっぱなしでこうなるからです。

![スクリーンショット 2016-02-20 15.06.20.png](https://qiita-image-store.s3.amazonaws.com/0/26565/c713c418-5c11-a2de-a3e6-3eb4655c448c.png)

なので、こっからは0＝通常フォント（装飾なし）でお願いします。という設定を最後にしているんです（つまり、リセット的な）。

これで、本編終わり。


# オマケ1：さらに、コマンド結果は色付きがいい
という場合は、こんな感じです。

```
# 下線＆コマンド結果は色付きで
export PS1='\[\e[0m\]\[\e[4m\]\D{%Y/%m/%d} \t \u@\h:\w\$\[\e[0;32m\] '

# 下線だけ（参考）
export PS1='\[\e[4m\]\D{%Y/%m/%d} \t \u@\h:\w\$\[\e[0m\] '
```

![スクリーンショット 2016-02-20 15.14.01.png](https://qiita-image-store.s3.amazonaws.com/0/26565/9b6094ec-2abc-7945-89c3-f54c31fcf1c5.png)

下線だけの場合との違いは以下だけです。色を始めにリセットしてるのがポイントです。

- 最初に、`\[\e[0m\]`で、こっからまた文字色は色なしで（リセット的な）をやってます
- 最後に、`\[\e[0;32m\]`で、文字色は32=緑でお願いしますをやってます（＝コマンド結果）

# オマケ2：でも、全部一色は嫌でディレクトリとかは色変えたい
その場合は、Bashプロンプトのカスタムではなくて、lsコマンドのカラー設定で対応したほうが良いと思います。UNIX系統によって、ちょっとやり方が違うみたいです。

| 系統 | オプション | 環境変数 |
|:-------------|:----------|:--------|
|BSD系（Mac）  | -G         |LSCOLORS |
|GNU系（Linux）| --color    |LS_COLORS|

この辺が参考になります。
- [MACのターミナルで色つき表示色々](http://neko-mac.blogspot.jp/2015/03/mac_18.html)
- [ls実行時に表示される配色を変更したい](http://www.itmedia.co.jp/help/tips/linux/l0372.html)


# なぜ今更？：やっぱ地味に便利だし、あと残しておかないとすぐ忘れるから
こういうことが出来ることはずっと前から知ってたんですが、意外とやらなかったりしてました。あるいはやっても次の現場で忘れてました。で、ちょっとした作業ログとかをコンソールからぺぺっと貼り付けたい時に、pwdとかdateとか打ったログが一緒になくて、「コレってどこで叩くだっけ？」とか、「いつやったやつだっけ？」とかなるので、気が向いてやることにした次第です（まぁ、プレーンテキストでコピペすると、下線とか色はなくなりますけどね）。あと、しばらくブログを書いてなかったので、何かまた再開するキッカケに。また面倒くさくなって書かなくなりそうだけど。。

# 他に参考にさせて頂いた記事
- [Linuxで、bash プロンプトを素敵で実用的なものに変更する](https://jp.linux.com/news/linuxcom-exclusive/416957-lco20140519)
- [シェル - echoで文字に色をつける その1](http://www.m-bsys.com/linux/echo-color-1)