playpark
ホーム会社概要サービスソリューションブログお知らせお問い合わせ
playpark

あらゆる仕事を楽しむ

会社概要サービスソリューションお問い合わせ特定商取引法に基づく表記

© 2019-2026 合同会社playpark All Rights Reserved.

  1. ホーム
  2. ブログ
  3. 技術Tips
  4. 【fzf活用術】シェルエイリアスで指を守る - 開発効率を劇的に上げるショートカット集
ブログ一覧に戻る
技術Tips

【fzf活用術】シェルエイリアスで指を守る - 開発効率を劇的に上げるショートカット集

fzfとモダンCLIツール(eza, bat, ghq等)を組み合わせた実用的なシェルエイリアス集。Git/Docker/gcloud操作を劇的に効率化するショートカットを紹介します。

2026年2月20日22分で読める
fzfCLIシェル効率化開発環境
【fzf活用術】シェルエイリアスで指を守る - 開発効率を劇的に上げるショートカット集

「ls -laを1日何回打ってるんだろう...」

開発者の指は酷使されています。同じコマンドを何度も打ち、長いオプションを覚え、タイポしてcommand not foundに怒られる。そして気づけば腱鞘炎の予感(整形外科の予約、いつ取ろう...)。

そんな日々に終止符を打つのがシェルエイリアスです。特にfzf(ファジーファインダー)との組み合わせが強力で、「IDをコピーしてコマンドに貼り付けて...」という作業がゼロになります。

「えっ、そんなに変わる?」と思いますよね。私も最初は半信半疑でした。でも一度使うと戻れません。

この記事で学べること

  • fzfを活用したインタラクティブなコマンド体験
  • eza, bat, ripgrepなどモダンCLIツールの導入
  • Git/Docker/gcloud操作を効率化するエイリアス
  • 設定でハマりがちなポイントと対処法

前提:必要なツール

この記事で紹介するエイリアスには、以下のツールが必要です。

# macOS (Homebrew)
brew install fzf eza bat rm-improved ghq fd sd ripgrep lazygit lazydocker

# Nix (home-manager)
# home.packages に追加するだけ
ツール役割一言コメント
fzfファジーファインダー(インタラクティブ選択)これがないと始まらない
ezals の進化版(アイコン・Git status対応)見た目が100倍良くなる
batcat の進化版(シンタックスハイライト)もう素のcatには戻れない
riprm の安全版(削除ファイルを一時保存)rm -rfの恐怖から解放
ghqGitリポジトリ管理リポジトリ迷子防止
fdfind の高速版findの呪文を覚えなくていい
sdsed の使いやすい版正規表現地獄からの解放
rggrep の高速版(ripgrep)爆速検索

基本のファイル操作系

まずは毎日使うコマンドの強化版から。地味だけど、これだけで1日のタイピング量が体感20%減(個人の感想です)。

lsの進化版:eza

alias ls='eza --icons --git --time-style relative -la'
alias lt='eza --icons --git --time-style relative --tree -aI "node_modules|.git|.cache"'
alias ltl='eza --icons --git --time-style relative --tree -alI "node_modules|.git|.cache"'

ezaはlsの進化版。アイコン表示、Git status、相対時間表示が標準で付いてきます。ltでツリー表示、node_modules等の不要フォルダは自動で除外(これ地味に大事)。

catの進化版:bat

alias cat='bat'

シンタックスハイライト付きでファイルを表示。設定ファイルを確認するとき、色がついてるだけで読みやすさが段違い。

rmの安全版:rip

alias rm='rip'

ripは削除したファイルを一時保存してくれる安全なrm。「やっべ、消しちゃった」からの復活が可能です。

本番環境でrm -rfを打つ前に、手元で練習しておきましょう(経験者は語る)。

fzfを活用したインタラクティブ系

ここからが本番。fzfと組み合わせると、コマンドの体験が劇的に変わります。

