本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
ターミナルの「打ち直し」を卒業する | historyと補完による入力効率化の基本|UNIX Cafe

ターミナルに慣れてくると、難しいコマンドより先に気になってくるのが「毎回の打ち直し」です。前に使ったコマンドをもう一度使いたい。長いコマンド名やファイル名を、最後まで毎回打つのは面倒です。
今回は、そんな小さな負担を減らすための基本として、history と補完の考え方と具体的な使い方を整理します。
📝 この記事で学べること
historyが何のためにあるのか- 矢印キー・
Ctrl+R・!!などで履歴を呼び出す方法 - Tab補完が入力の手間をどう減らすのか
- 探す、読む、編集する流れでどう役立つのか
毎回の打ち直しは、思っているより負担になる
ターミナルでは、同じようなコマンドを何度も使う場面がよくあります。たとえばファイルを探したあとに、そのファイルを開く。少し編集して、もう一度確認する。こうした流れの中では、似たコマンドを何回も入力することになります。
1回ごとの負担は小さくても、それが毎日積み重なると作業の疲れ方が変わってきます。ターミナル仕事術では、特別なことを1回だけ速くするより、よくやる作業を少しずつ軽くすることが大切です。history と補完は、その考え方にぴったり合う基本機能です。
history は「前に使ったコマンド」を活かす仕組み
シェルは、あなたが入力したコマンドを履歴(ヒストリ)として自動的に記録しています。一度使ったコマンドを、また使いたいことはよくあります。そのたびに最初から打ち直さなくても済むようにするのが、履歴の役目です。
✔ ポイント
「覚えて再入力する」のではなく、「前に打ったものを再利用する」と考えましょう。初心者のうちは、この発想に慣れるだけでも作業はかなり楽になります。
履歴の一覧を見る — history コマンド
ターミナルに history と打つと、これまでに入力したコマンドが番号付きで一覧表示されます。
$ history
501 ls -la
502 cd Documents
503 find . -name "*.txt"
504 cat notes.txt
505 vi notes.txt
506 history番号は各コマンドに割り当てられた通し番号です。この番号を使って、あとから特定のコマンドを呼び出せます。件数が多いときは history 20 のように数字を渡すと、直近20件だけ表示できます。
macOS(zsh)での注意点
macOSのデフォルトシェルであるzshでは、history 20 の動作がbashと異なります。bashでは直近20件を表示しますが、zshでは「20番以降の全件」を表示する仕様になっているため、大量のログが流れてしまいます。
zshで直近の件数を絞って表示したい場合は、次のいずれかの方法を使いましょう。
# 直近20件だけ表示する(zsh対応の書き方)
$ history -20
# パイプで絞る方法(bash・zsh どちらでも動く)
$ history | tail -20history -20 はzsh固有の記法で、末尾から20件を取り出して表示します。history | tail -20 はbashでも使える汎用的な書き方なので、シェルを意識せず使いたい場合はこちらが確実です。
よく使う履歴の呼び出し方
履歴を再利用する方法はいくつかあります。場面に合わせて使い分けましょう。
| 操作 | 何ができるか |
|---|---|
| ↑ / ↓ | 1つ前 / 1つ後のコマンドに移動する。最もよく使う基本操作。 |
| Ctrl+R | キーワードで履歴をインクリメンタル検索する。長いコマンドを探すときに便利。 |
| !! | 直前のコマンドをそのまま再実行する。 |
| !番号 | 指定した番号のコマンドを再実行する(例: !503)。 |
| !文字列 | その文字列で始まる最新のコマンドを再実行する(例: !vi)。 |
↑ キー — 1つ前のコマンドに戻る
最もシンプルな方法です。ターミナルで ↑ を押すたびに、直前・その前・さらにその前……と過去のコマンドが順番にプロンプトへ呼び出されます。↓ で新しい方向に戻れます。呼び出したコマンドはそのまま編集して Enter できます。
# ↑キーを2回押した状態のイメージ
$ find . -name "*.txt" # ↑↑ で呼び出された
# ここで Enter すれば再実行。一部を編集してから Enter することも可能。Ctrl+R — キーワードで履歴を検索する
たくさんコマンドを打っていると、目的のものが何十件も前にある場合があります。そんなときは Ctrl+R です。押すとプロンプトが変わり、キーワードを入力するたびに一致する履歴をリアルタイムで絞り込んでくれます。
(reverse-i-search)`fin': find . -name "*.txt"目的のコマンドが表示されたら Enter で実行、→ や Ctrl+E でプロンプトに展開して編集もできます。同じキーワードでさらに古い履歴を探したいときは Ctrl+R を繰り返します。キャンセルしたいときは Ctrl+C です。
!! と !番号 — 履歴を直接呼ぶ
!! は直前のコマンドを再実行します。たとえば sudo をつけ忘れたときに便利です。
$ cat /etc/hosts # 権限が足りなかった場合
Permission denied
$ sudo !! # sudo と直前のコマンドを組み合わせる
sudo cat /etc/hosts # シェルがこう展開して実行してくれる!番号 は history で確認した番号を指定します。たとえば503番のコマンドを再実行するなら !503 と入力します。
$ !503
find . -name "*.txt" # シェルが展開して表示・実行⚠️ 注意
!! や !番号 は確認なしに即実行されます。rm など破壊的なコマンドには慎重に使いましょう。不安なときは echo !! で展開内容だけ確認できます。
補完は「最後まで正確に打つ」を減らす仕組み
補完(タブ補完)は、コマンド名やファイル名を途中まで入力したところで Tab キーを押すと、シェルが残りを自動的に埋めてくれる機能です。長い名前を毎回すべて打たなくてよくなるので、入力量だけでなくタイプミスの可能性も減らせます。
補完のよさは、速さだけではありません。入力の負担が減ることで、ターミナルに対する心理的なハードルも下がります。「長い名前を正確に入力しなければいけない」という緊張が減るだけでも、作業はかなりしやすくなります。
Tab 1回 — 一意に決まれば自動補完
入力した文字列で始まる候補が1つしかない場合、Tab を1回押すだけで残りが補われます。
$ cd Doc[Tab]
$ cd Documents/ # 自動的に補完される
$ cat UNIX_Ca[Tab]
$ cat UNIX_Cafe_notes.txt # ファイル名が補完されるTab 2回 — 候補が複数あれば一覧表示
候補が複数ある場合、1回目の Tab では何も起きません(または共通部分だけ補完)。もう1回 Tab を押すと、候補の一覧が表示されます。
$ ls note[Tab][Tab]
notes.txt notes_old.txt notes_backup.txt
$ ls note候補を確認したら、さらに1文字追加して絞り込み、再度 Tab で補完します。
コマンド名も補完できる
補完はファイル名だけでなく、コマンド名にも使えます。たとえば hist まで打って Tab を押せば history が補完されます。
$ hist[Tab]
$ history💡 ヒント
迷ったらとにかく Tab を押してみましょう。補完できればラッキー、候補が出れば選択肢を確認できます。何も起こらなければ入力が足りないサインです。
探す、読む、編集する流れで特に効いてくる
履歴と補完は単独で便利なだけでなく、作業の流れ全体を軽くする点が重要です。たとえば、ファイルを探して、中身を読んで、必要なら編集するという流れを考えてみましょう。
# Step 1: ファイルを探す
$ find . -name "*.txt"
./Documents/UNIX_Cafe_notes.txt
./Documents/shopping.txt
# Step 2: 中身を読む(ファイル名を Tab 補完)
$ cat Documents/UNIX_Ca[Tab]
$ cat Documents/UNIX_Cafe_notes.txt
# Step 3: 編集したくなったら ↑ で cat を呼び出し、vi に書き換える
$ vi Documents/UNIX_Cafe_notes.txt✔ 流れの中での活かし方
- 探す:似た検索コマンドを
↑やCtrl+Rで再利用できます。 - 読む:長いファイル名を
Tab補完で短く入力できます。 - 編集する:さっき使った対象ファイルを
↑で呼び出し、コマンド名だけ書き換えられます。
こうした場面では、同じ単語や同じパスを何度も入力しがちです。履歴と補完を意識するだけで、1回ごとの操作が少し軽くなり、その積み重ねが作業全体の快適さにつながります。
実際に試してみよう
読むだけでなく、実際に手を動かすと感覚がつかめます。次の手順でぜひ試してみてください。
- ターミナルを開き、
lsを実行します。 ↑を押してlsを呼び出し、そのままEnterで再実行します。echo hello worldを実行し、!!で同じコマンドを再実行します。cdまで打ち、Tabを2回押してディレクトリ候補を確認します。Ctrl+Rを押し、echoと打って先ほどのコマンドを探します。
1〜2分で終わる簡単な手順ですが、体で覚えると次からは自然に手が動くようになります。
初心者は、まず2つだけ意識すれば十分
最初から細かな使い方を全部覚える必要はありません。まずは次の2つの意識だけで十分です。
✔ 最初に意識する2つのこと
- 前に打ったものを活かせないか考える — まず
↑かCtrl+Rを試しましょう。 - 最後まで打つ前に途中までで済ませられないか考える — 数文字打ったら
Tabを試しましょう。
この2つを意識するだけで、「毎回全部を手で入力する」という状態から一歩抜け出せます。ターミナルに慣れるとは、難しい技を増やすことだけではなく、手数を自然に減らしていくことでもあります。
まとめ
| 操作 | 効果 |
|---|---|
| ↑ / ↓ | 直前のコマンドを呼び出す |
| Ctrl+R | キーワードで履歴を検索する |
| !! | 直前のコマンドを再実行する |
| !番号 | 指定番号のコマンドを再実行する |
| history | 履歴の一覧を表示する |
| Tab | コマンド名・ファイル名を補完する |
| Tab 2回 | 補完候補の一覧を表示する |
history は、前に使ったコマンドを活かすための基本です。補完は、長い入力を短くし、タイプミスも減らしてくれます。どちらも地味に見えますが、毎日のターミナル作業では大きな効果があります。
派手なテクニックを急いで覚えるより、まずは打ち直しを減らすことから始めましょう。それだけでも、ターミナル作業はかなり快適になります。









