本文へスキップ
mreysei · Michael Reyes
テーマ

MyBash

コマンドひとつでそろう私のUbuntuターミナル。zsh、136個のコマンド、フォルダーごとのgitの名義。

種類
その他
年
カテゴリー
MyBashのカバー画像。紫の名前、「My Ubuntu terminal in one command」という説明、コマンド「bash ~/.mybash/install.sh」、3つの言語、そして右側にピクセルのロゴとシステム情報を表示したバナーのターミナル画面。

プロジェクトについて

MyBashは、私のUbuntuターミナル(普段はWSL2)の設定です。oh-my-zshを入れたzsh、headlineテーマ、プラグイン、自作の136個のコマンド、作業フォルダーごとのgitの名義をまとめ、ターミナル版ポートフォリオのロゴと「abyss」配色で仕上げています。リポジトリをクローンしてインストーラーを実行すれば、日本語・英語・スペイン語のどれでもすぐに使えます。

目的:どのマシンでも手作業の設定なしに同じターミナルを使えるようにし、git、Node、Docker、サーバーを扱う毎日の作業で、打つキーも覚えることも減らすことです。どのコマンドも何をするかを示し、触れる対象を先に見せ、元に戻せない操作の前には確認します。

できること:

  • インストールと更新は同じコマンド:install.shは14のステップ(aptのパッケージ、プラグイン、fnmとpnpmによるNode、Claude Code、GitHub CLI、~/.zshrc、~/.gitconfigなど)を順に実行します。各ステップは先に確認し、最新なら何もしません。進捗バーは最終行に固定され、すべてログに残ります。インストール済みのターミナルではrだけで済みます。
  • バナー:ターミナルを開くと、ロゴの横にシステム情報を表示します。ネットワークには接続しません。
  • 19グループ、136個のコマンド:aliasでグループごとに一覧でき、そのマシンで動かないものは理由つきで取り消し線を引きます。aでは各コマンドのプレビューつきの検索メニューが開きます。
  • 驚きの少ないgit:gsは状態を1行にまとめ(「ローカルの変更3件 · プッシュ待ち1件 · プルなし」)、gpsaとgplaはこのリポジトリと入れ子のリポジトリを、1つずつ確認しながらプッシュ・プルします。ブランチの切り替え、差分を見ながらのファイル追加、ログの閲覧、マージ済みブランチの削除にも、プレビューつきのメニューがあります。
  • ワークスペース:~/projects/のフォルダーごとに、コミットの作成者とメールアドレスを切り替え、ブランチの横にそのラベルを表示します。非公開のものはリポジトリにプッシュされません。
  • パッケージマネージャーを意識しないNode:ni、nd、ntなどは、プロジェクトのマネージャーを判別して、npm、pnpm、bun、yarnのどれでも同じように動きます。
  • WSLとサーバー:30秒以上かかったコマンドのWindows通知、エクスプローラーでフォルダーを開く機能、共有クリップボード、fail2banとサービス監視(Telegramで通知)。
  • **mb doctorは何も変えずにインストールを点検し、mb time**はターミナルが開くまでの時間を測ります。
インストール、更新、起動

アクセシビリティと使いやすさ:すべての文言は翻訳の仕組みを通り、言語ごとに817個の文字列があります。mb i18nで抜けがないかを確認できます。列は日本語の文字が2マス分の幅をとることを考えて揃えます。確認は矢印キーで選び、「y」や「n」を入力させることはありません。

パフォーマンス:ターミナルは約0.1秒で開きます。起動時にはネットワークもsudoも使わず、PATH全体も走査しません。WSLではWindowsのフォルダーまで含まれるため、走査すると約60ミリ秒かかるからです。

セキュリティとプライバシー:秘密情報(Telegramのトークンや非公開のワークスペース)は、gitが無視する2つの場所に置いています。補助の実行ファイルはその設定を実行せずに読むだけで、機密情報がリポジトリに入ることはありません。

アーキテクチャと品質:zshとbashで書いています。色、ロゴ、翻訳、画面の部品をまとめた共通ライブラリをターミナルとインストーラーで共有し、20個の関数ファイル、5つの独立した実行ファイル、そしてインストーラーが最新の安定版に更新する6つのプラグイン(サブモジュール)で構成しています。どのコマンドも同じ見た目と同じ規約に従います。

現状:2022年から毎日使っており、2026年11月に大幅に作り直しました。

技術

スクリーンショット