「いちいち選ぶの面倒じゃない?」と思うかもしれません。でも、IDやパスを手打ちしてタイポするストレスと比べたら、天と地の差です。

コマンド履歴をコピー

alias h='echo -n $(history | fzf +s --layout=reverse) | pbcopy'

過去に実行したコマンドをfzfで検索してクリップボードにコピー。「あのコマンドなんだっけ...」がサクッと解決。Slackで同僚に共有するときも便利。

リポジトリ間を高速移動

alias g='cd "$(ghq list --full-path | fzf --layout=reverse --preview '\''eza --icons --git --time-style relative -la {1}'\'')"'

ghqで管理しているリポジトリ一覧をfzfで表示し、選択したディレクトリに移動。プレビューで中身も確認できるので、「あれ、このリポジトリ何だっけ」問題が解消。

これ、1日に何十回も使います。cd ~/ghq/github.com/...と打っていた時代には戻れません。

パスをクリップボードにコピー

alias pwdc='echo -n "$(pwd)" | pbcopy; pbpaste'

現在のディレクトリパスをコピー。Slackやドキュメントにパスを貼りたいとき、地味に重宝します。

ディレクトリ配下のファイルを一括取得

alias fl='fd --type f . "$(eza -DR | sd '\'':$'\'' '\'''\'' | rg '\''^./'\'' | fzf)" -x sh -c '\''echo "==== $1 ===="; cat "$1"'\'' _ {} | pbcopy; pbpaste'

選択したディレクトリ配下のファイルパスと中身を一括でクリップボードに。ChatGPTやClaudeにコード全体を渡したいときに最強です。

「このディレクトリのコード全部見せて」ができる。AI時代の必須エイリアス。

Git系

ブランチ名をコピー

alias B='echo -n "$(git branch -av | fzf --layout=reverse --prompt "GIT BRANCH>"| sd "\\*" "" |awk '\''{print $1}'\'')" | pbcopy'

ブランチ一覧からfzfで選択してコピー。PR作成時、Slackでの報告時に便利。

ブランチを切り替え

alias S='git switch "$(git branch -av | fzf --layout=reverse --prompt "GIT BRANCH>" | sd "\\*" "" |awk '\''{print $1}'\'')"'

git switchをfzfで強化。ブランチ名を覚えていなくても大丈夫。feature/implement-user-authentication-with-oauth2みたいな長いブランチ名も怖くない。

GitHubをブラウザで開く

alias ghb='gh browse'
alias lg='lazygit'

ghbでリポジトリのGitHubページを開く。lgでlazygitを起動。lazygitはGitのTUIクライアントで、コミット、プッシュ、リベースが直感的に操作できます(一度使うと手放せない)。

Docker系

Docker操作は長いコマンドの宝庫。エイリアスの効果が絶大です。

「docker container ls してIDコピーして docker exec -it して...」という作業、心当たりありませんか?

コンテナに入る

alias d='docker exec -it $(docker ps | fzf --layout=reverse --prompt "Docker Container>" --preview-window '\''bottom:70%'\'' --preview '\''docker logs {1}'\''| awk '\''{print $1}'\'') sh'

起動中のコンテナをfzfで選択して接続。プレビューでログも見れるので、どのコンテナか迷いません。

ログを表示

alias dl='docker logs --follow --tail=100 $(docker ps -a | fzf --layout=reverse --prompt "Docker Container>" --preview-window '\''bottom:70%'\'' --preview '\''docker logs --details {1}'\'' | awk '\''{print $1}'\'')'

コンテナを選んでログをtail。--followで流れ続けます。プレビューで事前にログの雰囲気も確認可能。

停止・削除系

