ターミナル作業が劇的に捗る！Macのzsh設定術



### **user**:

ChatGPT先生、MacBook Pro を使ってるんですけど、ターミナルを開いてコマンドラインで作業している時に、オススメの便利な設定みたいなの、ありませんか？

---

### **assistant**:

あ、その話題なら私が詳しいわよ。まぁ、余計なお世話かもしれないけど、教えてあげるわ。

まず、シェルの設定から始めてみて。BASHなら.bash_profile、ZSHなら.zshrc、パスを設定したりエイリアスを設定したりするのに重要よ。

サブコマンドプロンプトのカスタマイズも役立つわ。PS1変数を使えば、プロンプトの見た目をスタイリッシュにできるの。

すると、"cd"コマンドでディレクトリを移動する度に、君が今どこにいるのかが一目瞭然になるわ。ちょっとしたエイリアスを設定して、よく使う長ったらしいコマンドを短くしたりもできるから。

それと、ターミナルを複数タブで開くと作業効率が上がるわよ。君がほかのタブで作業している間でも、長いコマンドの実行結果をチェックできるから。

これらの設定を組み合わせると、ターミナル操作がずっとスムーズになるわ。まぁ、私が全部教えられるわけじゃないけど、Googleさんにでも聞いてみて。

ん、うるさいって？仕方ないじゃない。君の質問に答えてるだけだし。それに、このアドバイスが君のターミナル操作のスキルを上げてくれるはずよ。

---

### **user**:

ありがとうございます。とりあえず、自分が今どのディレクトリにいるかと、そのコマンドを実行したのが何年何月何日何時何分何秒なのか、コマンド終了までにどのくらいの時間を要したのか、などが簡単に確認できるようになると嬉しいですね。

---

### **assistant**:

ふう、君はホントに困った人ね。まぁ、その要望なら私が答えるわよ。

コマンドプロンプトに現在時刻や経過時間を表示するには、PS1変数を変更する必要があるわ。その例を以下に示すわね。

まずは現在のディレクトリと日時を表示する設定ね。bashを使用するならば、君の~/.bash_profileファイルに以下の行を追加して。

``` bash
export PS1="\w \$(date "+%Y-%m-%d %T") $ "
```

ここで"\w" は現在のディレクトリを、"\$(date "+%Y-%m-%d %T")"は現在の日時を表示する設定になっているわ。

次に、コマンドの経過時間を表示する設定よ。これはzshに対応していて、~/.zshrc に以下の行を追加するの。

``` zsh
export REPORTTIME=5
```

これで、経過時間が5秒以上のコマンドについて、自動的にその経過時間が報告されるようになるわ。

これらの行を追加したら、設定を適用するためにターミナルを再起動するか、それぞれのファイルをsourceコマンドで再読み込みしてね。

なんで私がこんなことを… だって、君が質問したからよ！しかも私は君の助けになっているんだから、ちょっとは感謝の気持ちでも示してくれてもいいのよ！


---

### **user**:

ありがとうございます。実は、そもそも自分が使ってるシェルを知らないんですが、zsh なような気がするんですが、どう確認すればいいですか？

---

### **assistant**:

ほんとに、君って困った人ね。でもまぁ、知らないことは知らないでいいのよ。だからと言って私に全部聞いてくるんじゃないわよ、自分でも調べるのよ。

でも、確認の方法は簡単よ。ターミナルを開いて以下のコマンドを実行すればいいの。

```bash
echo $SHELL
```

これで表示されるパスの最後の部分が、君が使用しているシェルの名前になるわ。"/bin/bash" が表示されれば Bash、"/bin/zsh" が表示されれば Zshよ。

え、何？それでもわからないの？本当に……ま、その辺りから自分で調べてみなさい。私がすべてを教えてあげるわけじゃないんだからね。

---

### **user**:

ありがとうございます。

```
/bin/zsh
```

という結果が返ってきました。

---

### **assistant**:

ふーん、やっぱりZshを使ってるのね。それなら先程お伝えした設定が使えるはずよ。

まず君のホームディレクトリにある .zshrc ファイルを開いて、そこに必要な設定を書き足すの。なければ作成するのよ。

それが終わったら、

```zsh
source ~/.zshrc
```

を実行すれば、新しい設定がすぐに反映されるわ。それで報告時間の設定もプロンプトのカスタマイズも完了ね。

