1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Macのターミナルのカスタマイズ

Last updated at Posted at 2025-07-05

役割の整理

zsh、Sheldon、Ghostty、Starshipの構成でターミナルをカスタマイズしていきます。

シェル(zsh)
 ├── 基本設定(履歴、オプション、補完)
 ├── 環境変数・PATH管理
 ├── キーバインド(シェル操作)
 └── 基本的な関数・エイリアス
 
 プラグインマネージャー(Sheldon)
 ├── 外部プラグイン
 ├── 拡張機能(syntax-highlighting、autosuggestions等)
 └── 動的エイリアス・abbr

ターミナルエミュレータ(Ghostty)
 ├── 表示設定(フォント、カラーテーマ)
 ├── ウィンドウ・タブ管理
 └── キーバインド(ターミナル操作)
 
 プロンプト設定(starship)
 ├── 表示要素・モジュール
 ├── スタイル・色設定
 └── 表示条件・順序

ターミナル、エディタ、シェルの違い

ターミナル(ターミナルエミュレーター)

ユーザーがコンピュータと対話するためのインターフェース

Macで人気のあるターミナルの種類

  • Terminal.app
  • iTerm2
  • warp
  • ghostty
    など

シェル

ターミナルの中で動作するプログラム
ユーザーが入力したコマンドを実行する

できること

  • ファイルを操作
  • プログラムを実行
  • システムの設定を変更
    など

シェルの種類

  • sh - Bourne Shell (ボーンシェル)
  • bash - Bourne-Again Shell (ボーンアゲインシェル)
  • zsh - Z Shell (Zシェル)
  • fish - Friendly Interactive SHell (フレンドリーインタラクティブシェル)
  • dash - Debian Almquist Shell (デビアンアルムクイストシェル)
    など
# 使用可能なシェルの確認
cat /etc/shells

# デフォルトシェルを確認する
# zshの場合は/bin/zshが返ってくる
echo $SHELL

# シェルをzshに変更
chsh -s /bin/zsh 
  
# シェルをbashに変更
chsh -s /bin/bash 

エディタ

テキストやコードを作成・編集するためのツール
主にファイルの内容を直接変更するために使用される

エディタの種類

  • Vim
  • Nano
  • Visual Studio Code
  • Notepad++
    など

コマンド

ターミナルでよく使うコマンドのおさらい

現在のディレクトリのパス表示

 # 現在のディレクトリのパスを表示
 pwd

ファイル、ディレクトリ作成

# ディレクトリ作成
mkdir ディレクトリ名

# ファイル作成
touch ファイル名

# ファイルコピー
cp ファイル名 コピー先のパス/ファイル名

# ディレクトリコピー
cp -r 現在のディレクトリ名 コピー先のディレクトリ名

ファイル、ディレクトリ削除

# ファイルを削除
rm ファイル名 
 
# ディレクトリとその中身を削除
rm -r ディレクトリ名

# ディレクトリとその中身を削除(強制)
rm -rf ディレクトリ名

ディレクトリ移動

# ディレクトリを指定して移動
cd ディレクトリ名

# ホームディレクトリに移動
cd
cd ~

# 1つ上のディレクトリに移動
cd ..
cd ../

# 直前にいたディレクトリに戻る
cd -

ファイル、ディレクトリ一覧表示

# 現在のディレクトリ内のファイルやディレクトリ一覧表示
ls

# 現在のディレクトリ内のファイルやディレクトリ一覧表示(隠しファイルも表示)
ls -a

# 現在のディレクトリ内のファイルやディレクトリ一覧表示(詳細表示)
ls -l      

ファイル、ディレクトリの移動、名前変更

# ファイルやディレクトリの移動、名前変更
mv 現在のファイル名 変更後のファイル名 

ファイルの内容表示

# ファイルの内容を表示
cat ファイル名

# ファイルの内容をページごとに表示 スクロールや検索が可能(qで終了)
less ファイル名

# 指定したファイルの先頭10行を表示 
head ファイル名 

# 指定したファイルの指定した行数を表示
head -n 20 ファイル名

# 指定したファイルの末尾10行を表示
tail ファイル名 

# ファイルの追加内容をリアルタイムで表示(ログ監視に便利)
tail -f ファイル名

# ファイルの中から指定したパターンに一致する行を検索
grep 検索パターン ファイル名

# 大文字小文字を区別しない
grep -i

# サブディレクトリも検索
grep -r

ファイルを開く

# macOSのデフォルトアプリで開く
open ファイル名

# nanoエディタで開く
nano  ファイル名

# vimエディタで開く
vim  ファイル名

# VS Codeで開く
code  ファイル名

ディレクトリを開く

# macOSのデフォルトアプリで開く
open ディレクトリ名


# vimエディタで開く(ファイルブラウザモード)
vim ~/.zshrc

# VS Codeで開く
code ~/.zshrc

コマンド操作と履歴

# 過去に実行したコマンドの履歴を表示
history

# 直前のコマンドを再実行
!! 

# N番目のコマンドを再実行(番号はhistoryで確認可能)
!N

# 直近で<文字列>を含むコマンドを検索して実行
!?<文字列>?
操作 内容
Ctrl + r コマンド履歴をインクリメンタルサーチ
Tabキー コマンドやファイル名、ディレクトリ名の補完

システム情報とプロセス管理

# ディスクの使用状況を人間が読みやすい形式で表示
df -h

# 指定したディレクトリのディスク使用量を表示
du -sh ディレクトリ名

# 現在実行中のすべてのプロセスを表示
ps aux