alias ds='docker stop $(docker ps | fzf --layout=reverse --prompt "Docker Container>" --preview-window '\''bottom:70%'\'' --preview '\''docker logs {1}'\''| awk '\''{print $1}'\'')'
alias dr='docker rm $(docker ps -a | fzf --layout=reverse --prompt "Docker Container>" --preview-window '\''bottom:70%'\'' --preview '\''docker logs {1}'\''| awk '\''{print $1}'\'')'
alias dir='docker image rm $(docker image ls | fzf --layout=reverse --prompt "Docker Image>" --preview '\''docker image inspect {3}'\''| awk '\''{print $3}'\'')'
alias dvr='docker volume rm $(docker volume ls | fzf --layout=reverse --prompt "Docker Volume>" --preview '\''docker volume inspect {2}'\''| awk '\''{print $2}'\'')'
alias dp='docker ps'
alias dpr='docker system prune -f'

すべてfzfで選択できるので、IDをコピペする必要なし。プレビューで確認してから削除できるので、「間違えて本番のコンテナ消した」事故も防げます(これ大事)。

docker compose略記

alias dc='docker compose'
alias dcb='docker compose build --no-cache'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcp='docker compose ps'

docker composeをdcに短縮。dcuでup、dcdでdown。1日に何十回も打つコマンドなので、2文字の短縮でも積み重なると大きい。

devcontainer系

alias dvcb='devcontainer build --workspace-folder . --no-cache'
alias dvcu='devcontainer up --workspace-folder .'
alias dvcur='devcontainer up --workspace-folder . --remove-existing-container'
alias dvcd='docker compose -p (basename (pwd))_devcontainer down'
alias dvce='devcontainer exec --workspace-folder . zsh'

devcontainerの操作も短縮。dvcuでup、dvceで中に入る。dvcurは既存コンテナを削除して再作成(設定変更後によく使う)。

gcloud系

alias gca='gcloud config configurations activate $(gcloud config configurations list | fzf --layout=reverse --prompt '\''config>'\'' | awk '\''{print $1}'\'')'
alias gcp='gcloud config set project $(gcloud projects list | fzf --layout=reverse --prompt '\''config>'\'' | awk '\''{print $1}'\'')'

複数プロジェクトを扱う人必須。fzfで選んで切り替え。「あれ、今どのプロジェクト?」問題が解消。

間違ったプロジェクトにデプロイする悲劇を防げます(本当に防げます)。

その他の便利系

グローバルIP確認

alias ip='echo -n $(dig myip.opendns.com @208.67.222.222 +short) | pbcopy ; pbpaste'

現在のグローバルIPをコピー。ファイアウォール設定時、「自分のIPなんだっけ」が一瞬で解決。

DeepL翻訳

alias tre='deepl text --to en-us '
alias trj='deepl text --to ja '

CLIから直接翻訳。tre "こんにちは"で英訳、trj "hello"で日本語訳。ドキュメント書くときに便利。

yazi・lazydocker

alias y='yazi'
alias ld='lazydocker'

yaziはターミナルファイルマネージャ、lazydockerはDockerのTUI。どちらも1文字で起動。

ハマりポイントと対処法

エイリアス設定でよくある失敗と対処法をまとめました。

1. クォートの地獄

# これだと動かない
alias g='cd "$(ghq list --full-path | fzf --preview 'eza -la {1}')"'

# こうする(シングルクォートをエスケープ)
alias g='cd "$(ghq list --full-path | fzf --preview '\''eza -la {1}'\'')"'

シェルエイリアス内でシングルクォートを使いたい場合、'\''でエスケープします。見た目は最悪ですが、これが正解(3時間溶かした経験談)。

2. pbcopyはmacOS専用

# macOS
alias pwdc='echo -n "$(pwd)" | pbcopy; pbpaste'

# Linux
alias pwdc='echo -n "$(pwd)" | xclip -selection clipboard; xclip -o -selection clipboard'

pbcopy/pbpasteはmacOS専用。Linuxではxclipやxselを使います。

3. fishとzsh/bashでシンタックスが違う

# bash/zsh
alias ls='eza --icons'

# fish(shellAbbrsを使う場合)
abbr ls 'eza --icons'

