時間効率UP：エンジニアのためのターミナル＆シェルの整理とカスタマイズしてみた

## はじめに

ターミナル操作をもっと効率化したいと考え、シェルのカスタマイズについて調べ始めました。

:::note info
**普段はMacではZsh、WindowsではPowerShellを使っており、それぞれの特徴を学ぶ良い機会だと感じています。**
:::

この記事では、ターミナルやシェルの基本から応用までをまとめています。***どなたかの技術の助けになれば幸いです！***

## 書こうと思ったきっかけ

最近、ターミナル操作をよりスムーズにしたいと考え、シェルのカスタマイズに興味を持つようになりました。

:::note warn
**自分自身、シェルの種類について曖昧な理解だったので、この機会に改めて整理しようと思ったのがきっかけです。**
:::

普段はMacBookではZsh、WindowsではPowerShellを主に使っていますが、それぞれをさらに使いこなしたいと思っています。

***今回はターミナルやシェルを効率的に使う方法をいろいろとまとめてみましたので、興味のある方はぜひ最後まで読んでみてください。***

## まず、エンジニアにとって『時間』は命
エンジニアにとって、時間は最も重要なリソースです。多忙なスケジュールの中で、いかに効率よく作業を進めるかが求められます。

***パソコンの操作感やコマンド入力を素早く行えることは、すべての作業の基盤となるスキルだと考えています。***

:::note
以下の記事では、時間効率を向上させるためのさまざまな方法を紹介しています。**興味のある方は、ぜひ参考にしてみてください。**
:::

https://qiita.com/free-honda/items/e58b6750dba27107889f

https://qiita.com/free-honda/items/7419e88404abafdcd624

https://qiita.com/free-honda/items/269fa5e3c5f9db6898e2

https://qiita.com/free-honda/items/ae82ecf888352b839c5b

## ターミナルとは
***ターミナルは、文字ベースのインターフェイスを使ってコンピュータとやり取りするためのソフトウェアです。***

- **役割**: シェルを操作するためのインターフェイスとして機能します。
- **例**: 
  - macOS: 「ターミナル.app」
  - Windows: 「Command Prompt」や「Windows Terminal」
  - Linux: 「GNOME Terminal」

https://e-words.jp/w/%E7%AB%AF%E6%9C%AB.html

---

## シェルとは
***シェルは、オペレーティングシステム（OS）とユーザーの間を仲介するプログラムです。***

- **役割**: ユーザーが入力したコマンドを受け取り、OSにその指示を伝えます。
- **種類**:
  - **Bash (Bourne Again Shell)**: LinuxやmacOSで標準的に利用される。
  - **Zsh**: Bashの上位互換で、テーマやプラグインが豊富。
  - **Fish**: ユーザーフレンドリーなシェル。
  - **PowerShell**: Windows環境で利用されるシェルで、スクリプト言語としても強力。

https://udemy.benesse.co.jp/development/system/shell.html

---

## ターミナルとシェルの違い

ターミナルとシェルの違いを、以下の表でわかりやすくまとめました。

| 項目       | ターミナル                              | シェル                              |
|------------|-----------------------------------------|-------------------------------------|
| **定義**   | シェルとやり取りするためのインターフェイス | OSとの仲介を行うプログラム          |
| **例**     | GNOME Terminal, iTerm2                  | Bash, Zsh, Fish, PowerShell        |
| **役割**   | ユーザーがシェルにコマンドを入力する場所   | コマンドを解釈し、OSに実行を指示する |

## 実際にカスタマイズしてみた
MacBookのターミナルで、`ls -l` コマンドを `ll` という短縮コマンドで使用できるようにカスタマイズしてみました。

### 1. シェル設定ファイルを開く
使用しているシェルによって設定ファイルが異なります。以下のコマンドで対応する設定ファイルを開きます。

**Zsh (macOS Catalina以降のデフォルトシェル):**

```bash
vim ~/.zshrc
```
**Bash:**

```bash
vim ~/.bashrc
```

### 2. エイリアスを追加

設定ファイルの末尾に以下の行を追加します。

```bash
alias ll='ls -l'
```

### 3. 設定を反映

設定を反映するために、以下のコマンドを実行します。

**Zsh:**

```bash
source ~/.zshrc
```

**Bash:**

```bash
source ~/.bashrc
```

### カスタマイズしたコマンドの動作確認

ターミナルで `ll` と入力し、`ls -l` の動作が実行されるか確認します。

```bash
ll
```

**結果**

`ll` を入力すると、現在のディレクトリ内のファイルやディレクトリが詳細表示（`ls -l`）されるようになります。

```bash
➜  Desktop git:(honda-branch) ✗ ll
total 8
-rw-r--r--@  1 xxx  staff  2722 Jan  6 08:56 index.html
-rw-r--r--   1 xxx  staff     0 Jan  6 14:55 test.txt
-rw-r--r--@  1 xxx  staff     0 Jan  2 08:05 test.yaml
drwxr-xr-x  10 xxx  staff   320 Dec 30 14:20 もろもろ
```

無事に想定通りの表示が確認できました。***今後はこのカスタマイズしたコマンドを活用して、さらに時間効率を上げていきたいと思います。***

![Screenshot 2025-01-07 at 20.36.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/282f2255-56c0-2041-630f-30778185c3bf.png)

**余談**

***権限周りについてはつい忘れがちですが、操作に慣れるためにも過去の記事を振り返ってみてください！***

https://qiita.com/free-honda/items/6574eee2f2723aa3266a

## まとめ
ここまでお読みいただき、ありがとうございました！

:::note warn
**ターミナルやシェルの概要を改めて整理し、簡単なハンズオンも体験できたことで、より理解が深まったと感じています。**
:::

***私自身、これを機にさらにカスタマイズを進めて、時間効率や生産性の向上に取り組みたいと思いました！***

## おまけ：Vimmerについて
今回、新しい単語を知ったので、簡単にご紹介します。

:::note info
**Vimmer:** テキストエディタ「Vim」の愛用者を指す俗語です。
:::

**シェル内でテキストファイルを編集するためにVimを使い始め、その魅力や使いやすさにハマることを意味しています。**

普段は`Vim`ではなく`Vi`を使うことが多いため、このような俗語があることを初めて知り、新鮮な気持ちになりました。

***詳しく知りたい方は、こちらの記事をご覧ください！***

https://qiita.com/yoshi_yast/items/a1c21f552313bc5fbef3