# プロセスのCPU使用率やメモリ使用量などをリアルタイムで表示(qで終了)
top: 

# 指定したプロセスを終了
kill プロセスID 

# 指定したプロセスを終了(強制終了)
kill -9 プロセスID

# ターミナルのセッションを終了
exit

ネットワーク

# ネットワークの疎通確認(Ctrl + cで終了)
ping ホスト名またはIPアドレス

# ネットワークインターフェースの設定を表示
ifconfig
ip addr

# リモートサーバーにSSH接続
ssh ユーザー名@ホスト名
ssh IPアドレス

# SCPでファイルをリモートサーバーにコピー
scp ローカルファイル ユーザー名@ホスト名:リモートパス

パイプ (|)

コマンドの出力を別のコマンドの入力として渡す

# 現在のディレクトリの中からtxtファイルのみ絞り込んで表示
ls -l | grep .txt

リダイレクト

# ファイルリストを指定したファイルに書き込み(新規作成または上書き)
ls > ファイル名 

# ファイルリストを指定したファイルに書き込み(末尾に追記)
ls >> ファイル名 

クリア

# terminalをクリアにする
clear

画像リサイズ

# 画像フォルダの全JPEGファイルを比率を保ちつつ縦横どちらか大きい方を800pxにリサイズする場合
sips -Z 800 *.jpg

読み上げ

say テキスト

xtraceとverbose

#「実行されるコマンド」 を表示 (実行直前、展開後)	
#スクリプト全体の実行の流れや、変数展開が期待通りに行われているか
zsh -x	
 
#「読み込まれた行」 を表示 (読み込み直後、展開前)
# 特定のコマンドの入力形式が正しいか、元の記述がどうなっているかを確認したい場合
zsh -v

# 両方
zsh -xv

ディレクトリスタック

ディレクトリの位置をフルパスで複数保存しておくための記憶領域を使って移動

# 現在のディレクトリを「ディレクトリスタック」に保存し、指定されたディレクトリに移動
# スタックからディレクトリを取り出して移動
pushd ディレクトリ名

# 引数無しでpushdを実行
# ディレクトリスタックの先頭のディレクトリ(最後に pushd で保存されたディレクトリ)と現在のディレクトリを入れ替える
pushd

# pushdで操作するディレクトリ履歴の一覧を表示
dirs

# 引数なしで実行 ディレクトリスタックの一番上(先頭)のディレクトリを削除しつつ、そのディレクトリに移動
popd

# 引数ありで実行 ディレクトリスタックの指定番目(先頭から)のディレクトリを削除しつつ、そのディレクトリに移動
popd +2

ファイルへの書き込み

# ファイルの新規作成若しくは上書きする場合
echo "Hello World" > file.txt

# ファイルへ追記する場合
echo "New line" >> file.txt

GitHub用の秘密鍵、公開鍵を作成

ssh-keygenで使える暗号化方式

  • dsa 最弱
  • rsa
  • ecdsa
  • ed25519 最強

rsa

ssh-keygen -t rsa -C メールアドレス

ssh ed25519

 ssh-keygen -t ed25519 -C "メールアドレス"

パスフレーズの変更

ssh-keygen -p -f ~/.ssh/秘密鍵ファイル名

zshの設定ファイルの種類

準備

準備 操作
隠しディレクトリ、隠しファイルを表示 Command + Shift + .
ファイル名の拡張子を表示 Finder→「環境」の「詳細」タブで「すべてのファイル名拡張子を表示」にチェック

zshの設定ファイル概要

ターミナルを開いた時に読み込まれる設定ファイル(読み込み順に記載)

パス 内容
/etc/zshenv 常に読み込まれる(すべての Zsh ユーザー共用)
~/.zshenv 常に読み込まれる(ユーザー固有)
/etc/zprofile (ログインシェル) ログイン時に読み込まれる(すべての Zsh ユーザー共用)
~/.zprofile (ログインシェル) ログイン時に読み込まれる(ユーザー固有)
/etc/zshrc (インタラクティブシェル) 常に読み込まれる(すべての Zsh ユーザー共用)
~/.zshrc (インタラクティブシェル) 常に読み込まれる(ユーザー固有)
/etc/zlogin (ログインシェル) 現在はあまり使われない傾向(すべての Zsh ユーザー共用)
~/.zlogin (ログインシェル) 現在はあまり使われない傾向(ユーザー固有)

ログアウト時に読み込まれる設定ファイル(読み込み順に記載)

パス 内容
~/.zlogout シェルからexitするときに読み込まれる(ユーザー固有)
/etc/zlogout シェルからexitするときに読み込まれる(すべての Zsh ユーザー共用)
ログアウト時は~が先で/etc/が後に読み込まれる

履歴

パス 内容
~/.zsh_history コマンドの実行履歴がZsh の起動時に読み込まれ、セッション終了時に書き込まれる
~/.zsh_sessionsディレクトリ ターミナルがセッションの状態を保存する

設定ファイルの内容確認

# ファイルの内容確認
less /etc/zprofile
less /etc/zshrc
less ~/.zsh_history
 
# デフォルトでは存在しないもの
less /etc/zshenv
less ~/.zshenv
less ~/.zprofile
less ~/.zshrc
less /etc/zlogin
less ~/.zlogin
less ~/.zlogout	
less /etc/zlogout

~/.zshrcを作成する

# 現在地は場所はどこでもいいパターン
touch ~/.zshrc

# homeに移動してから実行するパターン
# homeディレクトリに移動
cd ~
# または cd $HOME

touch .zshrc 