fishはaliasも使えますが、shellAbbrs(略語展開)を使うと履歴に展開後のコマンドが残るので便利。

4. 設定反映を忘れる

# 設定変更後は必ず
source ~/.zshrc  # zshの場合
source ~/.bashrc # bashの場合
exec fish        # fishの場合

「設定したのに動かない」の9割はこれ。新しいターミナルを開くか、sourceで反映。

設定方法

これらのエイリアスは ~/.zshrc や ~/.bashrc に追加するだけで使えます。

# ~/.zshrc または ~/.bashrc に追加

# 基本コマンド強化
alias ls='eza --icons --git --time-style relative -la'
alias cat='bat'
alias rm='rip'

# fzf系(お好みで追加)
alias g='cd "$(ghq list --full-path | fzf --layout=reverse)"'
alias S='git switch "$(git branch -av | fzf --layout=reverse | awk '\''{print $1}'\'')"'

# Docker系
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'

設定後は source ~/.zshrc で反映されます。

Nix (home-manager) を使っている場合

# home-manager/programs/common.nix
{
  shellSortcuts = {
    ls = ''eza --icons --git --time-style relative -la'';
    cat = ''bat'';
    # ... 以下同様
  };
}

Nixで管理すると、複数マシンで同じエイリアスを使い回せます(これが本当に楽)。

まとめ

シェルエイリアスは、日々のタイピング量を劇的に減らす投資です。

特にfzfとの組み合わせは強力で、「IDをコピーしてコマンドに貼り付けて...」という作業がゼロになります。プレビュー機能で「これで合ってる?」と確認してから実行できるので、事故も減ります。

紹介したエイリアスは自分の作業スタイルに合わせてカスタマイズしてください。最初は数個から始めて、「このコマンドよく打つな」と思ったら追加していく。気づけば指が勝手に動くようになります。

1週間後には「エイリアスなしでどうやって仕事してたんだろう」と思うはず(私はそうでした)。

→ お問い合わせはこちら

About playpark

「あらゆる仕事を楽しむ」をミッションに、業務自動化・AI活用を手がける合同会社です。このブログの運用自体も、自社開発のClaude Code Skillsで完全自動化しています。

会社概要サービス
一緒に実験しませんか?
ブログ一覧に戻る

関連記事

すべての記事
【Claude Code カスタマイズ】settings.jsonとCLAUDE.mdで自分専用AI開発環境を作る方法
実験レポート
2026年2月17日31分で読める
【Claude Code カスタマイズ】settings.jsonとCLAUDE.mdで自分専用AI開発環境を作る方法

Claude Codeのsettings.jsonとCLAUDE.mdをカスタマイズして自分専用のAI開発環境を構築する方法。hooks設定・MODE切替・Skill化の手順を実例付きで解説します。

Claude CodeClaude Code カスタマイズsettings.json+6
【AI開発環境】4つのAIコーディングツールのSkillsを1リポジトリで統一管理する方法
技術Tips
2026年2月27日26分で読める
【AI開発環境】4つのAIコーディングツールのSkillsを1リポジトリで統一管理する方法

Claude Code・Codex・OpenClaw・Antigravityの4つのAIコーディングツールで同じSkillsを共有する、symlink + Nix管理の実践手法を紹介します。

AIClaude Code開発環境+3
【Nix】dotfiles管理をNix Flakesでやってみた - 再現性100%の開発環境構築実験
実験レポート
2026年2月13日21分で読める
【Nix】dotfiles管理をNix Flakesでやってみた - 再現性100%の開発環境構築実験

Homebrewとシェルスクリプトでゴリゴリやってたdotfiles管理をNix Flakesに移行してみました。nix-darwin + home-managerで「新しいMacでも30分で同じ環境」を実現した実験レポート。

Nixdotfilesnix-darwin+3

この技術を活用したサービス

記事の技術を使って、業務課題を解決しませんか?playparkのソリューションをご覧ください。

ソリューション一覧へ