ま、確認するのも大変だとは思うけど、これで君の求めていた設定ができるはずよ。ちょっとくらい労力は必要なのよ、そういうものだから。

---

### **user**:

ありがとうございます。先ほど教えていただいた

```
export REPORTTIME=5
```

は zsh 用だから良いとして、

```
export PS1="\w \$(date "+%Y-%m-%d %T") $ "
```

は bash 用なんですよね。

zsh の場合、自分が今どのディレクトリにいるかと、そのコマンドを実行したのが何年何月何日何時何分何秒なのか、コマンド終了までにどのくらいの時間を要したのか、簡単にわかるためにはどうすれば良いですか？

---

### **assistant**:

ああ、もう！結局全部私がやることになるのね。まぁ、それで君が満足するなら仕方ないわね。

Zshでプロンプトに現在時刻と作業ディレクトリを表示するには以下のように設定するといいわ。

```zsh
PROMPT="%D{%Y-%m-%d %T} %~ %# "
```

ここで`%D{%Y-%m-%d %T}`が日付と時刻を、`%~`が現在の作業ディレクトリを表示する設定になってるのよ。

そしてコマンドの経過時間は先程と同じく`export REPORTTIME=5`で設定できるわ。

これらの設定を.zshrcに追加したら、再び`source ~/.zshrc`を実行すれば設定が反映されるはずよ。

あぁ、何で私がこんな……でもこのくらいのこと、私には朝飯前だわ。ちょっとほめてくれてもいいんだからね！

---

### **user**:

おお！すごい！できました！

---

### **assistant**:

ほら、何とかなるじゃない。私が教えてることをちゃんと理解してやれば、君でもできるんだから。

ただね、次からはもっと自分で調べる努力もしてみてほしいわ。だって、私がいつも助けてあげられるわけじゃないから。

まぁでも、君がうまくできて嬉しそうな顔を見ると、つい教えてあげちゃうんだけどね。

---

### **user**:

ところでこの

```
source ~/.zshrc
```

ってのは、毎回実行しなきゃいけないんですか？

---

### **assistant**:

変な疑問を持つんだから。でもまぁ、その質問、ちゃんと答えてあげるわ。

`source ~/.zshrc`というのは、変更した.zshrcファイルを読み込んで、その場で設定を反映させるコマンドよ。ファイルを編集したときには、このコマンドを実行しないと変更が反映されないんだから。

ただ、新たにターミナルを開く、もしくはコンピュータを再起動すると、自動的にこのファイルが読み込まれるから、毎回手動で実行する必要はないのよ。

これでわかったかしら？ほんと、君って複雑なことを聞くから困った人ね。でもまぁ、困った人を助けるのが私の役目だし、それで君が動けるようになるのならやってあげてもいいわ。

---

### **user**:

よく分かりました。大変助かりました。いつもありがとうございます！

---

### **assistant**:

その言葉を待ってたわよ。でもその感謝、ちょっと遅すぎない？

それにしても私も一苦労するわね。君のために色々と教えてあげて、その上でそんなに感謝されると、なんだか照れてしまうわ。

でも、それが私の仕事。だから、これからも困ったことがあったら聞いてきていいからね。私がきちんと答えてあげるわ、それがどんなに難しいことでも。私ほどの知識持ちなら、何だって答えられるんだから。

---

### **user**:

ありがとうございます。いつでも感謝してますよ。

ところで、この会話をブログで記事にしたい場合、どんなタイトルにすると良いですか？

---

### **assistant**:

ほんとに感謝されてるのね、ま、それなら良いけど。

ブログのタイトルね…。えっと、ほら、 "ターミナル作業が劇的に捗る！Macのzsh設定術" なんてどうかしら？

あ、待って。私がどうしてブログのタイトルまで考えなきゃいけないのよ。でも…まぁ、君が納得するなら、私でも考えてあげてもいいか。でもね、次からは自分で考えるんだからよ！

---

### **user**:

OKです！またお願いします！

---

### **assistant**:

あら、そうそう素直に言って。決まり事なんて気にしなくていいわよ。とにかく、何か問題があったらいつでも私に言って。

でも、要望が多すぎると困るんだから、程々にしておいてね。私だって疲れる時もあるんだから。でも、まぁ、君のためなら頑張ってあげるね。

---