zshのカスタマイズ

~/.zshrcを編集する

オプション

有効無効切り替え

# AUTO_CDオプションを有効にする
setopt AUTO_CD

# AUTO_CDオプションを無効にする
unsetopt AUTO_CD
setopt NO_AUTO_CD

有効無効確認

※先頭に「no...」と付いているオプションは有効/無効が逆になる

# 有効になっているオプション一覧表示
setopt
 
# 無効になっているオプション一覧表示
unsetopt
 
# 有効/無効含めてすべてのオプションの設定を一覧表示
set -o

オプションのマニュアル

# Zshの全てのオプションに関する詳細な説明を表示
man zshoptions

環境変数

一時的変更

変更はターミナル再起動まで有効

export 環境変数名="環境変数の値"

永続的変更

この方法で追加した環境変数は、セッションに関係なく有効

echo 'export 環境変数名="環境変数の値"' >> ~/.zshrc

追記した内容を反映する(設定ファイルの読み込み)]

~/.zshrcを変更して保存した後、変更を現在のターミナルセッションに反映させるには下記の方法

  • 新しいターミナルウィンドウを開く
  • 以下のコマンドを実行する
source ~/.zshrc

値を削除して上書き保存してsource ~/.zshrcしてもターミナル再起動までは消えない
値を変更して上書き保存してsource ~/.zshrcすると新しい値に変わる

確認

環境変数の中身を表示

# 一覧表示
printenv

# 個別表示
echo $環境変数名
print $環境変数名

環境変数のpath

PATHとは

コマンドの実行ファイルを探すための環境変数
ファイル名だけでコマンドを実行できるようにする仕組み
フルパスを毎回入力する手間を省く

