この記事では「知ってる人は知ってる、でも意外と使われていない」実用コマンドを厳選して紹介します。
コピペしてすぐ使える形でまとめたので、ぜひターミナルを開きながら読んでみてください。
はじめに
Linuxを日常的に使っていると、「もっと速くできないか?」と感じる場面が必ずあります。
よく紹介される ls や grep ではなく、知ると作業効率が段違いに変わるコマンドを5つに絞って紹介します。
対象読者:
- Linux初心者を卒業したばかりの方
- ターミナル作業をもっとスマートにしたいエンジニア
1. fzf — あらゆる選択をインタラクティブに
インストール
# Ubuntu / Debian
sudo apt install fzf
# macOS (Homebrew)
brew install fzf
# キーバインド有効化(環境によりパスや手順は異なります)
$(brew --prefix)/opt/fzf/install
# Bash のキーバインド読み込み(環境によりパスは異なるので要確認)
source /usr/share/doc/fzf/examples/key-bindings.bash
# もしくは、インストール時に案内される key-bindings のパスを参照してください
できることは?
fzf はファジーファインダーと呼ばれるツールで、パイプで渡した任意のリストをインタラクティブに絞り込めるコマンドです。
# ファイルをインタラクティブに選択して開く
vim $(fzf)
# ヒストリ検索を爆速化(.bashrc / .zshrc に追記)
# Ctrl+R で起動
source /usr/share/doc/fzf/examples/key-bindings.bash
応用例:git ブランチを楽々切り替え
# カレントブランチ(先頭に * が付く)を除外して安全に選択
git checkout $(git branch | grep -v "^\*" | fzf)
絞り込みながらブランチを選択できます。長いブランチ名を打ち間違えるストレスがゼロになります。
fzf は単体でも強力ですが、他のコマンドと組み合わせることで真価を発揮します。「全部パイプで繋げる」UNIX哲学の体現です。
※インタラクティブ:操作に応じて即応答する双方向システムのこと
2. tldr — manコマンドの読みやすい代替
インストール
# 公式 Node.js クライアント(推奨)
npm install -g tldr
# (参考)Python 実装など他のクライアントも存在しますが、
# 本記事では npm 版を前提に説明します。
できることは?
man コマンドは詳細な反面、読むのに時間がかかります。tldr は実用的なコマンド例だけを端的に表示してくれます。
# tarコマンドの使い方をサッと確認
tldr tar
出力例:
tar
Archiving utility.
Often combined with a compression method, such as gzip or bzip2.
- Create an archive and write it to a file:
tar cf target.tar file1 file2 file3
- Extract a (compressed) archive file into the current directory:
tar xf source.tar[.gz|.bz2|.xz]
- List the contents of a tar file:
tar tvf source.tar
man tar を開いて延々スクロールする必要がなくなります。
3. watch — コマンドをリアルタイム監視
インストール
多くのディストリビューションに標準搭載されています。
なければ以下コマンドで使用することができます。
sudo apt install procps
他のディストリビューションでは、パッケージマネージャで watch を検索してみてください。
できることは?
watch は指定したコマンドを定期的に実行し、出力を画面に更新し続けます。ログ監視やリソース確認に便利です。
# 2秒ごとにディスク使用量を更新表示(デフォルト)
watch df -h
# 1秒ごとに更新
watch -n 1 df -h
# 変化した部分をハイライト表示
watch -d free -h
応用例:デプロイ中のコンテナ状態を監視
watch -n 2 docker ps
別ターミナルでデプロイを走らせながら、このウィンドウでコンテナの起動を眺めるだけでOKです。Ctrl+C で終了します。
4. xargs — 標準出力を引数として次のコマンドに渡す
できることは?
パイプ | は標準出力を「テキストストリーム」として渡しますが、xargs はそのテキストを空白や改行で区切って引数に展開するブリッジです。
# カレントディレクトリの .log ファイルをすべて削除
find . -name "*.log" | xargs rm
# 並列実行でビルドを爆速化(-P でプロセス数を指定)
cat targets.txt | xargs -P 4 -I {} make {}
ありがちなミスと回避策
ファイル名にスペースが含まれると xargs は誤動作します。find と組み合わせる場合は -print0 と -0 で安全に処理しましょう。
# まずは削除対象を確認(スペースを含むファイル名にも対応)
find . -name "*.log" -print0 | xargs -0 echo rm
# 問題なければ echo を外して本番実行
find . -name "*.log" -print0 | xargs -0 rm
xargs rm は強力すぎるため、本番環境では先に xargs echo で削除対象を確認する習慣をつけましょう。
5. tmux — ターミナルを分割・セッション管理
インストール
sudo apt install tmux
できることは?
tmux はターミナルマルチプレクサです。一つのターミナルウィンドウを分割したり、SSH接続が切れてもジョブを継続させたりできます。
基本操作(プレフィックスキーは Ctrl+b)
| 操作 | コマンド |
|---|---|
| 新しいセッション開始 | tmux new -s mysession |
| セッション一覧 | tmux ls |
| セッションにアタッチ | tmux attach -t mysession |
| 画面を左右に分割 | Ctrl+b % |
| 画面を上下に分割 | Ctrl+b " |
| ペイン間を移動 | Ctrl+b ←↑↓→ |
| セッションをデタッチ | Ctrl+b d |
最強のユースケース:SSH接続が切れてもジョブを継続
# サーバーに SSH でログイン後
tmux new -s deploy
# 長時間かかる処理を実行
./deploy.sh
### 最強のユースケース:SSH切断後もサーバー上でジョブを継続
# SSH接続が切れても、サーバー上でtmuxセッションとジョブは継続される
# 再接続後に tmux attach で作業を再開可能
# 再接続後
tmux attach -t deploy
長時間のバッチ処理やデプロイ作業では必須のツールです。
まとめ
| コマンド | 一言で言うと |
|---|---|
fzf |
何でもインタラクティブに絞り込む |
tldr |
man の読みやすい代替 |
watch |
コマンドをリアルタイム監視 |
xargs |
出力を引数として次のコマンドへ |
tmux |
ターミナルを分割&セッション管理 |
1つでも気になるコマンドなどありましたでしょうか。
まず tldr で「コマンドを調べる時間」を減らし、次に fzf で「選択する時間」を減らすだけでも、体感できるほど作業が速くなります。
ぜひ使ってみて、気に入ったものをシェルの設定ファイルに組み込んでみてください!