ターミナル生産性を10倍にする5つのハック
日々の開発作業を劇的に効率化するターミナルのtipsとツール
ripgrep、fd、bat、eza、fzfなど、開発効率を劇的に向上させる最新CLIツールを徹底解説。インストール方法から実践的な使い方まで、今すぐ使えるTips満載!
開発者のみなさん、まだ grep
や find
で消耗していませんか?
2024 年、私たちにはもっと速く、もっと使いやすい CLI ツールがあります。今回は、私が実際に使って「これは手放せない!」と感じたモダンな CLI ツール 5 選を紹介します。
grep の 100 倍速い(体感)検索ツール。.gitignore
を自動で認識してくれるのも最高です。
# Mac
brew install ripgrep
# Ubuntu/Debian
sudo apt install ripgrep
# Arch Linux
sudo pacman -S ripgrep
# 基本検索
rg "TODO"
# ファイルタイプ指定
rg "console.log" --type js
# 大文字小文字を無視
rg -i "error"
# 正規表現を使う
rg "func\s+\w+\(" --type go
# 検索結果のコンテキストを表示
rg "bug" -C 3
# 特定のディレクトリを除外
rg "password" --glob '!{node_modules,dist}/*'
# ファイル名のみ表示
rg -l "deprecated"
# 統計情報を表示
rg --stats "TODO" | tail -n 20
# 置換プレビュー(実際には置換しない)
rg "old_function" --replace "new_function"
# JSONファイルから特定のキーを探す
rg '"api_key":\s*"[^"]+"' --type json
# 遅い、.gitignoreを無視
grep -r "TODO" . | grep -v node_modules
# 複雑なコマンド
find . -name "*.js" -exec grep -l "console.log" {} \;
# 高速、.gitignore自動認識
rg "TODO"
# シンプル
rg -t js "console.log" -l
# 遅い、.gitignoreを無視
grep -r "TODO" . | grep -v node_modules
# 複雑なコマンド
find . -name "*.js" -exec grep -l "console.log" {} \;
# 高速、.gitignore自動認識
rg "TODO"
# シンプル
rg -t js "console.log" -l
ファイル検索が直感的で高速に。正規表現もサポート!
# Mac
brew install fd
# Ubuntu/Debian
sudo apt install fd-find
# ※Ubuntuでは'fdfind'コマンドになるので注意
# Arch Linux
sudo pacman -S fd
# ファイル名で検索
fd "test"
# 拡張子で絞り込み
fd -e py
# 正規表現
fd "^test.*\.js$"
# 大文字小文字を無視
fd -i readme
# ディレクトリのみ
fd -t d src
# 最近変更されたファイル
fd --changed-within 1d
# 特定サイズ以上のファイル
fd --size +1M
# 隠しファイルも含める
fd -H .env
# 実行可能ファイルのみ
fd -t x
# 検索結果に対してコマンド実行
fd -e jpg -x convert {} {.}.png
# Git管理下のファイルのみ
fd --type f --exec git ls-files {} \;
シンタックスハイライト付きでファイルを表示。行番号や git 差分も!
# Mac
brew install bat
# Ubuntu/Debian
sudo apt install bat
# ※Ubuntuでは'batcat'コマンドになる場合があるので注意
# Arch Linux
sudo pacman -S bat
# ファイル表示
bat README.md
# 行番号なし
bat -p file.txt
# 言語を指定
bat --language=json data.txt
# 複数ファイルを連結
bat file1.txt file2.txt
# 特定の行範囲のみ
bat --line-range 10:20 script.py
# Git差分を表示
bat --diff file.txt
# テーマを変更
bat --theme="Dracula" code.js
# 利用可能なテーマ一覧
bat --list-themes
# ページャーなしで表示
bat --paging=never large_file.log
# プレーンテキストとして表示(色なし)
bat --plain file.txt
# 環境変数で設定
export BAT_THEME="TwoDark"
ls の出力、もっとカラフルで見やすくできます!
# Mac
brew install eza
# Ubuntu/Debian (cargo経由)
cargo install eza
# Arch Linux
sudo pacman -S eza
# 基本表示(アイコン付き)
eza --icons
# 詳細表示
eza -la
# ツリー表示
eza --tree
# Gitステータス付き
eza --git -la
# ファイルサイズを見やすく
eza -lh --bytes
# 更新日時でソート
eza -la --sort=modified
# ディレクトリを先に表示
eza --group-directories-first
# 特定の深さまでツリー表示
eza --tree --level=2
# 拡張属性も表示(Mac)
eza -la@
# カスタムエイリアス
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'
これは本当に革命的。一度使うと手放せません!
# Mac
brew install fzf
# インストール後、キーバインド設定
$(brew --prefix)/opt/fzf/install
# Ubuntu/Debian
sudo apt install fzf
# ファイルを選んで開く
vim $(fzf)
# プレビュー付き
fzf --preview 'bat --style=numbers --color=always {}'
# 複数選択
fzf -m
# 履歴から検索(Ctrl+R)
# .bashrc/.zshrcに自動設定される
# Gitのブランチ切り替え
git checkout $(git branch -a | fzf | sed 's/^[ *]*//')
# プロセスをkill
kill -9 $(ps aux | fzf | awk '{print $2}')
# Dockerコンテナに入る
docker exec -it $(docker ps | fzf | awk '{print $1}') bash
# npm scriptsを実行
npm run $(cat package.json | jq -r '.scripts | keys[]' | fzf)
# 最近編集したファイルを開く
vim $(fd -t f --changed-within 1w | fzf --preview 'bat {}')
# インストール
brew install tldr
# 使い方
tldr tar # tarコマンドの実用例を表示
# インストール
brew install httpie
# 使い方
http GET api.github.com/users/github
http POST httpbin.org/post name=John email=john@example.com
# APIレスポンスを整形
curl -s api.example.com/data | jq '.'
# 特定のフィールドを抽出
echo '{"name":"John","age":30}' | jq '.name'
最後に、私の .zshrc
/.bashrc
の設定を共有します:
# エイリアス設定
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'
alias cat='bat'
alias find='fd'
alias grep='rg'
# fzfの設定
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow'
export FZF_DEFAULT_OPTS='--preview "bat --style=numbers --color=always {}"'
# ripgrepの設定(.rgignore)
echo "node_modules
.git
dist
build
*.min.js" > ~/.rgignore
# 便利な関数
# ファイルを探して編集
fe() {
local file
file=$(fzf --query="$1" --select-1 --exit-0)
[ -n "$file" ] && ${EDITOR:-vim} "$file"
}
# ディレクトリを探して移動
fd() {
local dir
dir=$(find ${1:-.} -type d | fzf)
[ -n "$dir" ] && cd "$dir"
}
これらのツールを使い始めてから、ターミナルでの作業効率が劇的に向上しました。特に:
最初は新しいコマンドを覚えるのが面倒かもしれませんが、1 週間も使えば手に馴染みます。そして気づいたら「これなしでは仕事できない」状態に…!
ぜひ 1 つずつ試してみてください。きっと開発体験が変わるはずです!
Happy Hacking! 🚀