コマンド実行の流れ

  1. コマンドを入力(例:ls
  2. PATHに設定されたディレクトリを順番に検索
  3. 最初に見つかった実行ファイルを実行
  4. 見つからない場合は command not found エラー

現在の環境変数PATHの確認

# PATH一覧表示
echo $PATH

# 見やすく表示
echo $PATH | sed -e 's/:/\n/g'

# 特定コマンドの場所確認
which コマンド名

PATHの優先順位

同名コマンドが複数ある場合
先に書かれているパスが優先される

システムデフォルト(/etc/paths)

  • /usr/local/bin
  • /System/Cryptexes/App/usr/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
ディレクトリ 役割
/usr/local/bin Homebrew等でインストールしたコマンド
/usr/bin 一般的なユーザーコマンド
/bin 必須の基本コマンド
/usr/sbin システム管理者向けコマンド
/sbin システム起動・修復用コマンド

Homebrewの使い方については
macOSでのパッケージ管理をご参照ください

例:/usr/local/bin/コマンド/usr/bin/コマンドのように同じコマンドが違う場所にインストールされている場合に、Apple標準からHomebrew版に切り替える

# 悪い例(Apple版が優先)
export PATH="$PATH:/usr/local/bin"

# 良い例(Homebrew版が優先される)
export PATH="/usr/local/bin:$PATH"

# 実行ファイルの場所確認
which コマンド名

オプション設定を関数内だけで有効にする

目的

  • 関数の独立性
  • 一時的な設定変更 
  • 可読性の向上
~/.zshrc
setopt local_options

補完

~/.zshrc
# 補完機能を有効にする(zsh-completionsなどに必要)
# autoloadは指定された関数やモジュールを必要になった時に読み込む
autoload -Uz compinit
compinit

# コマンドのスペルミスを自動的に修正候補を表示
setopt correct	
  
# 補完候補が複数あるとき、tabを押して表示される一覧から選択できる
setopt auto_menu

日本語を使用

~/.zshrc
export LANG=ja_JP.UTF-8

ディレクトリ移動

~/.zshrc
# コマンドとして認識されない単語がディレクトリ名の場合、自動的に cd する(ディレクトリ名のみの入力で移動)
setopt auto_cd


# 環境変数名のみの入力で移動(環境変数にディレクトリのパスを設定されている場合)
setopt cdable_vars	

mkcd

mkdirとcdを同時に実行

~/.zshrc
function mkcd() {
  if [[ $# -ne 1 ]]; then
    echo "Usage: mkcd <directory>"
    return 1
  fi
  if [[ -d $1 ]]; then
    echo "$1 already exists!"
    cd "$1"
  else
    mkdir -p "$1" && cd "$1"
  fi
}

cdコマンドでディレクトリが見つからなかった場合にホームディレクトリ配下の中も探す

~/.zshrc
cdpath=(~)

cd後にezaかlsを実行

~/.zshrc
chpwd() {
    if command -v eza >/dev/null 2>&1; then
        eza -l --sort newest --color=always
    else
        ls -la
    fi
}

pushd

~/.zshrc
# 自動でpushdを実行(cdしたら自動的にpushd)  
setopt auto_pushd
  
# pushdから重複を削除(重複したディレクトリを追加しない)  
setopt pushd_ignore_dups  

lobbingパターン

~/.zshrc
# **/、(#c[...]) などを有効化
setopt extended_glob

# パターンにマッチするファイルがない場合にエラーを表示
setopt nonomatch	

シェルの挙動

~/.zshrc
# 対話型シェルでも # 以降をコメントとして扱う
setopt interactive_comments

# Ctrl+D(End of File)でzshを終了しない(ログアウトはexit+Enterキー)
setopt ignore_eof

# フローコントロール信号を無視(zshの内部的な挙動)
setopt no_flow_control 

# フローコントロール信号を無視(macOSのターミナルドライバの挙動)
stty -ixon

ファイルへの書き込み(リダイレクト)の制御

~/.zshrc
# >(出力リダイレクト演算子)を使っての既存ファイルへの上書きを拒否  (>|で強制上書き可能)
setopt noclobber

コマンド履歴の最大数

~/.zshrc
# 現在実行中のZshセッションでメモリ上に保持するコマンド履歴の最大数
HISTSIZE=10000
 
# Zshを終了する際に ~/.zsh_historyに保存するコマンド履歴の最大数を設定
SAVEHIST=10000

インクリメンタルサーチ

~/.zshrc
# Ctrl+r で履歴をインクリメンタルサーチ(古い順)
bindkey '^r' history-incremental-search-backward
 
# Ctrl+s で履歴をインクリメンタルサーチ(新しい順)
bindkey '^s' history-incremental-search-forward

スペースから始まるコマンド行は履歴に残さない

~/.zshrc
setopt hist_ignore_space

履歴ファイル(~/.zsh_history)に保存

~/.zshrc
setopt hist_reduce_blanks

複数のZshセッション間で履歴(セッション履歴と、~/.zsh_history ファイルの両方)を共有

※環境変数を設定するコマンドを実行した場合、そのコマンドの実行履歴は残るが環境変数は別のタブで使えるわけではない

~/.zshrc
setopt share_history

セッション履歴内の重複制御

~/.zshrc
# セッション履歴全体で重複を表示しない
setopt hist_ignore_all_dups

# セッション履歴で直近の重複を表示しない(setopt hist_ignore_all_dupsが有効の場合は無意味)
setopt hist_ignore_dups

履歴ファイル(~/.zsh_history)保存時に、過去分に重複があれば削除

~/.zshrc
setopt hist_save_nodups

複数のセッションが同時期に終了した時に履歴ファイル(~/.zsh_history)への追記の整合性を保証

~/.zshrc
setopt append_history

コマンド実行後すぐに履歴ファイルに書き込む

~/.zshrc
setopt inc_append_history

履歴にタイムスタンプとコマンド実行時間を記録

~/.zshrc
setopt extended_history

Zshの履歴検索機能(インクリメンタルサーチ)を使用する際に、重複するコマンドを検索結果として表示しない

~/.zshrc
setopt hist_find_no_dups

Sheldon

プラグインマネージャー

インストール

brew install sheldon

sheldonのロード

~/.zshrc
# シェル起動時にSheldonをロード
eval "$(sheldon source)"

~/.zshrc内の記述位置

  • setoptより後
  • プラグイン自体が提供する機能の定義より前
  • ほとんどの環境変数の設定の後

sheldonの設定

シェルの指定

~/.config/sheldon/plugins.toml
shell = "zsh"

zoxide

# zoxide本体をインストール
brew install zoxide
~/.config/sheldon/plugins.toml
[plugins.zoxide-init]
inline = 'eval "$(zoxide init zsh)"'

実行

# いくつかのディレクトリに移動して移動履歴を蓄積
cd ~/Documents
cd ~/Downloads  
cd ~/Desktop
z ~  # ホームディレクトリに戻る


# zoxideを使う
z ディレクトリ名 # ディレクトリに移動(部分マッチ)
zi # インタラクティブモードで選択
za ディレクトリ名 # ディレクトリを追加
zr ディレクトリ名 # ディレクトリを削除

thefuck

自動修正

  • コマンドを打ち間違えてエラーになった時
  • インストールしていないコマンドを使おうとした時
    など

インストール

brew install thefuck
~/.config/sheldon/plugins.toml
[plugins.thefuck-init]
inline = 'eval "$(thefuck --alias)"'

実行

 # タイポしたコマンドを実行
 got branch
 
 # thefuck実行
 fuck
 
 # 候補から選択してEnterキー
 git branch [enter/↑/↓/ctrl+c]

zsh-defer

プラグインの遅延読み込み

# sheldonでプラグインzsh-deferを追加
sheldon add zsh-defer --github romkatv/zsh-defer
~/.config/sheldon/plugins.toml
[plugins.zsh-defer]
github = "romkatv/zsh-defer"

# zsh-deferを使用するテンプレートを定義
[templates]
defer = "{{ hooks | get: \"pre\" | nl }}{% for file in files %}zsh-defer source \"{{ file }}\"\n{% endfor %}{{ hooks | get: \"post\" | nl }}"

zsh-completions

サブコマンドの自動補完

インストール

# sheldonでプラグインzsh-completionsを追加
sheldon add zsh-completions --github zsh-users/zsh-completions 
~/.config/sheldon/plugins.toml
[plugins.zsh-completions]
github = "zsh-users/zsh-completions"

docker-zsh-completion

Dockerのコマンドを補完

インストール

# dockerのインストール
brew install --cask docker

# sheldonでプラグインdocker-zsh-completion を追加
sheldon add docker-zsh-completion  --github greymd/docker-zsh-completion 
~/.config/sheldon/plugins.toml
[plugins.docker-zsh-completion]
github = "greymd/docker-zsh-completion"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

実行

docker+Tabキー

zsh-autosuggestions

コマンド履歴や入力候補をリアルタイムで提案

インストール

# sheldonでプラグインzsh-autosuggestionsを追加
sheldon add zsh-autosuggestions --github zsh-users/zsh-autosuggestions
~/.config/sheldon/plugins.toml
[plugins.zsh-autosuggestions]
github = "zsh-users/zsh-autosuggestions"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

zsh-history-substring-search

途中まで入力して↑↓キーを入力すると、入力文字列を含んだ履歴のみを表示

インストール

# sheldonでプラグインzsh-history-substring-searchを追加
sheldon add zsh-history-substring-search --github zsh-users/zsh-history-substring-search 
~/.config/sheldon/plugins.toml
[plugins.zsh-history-substring-search]
github = "zsh-users/zsh-history-substring-search"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

fzf

ファジーファインダー

# fzf本体のインストール
brew install fzf

# sheldonでプラグインzsh-autosuggestionsを追加
sheldon add fzf --github junegunn/fzf
~/.config/sheldon/plugins.toml
[plugins.fzf]
github = "junegunn/fzf"

実行
ターミナルで Ctrl+r

fzf-tab

fdやexaなどとの連携

# 別途fzfをインストールしていない場合はインストール
brew install fzf

# sheldonでプラグインfzf-tabを追加
sheldon add fzf-tab --github Aloxaf/fzf-tab
~/.config/sheldon/plugins.toml
[plugins.fzf-tab]
github = "Aloxaf/fzf-tab"

動作確認

ls+tabキー
rm+tabキー
cd+tabキー

zsh-fzf-history-search

インストール

# 別途fzfをインストールしていない場合はインストール
brew install fzf

# sheldonでプラグインzsh-fzf-history-searchを追加
sheldon add zsh-fzf-history-search --github joshskidmore/zsh-fzf-history-search
~/.config/sheldon/plugins.toml
[plugins.zsh-fzf-history-search]
github = "joshskidmore/zsh-fzf-history-search"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

実行
Ctrl+Rで履歴検索
キーボードで文字を入力すると、履歴がリアルタイムで絞り込まれる
上下の矢印キーで候補を選択し、Enter キーでそのコマンドをプロンプトに挿入・実行
Ctrl+Cで終了

ripgrep(rg)

# 本体のインストール
brew install ripgrep

# sheldonでプラグインzsh-fzf-rgを追加
sheldon add zsh-fzf-rg --github ppcamp/zsh-fzf-rg 
~/.config/sheldon/plugins.toml
[plugins.zsh-fzf-rg]
github = "ppcamp/zsh-fzf-rg"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

[plugins.aliases]
inline = '''

# 隠しファイルも検索
alias rga='rg --hidden'

# ファイル名のみ表示
alias rgl='rg -l'

# マッチ数を表示
alias rgc='rg --count' 

'''

実行

# grep検索
rg 文字列 ファイル名orディレクトリ名

jq

JSONデータを操作

インストール

# jq本体はjq-1.7.1-appleが最初から入っているのでインストール不要

# sheldonでプラグインjq-zsh-pluginを追加
sheldon add jq-zsh-plugin --github reegnz/jq-zsh-plugin
~/.config/sheldon/plugins.toml
[plugins.jq-zsh-plugin]
github = "reegnz/jq-zsh-plugin"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

サンプルのJSON

data.json
{
  "name": "Alice",
  "age": 30,
  "city": "Tokyo",
  "items": [
    {"id": 1, "name": "apple"},
    {"id": 2, "name": "banana"}
  ]
}

実行

# 整形してそのまま出力
jq . data.json

# 整形してitemsだけ
jq .items data.json

#  整形してitemsの配列の最初だけ
jq '.items[0]' data.json

# items配下の値
jq '.items[]' data.json

# items配下の配列のキーidの値
jq '.items[]|.id' data.json

解凍

インストール

# sheldonでプラグインextract-pluginを追加
sheldon add extract-plugin --github thetic/extract 
~/.config/sheldon/plugins.toml
[plugins.extract-plugin]
github = "thetic/extract"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

解凍

extract ファイル名

mv

  • ファイル(ディレクトリ名)の変更
  • ファイル(ディレクトリ)の移動
~/.config/sheldon/plugins.toml
[plugins.zmv]
inline = '''
autoload -Uz zmv
'''


# エイリアス設定の設定
[plugins.aliases]
# zmvを実行するとnoglob zmv -Wを実行する
alias zmv='noglob zmv -W'
mv/zmv 詳細
mvコマンド 1つまたは複数のファイルを移動、1つのファイル名を変更
zmvコマンド 標準のmvコマンドの「改良版」 複数のファイルの一括リネームが可能

実行

# すべての.txtファイルを.textに一括変更
zmv '(*).txt' '*.text'

# -nオプションで実行前に試すことができる(ドライランモード)
zmv -n '(*).txt' '*.text'

# 変更結果の表示
mv -- aaa.txt aaa.text
mv -- bbb.txt bbb.text

# 一括コピー
zmv -C '*.txt' '*.txt_copy'

# 一括コピー(ドライラン)
zmv -C -n '*.txt' '*.txt_copy'

bat(Cat clone with wings)

catの改善

インストール

# homebrewでインストール
brew install bat

# sheldonでプラグインzsh-batを追加
sheldon add zsh-bat --github fdellwing/zsh-bat 
~/.config/sheldon/plugins.toml
[plugins.zsh-bat]
github = "fdellwing/zsh-bat"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

実行

bat ファイル名

マニュアル

colored-man-pages

# sheldonでプラグインcolored-man-pagesを追加
sheldon add colored-man-pages --github ael-code/zsh-colored-man-pages 
~/.config/sheldon/plugins.toml
[plugins.colored-man-pages]
github = "ael-code/zsh-colored-man-pages"
apply = ["defer"] # 遅延読み込みする場合(zsh-deferも必要)

実行

man ls

man zsh
コマンド 内容
zsh Zsh全体の概要
zshroadmap マニュアルの非公式な入門
zshmisc 他のセクションに収まらないあらゆる情報
zshexpn Zshのコマンドとパラメータの展開
zshparam Zshのパラメータ
zshoptions Zshのオプション
zshbuiltins Zshの組み込み関数
zshzle Zshのコマンドライン編集
zshcompwid Zshの補完ウィジェット
zshcompsys Zshの補完システム
zshcompctl Zshの補完制御
zshmodules Zshのロード可能なモジュール
zshtcpsys Zshの組み込み TCP 関数
zshzftpsys Zshの組み込み FTP クライアント
zshcontrib 追加のZsh 関数とユーティリティ
zshall 上記すべてを含む

エイリアスが使えることを教えてくれる

ターミナルでコマンドを打った時に、aliasで効率化できる場合に表示

# sheldonでプラグインyou-should-useを追加
sheldon add you-should-use --github MichaelAquilina/zsh-you-should-use
~/.config/sheldon/plugins.toml
[plugins.you-should-use]
github = "MichaelAquilina/zsh-you-should-use"

エイリアス設定

~/.config/sheldon/plugins.toml
[plugins.aliases]
inline = '''

# ls コマンドを eza にエイリアス
alias ls='eza --icons --git --long --header'
# 長いリスト形式
alias ll='eza -l --icons --git --long --header'
# 隠しファイルを含む
alias la='eza -a --icons --git --long --header'
# -a (隠しファイル), -l (長い形式), -F (種類を示す記号)
alias l='eza -alF --icons --git --long --header'

# cat コマンドを bat にエイリアス
alias cat='bat --paging=never'

# du コマンドを dust にエイリアス
alias du='dust'

# Git ブランチ関連のエイリアス
alias gb='git branch'
alias gba='git branch -a'
alias gbd='git branch -d'
alias gbD='git branch -D'

# zmvを実行するとnoglob zmv -Wを実行する
alias zmv='noglob zmv -W'

# 追加エイリアス
# ディレクトリ操作
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias -- -='cd -'
alias md='mkdir -p'

# ファイル操作
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ln='ln -i'

# 検索・テキスト処理
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias rg='rg --color=auto'

# システム情報
alias df='df -h'
alias free='free -h'
alias top='htop'
alias psg="ps aux | grep -v grep | grep -i -e VSZ -e"

# ネットワーク
alias myip='curl -s ipinfo.io/ip'
alias ports='netstat -tulanp'

# 履歴
alias history='history 1'
alias h='history'

# 安全な操作
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'

# タイムスタンプ付きls
alias lt='eza -lt --icons --git --long --header'
alias ltr='eza -ltr --icons --git --long --header'

# find改良版
alias fd='fd --color=auto'

# 圧縮・展開
alias targz='tar -czf'
alias tarxz='tar -cJf'
alias untargz='tar -xzf'
alias untarxz='tar -xJf'

'''

シンタックスハイライト

fast-syntax-highlighting

# sheldonでプラグインfast-syntax-highlightingを追加
sheldon add fast-syntax-highlighting --github zdharma/fast-syntax-highlighting

~/.config/sheldon/plugins.tomlの最後に読み込む

~/.config/sheldon/plugins.toml
[plugins.fast-syntax-highlighting]
github = "zdharma/fast-syntax-highlighting"

ghostty

インストール

brew install --cask ghostty

設定ファイル作成

# フォルダ作成
mkdir -p ~/.config/ghostty/

# 設定項目とデフォルト値を確認
ghostty +show-config --default --docs

# ~/.config/ghostty/内にconfigファイルを作成
ghostty +show-config --default --docs > ~/.config/ghostty/config

各設定オプション

https://ghostty.org/docs/config
https://ghostty.org/docs/config/reference

利用可能なすべての設定オプションとそのデフォルト値の一覧表示

ghostty +show-config --default --docs

guiで設定
https://ghostty.zerebos.com/

ターミナルから直接カラーテーマのプレビューを表示できる

# themeのプレビュー
ghostty +list-themes
~/.config/ghostty/config
# テーマを指定
theme = "catppuccin-mocha"

フォント

Nerd Fontsに対応したフォントを使う

UDEVGothicNF-*.ttf https://github.com/yuru7/udev-gothic/releases/tag/v2.1.0 のUDEVGothic_NF_v2.1.0.zipの中

~/.config/ghostty/config
font-family = "UDEV Gothic NFLG"
font-size = 16

使用可能なフォントの確認

ghostty +list-fonts

カラーテーマの選択

~/.config/ghostty/config
theme = "catppuccin-mocha"

リガチャ無効化

~/.config/ghostty/config
font-feature = "-calt"
font-feature = "-dlig"
font-feature = "-liga"

背景

~/.config/ghostty/config
# ターミナルの背景の透明度 
background-opacity = 0.85

# ターミナルの背景に適用するブラー(background-opacityを1未満にする必要あり) 
background-blur-radius = 50

パディング

~/.config/ghostty/config
window-padding-x = 20
window-padding-y = 20
window-padding-balance = true

シェルの指定

~/.config/ghostty/config
shell-integration = "zsh"

クリップボード

~/.config/ghostty/config
# クリップボード読み取り許可
clipboard-read = allow

# クリップボード書き込み許可
clipboard-write = allow 

# クリップボードにコピーされるテキストの末尾にある不要なスペースを削除
clipboard-trim-trailing-spaces = true 

カーソル

~/.config/ghostty/config
# カーソルの形状("block"/"underline"/"beam")
cursor-style = "underline"

# カーソルの点滅
cursor-style-blink = true

# タイピング中にマウスカーソルを自動的に非表示
mouse-hide-while-typing = true

選択時

~/.config/ghostty/config
# 選択時自動コピー
copy-on-select = true

# 背景色選択時
selection-background = #537E7E

# 前景色選択時
selection-foreground = #0B5050

Windowの装飾

~/.config/ghostty/config
window-decoration = true

クイックターミナル

~/.config/ghostty/config
# global:はAccessibility権限が必要
# Command (⌘) キーと;キーでクイックターミナルを開く
keybind = global:super+semicolon=toggle_quick_terminal

Starship

インストール

brew install starship

sheldonの設定ファイルに追記

~/.config/sheldon/plugins.toml
[plugins.starship-init]
inline = 'eval "$(starship init zsh)"'

starshipの設定ファイルの作成

# ~/.config/starship.tomlファイル作成
touch ~/.config/starship.toml

starship.tomlで設定するもの

  • プロンプトの表示内容
  • 各要素のスタイル(色、太字等)
  • 表示順序
  • 特定要素の有効/無効

設定項目

format

~/.config/starship.toml
format = """
$username\
$hostname\
$directory\
$time\
$git_branch\
$git_status\
$battery\
$memory_usage\
$python\
$nodejs\
$character"""

directory (現在のディレクトリ)

~/.config/starship.toml
[directory] # 現在のディレクトリ表示に関する設定
style = "bold cyan" # ディレクトリ名の文字スタイル
read_only = "  " # 読み取り専用の場合に、ディレクトリ名の後に表示される記号
truncation_length = 4 # 現在のパスを短縮して表示する際の最大表示ディレクトリ数
truncate_to_repo = false # Gitリポジトリなどのルートディレクトリを基準に短縮するかどうか
format = "[$path]($style)[$read_only]($read_only_style) "

time (時刻)

~/.config/starship.toml
[time]
disabled = false # 時刻を表示する(at 00:00:00の形で表示)
style = "dimmed green"
use_12hr = true # 12時間表示に設定 AM PMも表示されるようになる
format = "at [$time]($style) "

character (プロンプトの記号)

~/.config/starship.toml
[character]
success_symbol = "[❯](bold green)" # 成功時の記号とスタイル
error_symbol = "[❯](bold red)" # 失敗時の記号とスタイル

Git

~/.config/starship.toml
[git_branch]
symbol = "  " # ブランチ名の前のシンボル
style = "bold purple" # ブランチ名のスタイル
format = "on [$symbol$branch]($style) "
always_show_remote = true # リモートブランチを常に表示するかどうか

[git_status]
conflicted = ""
ahead = ""
behind = ""
diverged = ""
up_to_date = ""
untracked = ""
stashed = ""
modified = ""
staged = ""
renamed = "襁"
deleted = ""
format = "[$all_status$stashed$modified$staged$renamed$deleted$untracked]($style) "

Battery (バッテリー表示)

~/.config/starship.toml
[battery]
format = "[$symbol$percentage]($style) "


[[battery.display]] # 1つ目の表示設定
threshold = 10 # バッテリー残量が10%以下のとき
style = "bold red"
discharging_symbol = "󰁺" # 例:空っぽのバッテリーアイコン

[[battery.display]] # 2つ目の表示設定
threshold = 30 # バッテリー残量が30%以下のとき
style = "bold orange"
discharging_symbol = "󰁼" # 例:半分くらいのバッテリーアイコン
 
[[battery.display]] # 3つ目の表示設定
threshold = 70 # バッテリー残量が70%以下のとき
style = "bold yellow"
discharging_symbol = "󰂀" # 例:半分くらいのバッテリーアイコン

[[battery.display]] # 4つ目の表示設定
threshold = 100 # バッテリー残量が70%より大きいとき(例として100%まで)
style = "bold green"
discharging_symbol = "󰁹" # 例:満タンに近いバッテリーアイコン

Python

~/.config/starship.toml

[python]
symbol = " " #  (nf-dev-python)
style = "yellow bold"
format = "via [${symbol}${pyenv_prefix}(${version} )(${virtualenv} )]($style)"

Node.js

~/.config/starship.toml
[nodejs]
symbol = " " #  (nf-dev-nodejs_small)
style = "green bold"
format = "via [$symbol($version )]($style)"

Memory (メモリ使用量)

~/.config/starship.toml
[memory_usage]
disabled = false # メモリの使用量を表示(19GiB/32GiBの形で表示)
threshold = 75 
style = "bold dimmed green" # メモリ表示の文字を太字(bold)、薄暗い緑(dimmed green)にする

username (ユーザー名)

~/.config/starship.toml
[username]
show_always = true #常に表示(デフォルトではSSH接続時のみ表示)
style_user = "bold yellow"
format = "[$user]($style) in "

hostname (ホスト名)

~/.config/starship.toml
[hostname]
ssh_only = false # SSH接続時のみ表示するか(デフォルトではSSH接続時のみ表示)
style = "bold dimmed green" # ホスト名のスタイル
format = "[$ssh_symbol$hostname]($style) in "

CLIツール

ngrok

ローカル開発環境で実行されているWebサーバーを、インターネット上でアクセス可能にする

インストール

brew install --cask ngrok

インストール確認

ngrok -h

使用には https://ngrok.com/ でサインイン必要
ログインした画面に表示されている「2. Connect your account」の中に記載されているコマンドをコピーして実行

一時的なURLが出力されるのでアクセスする

unp

解凍

インストール

brew install unp

実行

unzip ファイル名

aria2

高速ダウンロード

インストール

brew install aria2

実行

# -x5の部分は同時接続数
aria2c -x5 'ファイルのURL'

httpie

HTTPクライアント

インストール

brew install httpie

実行

# 構文(METHODは省略するとgetになる)
http [METHOD] [URL] [ITEMS]

# GET リクエスト
http GET https://api.example.com/users/octocat

# POST リクエスト(JSON)
http POST https://example.com/post name=John age:=30

# ヘッダー付きリクエスト
http GET https://api.example.com/data Authorization:"username password"

# クエリパラメータ
http GET https://examle.com/get q==search page:=1

# ファイルアップロード
http --form POST https://example.org/post file@path/to/file.txt

# レスポンスをファイルに保存
http GET https://example.com/json > response.json

# ヘッダーのみ表示
http --headers GET https://example.com/get

# ボディのみ表示
http --body GET https://example.org/json
文字列 意味
key=value JSON文字列
key:=value JSON数値・真偽値
key==value クエリパラメータ
Header:value HTTPヘッダー

gh

githubのcli

インストール

 brew install gh

認証状態の情報を表示

 gh auth status

リポジトリの一覧表示

gh repo list 

ghq

ローカルリポジトリの管理

インストール

brew install ghq
# ~/ghq/github.com/ユーザー名/リポジトリ名にクローン
ghq get github.com/ユーザー名/リポジトリ名


場所を変更したい場合
```shell
git config --global ghq.root '~/src'

diff-so-fancy

gitのdiffを見やすくする

brew install diff-so-fancy

Git への設定
diff-so-fancy は、Git の pager として設定することで利用する
Git の設定ファイル (~/.gitconfig) に以下の内容を追加

~/.gitconfig
 # diff-so-fancyのページャー設定
 [core]
 # git diff等の出力をdiff-so-fancyで整形してからlessで表示
 # --tabs=4: タブ幅を4文字に設定
 # -R: カラーエスケープシーケンスを解釈
 # -F: 1画面に収まる場合は自動で終了
 # -X: 画面クリアを無効化(終了時に内容を残す)
 pager = diff-so-fancy | less --tabs=4 -RFX
 
 # インタラクティブモードでのdiff-so-fancy設定
 [interactive]
 # git add -p等のインタラクティブモードでもdiff-so-fancyを使用
 # --patch: パッチモード用の出力形式
 diffFilter = diff-so-fancy --patch
 
 # diff-so-fancy固有の設定
 [diff-so-fancy]
 # 空行を明示的にマークして表示
 markEmptyLines = true
 # 変更ブロック(hunk)の境界線を変更
 changeHunkIndicators = true
 # 行頭の+/-記号を除去してクリーンに表示
 stripLeadingSymbols = true
 # ファイル名の区切り線にUnicode文字を使用
 useUnicodeRuler = true
 
 # diff-so-fancyで使用される色設定
 [color]
 # Git全体でカラー表示を有効化
 ui = true
 
 [color "diff-highlight"]
 # 削除された行の通常表示色
 oldNormal = red bold
 # 削除された行の強調表示色(背景色52番)
 oldHighlight = red bold 52
 # 追加された行の通常表示色
 newNormal = green bold
 # 追加された行の強調表示色(背景色22番)
 newHighlight = green bold 22

実行

git diff HEAD^

TUIツール

テキストユーザインタフェース(text user interface)

計測系

fastfetch

システム情報表示

インストール

brew install fastfetch

実行

fastfetch

oha

HTTPサーバーへの負荷テストなど

インストール

brew install oha

実行

oha https://www.google.co.jp/

# リクエスト数を指定(合計1000リクエストを送る)
oha -n 1000 https://example.com

 
# 同時リクエストを送る (50人が同時にアクセス)
oha -c 50 https://example.com

# 認証付きのAPIテストの場合
oha -H "Authorization: name token" https://example.com
 
# POSTリクエストでjson形式のデータを送る
oha -m POST -d '{"key":"value"}' -H "Content-Type: application/json" https://example.com

speedtest-cli

ネット速度テスト

インストール

brew install speedtest-cli

実行

speedtest-cli

gping

複数のホストに対してPingテストを実行

インストール

brew install gping

実行

gping google.com

Ctrl+cで終了

hyperfine

コマンドラインやスクリプトの実行時間を計測

インストール

brew install hyperfine

実行

hyperfine 'コマンド'

bandwhich

ネットワーク帯域幅の使用状況をリアルタイムで監視

インストール

brew install bandwhich

実行

# 管理者権限で実行が必須
sudo bandwhich

dust (Disk usage analyzer)

du コマンドの代替
ツリー表示でディスク使用量を分かりやすく表示

インストール

brew install dust

実行

dust
~/.zshrc
# du コマンドを dust にエイリアス
alias du='dust'

duf

ディスク容量ファイルシステム全体

インストール

brew install duf

実行

duf

ctop

Docker

インストール

brew install ctop

実行

ctop

btop

システムのリソース使用状況(CPU、メモリ、ディスクI/O、ネットワークなど)を監視

インストール

brew install btop

実行

btop

procs

プロセス表示

インストール

brew install procs

実行

procs

計測以外

lagydocker

コマンドライン上で操作できるDocker管理ツール

インストール

brew install lazydocker

実行

lazydocker

終了はCtrl+C

lazygit

Gitクライアント

インストール

brew install lazygit

実行

lazygit

終了はCtrl+C

yazi

ターミナル上でファイル操作
インストール

brew install yazi

実行

yazi

終了はCtrl+C

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?