Linux history コマンド完全ガイド

Linux 命令大全Linux コマンド大全

history は Linux システムにおいて非常に便利な組み込みコマンドで、ユーザーがターミナルで実行したすべてのコマンド履歴を記録します。この機能は以下のシーンで特に価値があります:

  1. 操作の追跡:以前に実行したコマンドを確認する
  2. 素早い再利用:長いコマンドを再入力する必要がない
  3. 問題の切り分け:システムの操作記録を確認する
  4. 効率向上:履歴コマンドを使用して繰り返し作業をすばやく完了する

ターミナルでコマンドを入力すると、Bash はこれらのコマンドをメモリに保存し、終了時に~/.bash_historyファイルに書き込みます(デフォルト設定の場合)。


基本構文と使用方法

history コマンドの基本構文は非常にシンプルです:

history [选项] [参数]

一般的な形式

1. 完全な履歴を表示する:

history

2. 最近の N 件の履歴を表示する:

history 10  # 显示最近10条命令

3. すべての履歴を消去する:

history -c

4. 特定の履歴を削除する(例:1010番目の履歴を削除):

history -d 1010

一般的なオプションとパラメータの詳細

history コマンドは複数の実用的なオプションをサポートしています:

オプション 説明 例
-c すべての履歴を消去する history -c
-d 指定した位置の履歴を削除する history -d 1005
-a メモリ内の履歴を直ちに履歴ファイルへ書き込む history -a
-n 履歴ファイルから未読の履歴を読み込む history -n
-r 履歴ファイルの内容を現在のセッションに読み込む history -r
-w 現在の履歴を履歴ファイルに書き込む history -w

実用的なテクニックと高度な使い方

1. 履歴コマンドをすばやく実行する

例

!n        # 履歴の中の n 番目のコマンドを実行する
!!        # 直前のコマンドを実行する
!string   # string で始まる直近のコマンドを実行する

例:

例

!1024     # 履歴の中で番号が1024のコマンドを実行する
!!        # 直前のコマンドを再実行する
!vim      # vim で始まる直近のコマンドを実行する

2. 履歴コマンドを検索する

使用Ctrl+Rにより、履歴コマンドを逆方向に検索できます。キーワードの一部を入力するだけで、一致するコマンドを見つけられます。

3. 履歴コマンドの置換

例

^old^new  # 直前のコマンド内の old を new に置換して実行する

例:

例

$ cat file1.txt
$ ^file1^file2  # cat file2.txt を実行するのと同等

4. コマンドのタイムスタンプを表示する

に~/.bashrcに以下の設定を追加すると、コマンドの実行時刻を表示できます:

例

export HISTTIMEFORMAT="%F %T "

その後、以下を実行します:

例

source ~/.bashrc

その後historyhistory コマンドは各コマンドの実行時刻を表示します。


環境変数の設定

環境変数を使用して history コマンドの動作をカスタマイズできます:

変数 説明 推奨値
HISTSIZE メモリ内に保存される履歴コマンドの数 5000
HISTFILESIZE 履歴ファイルに保存されるコマンドの数 10000
HISTCONTROL 履歴の記録方法を制御する ignoredups:erasedups
HISTIGNORE 記録しないコマンドを指定する "ls:cd:pwd:exit"

設定例(追加する場合~/.bashrc):

例

export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups:erasedups
export HISTIGNORE="ls:cd:pwd:exit"
export HISTTIMEFORMAT="%F %T "

実際の応用シーン

シーン1:忘れたコマンドを取り戻す

例

history | grep "apt install"

シーン2:最もよく使うコマンドを統計する

例

history | awk '{CMD[$2]++;count++;} END {for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10

シーン3:履歴をバックアップする

例

history -a  # 最新のコマンドがファイルに書き込まれていることを確認する
cp ~/.bash_history ~/command_history_backup_$(date +%F).txt

注意事項

  1. プライバシーとセキュリティ:履歴にはパスワードなどの機密情報が含まれる場合があるため、保護に注意してください
  2. 複数ターミナルの問題:異なるターミナルセッションは、デフォルトでは履歴をリアルタイムに共有しない
  3. 履歴の消失:異常終了によりコマンドが保存されない可能性がある
  4. 大きなファイルの処理:履歴ファイルが大きすぎるとパフォーマンスに影響する可能性がある

まとめと練習

  1. コマンド履歴を確認し、直近で使用した5つの git コマンドを見つけましょう

    history | grep git | tail -5
  2. bash 環境を設定し、履歴にタイムスタンプを含めて重複コマンドを無視するようにしましょう

  3. エイリアスを作成し、現在の履歴を指定したディレクトリへすばやくバックアップしましょう

    alias backup_history='cp ~/.bash_history ~/history_backups/history_$(date +%Y%m%d_%H%M%S).txt'
  4. 試しに使用してCtrl+R以前使った複雑なコマンドを検索してみましょう

history コマンドを習得することで、Linux ターミナルでの作業効率を大幅に向上させ、繰り返しの入力を減らし、コマンドラインの操作履歴をより良く管理できます。

Linux 命令大全Linux コマンド大全

その他の拡張