
コマンドラインに多くの時間を費やしている場合は、以前に実行したコマンドの履歴を表示することで、日常業務をより簡単にし、生産性を向上させることができる便利な機能になる可能性があります。
この記事では、history
について説明します。 コマンド。これにより、以前に実行されたコマンドのリストを表示したり、リストを検索したり、履歴ファイルを操作したりできます。
history
の使用 コマンドと履歴の拡張#
history
はシェルビルトインであり、その動作はシェルごとにわずかに異なる場合があります。 history
のBashビルトインバージョンについて説明します 。
最も単純な形式では、オプションや引数なしで呼び出されると、history
コマンドは、履歴リスト全体を行番号とともに表示します。
history
...
467 git push
468 tail -f var/logs/error
469 nano +22,5 functions.sh
470 source project-env/bin/activate
471 history
!n
と入力します 履歴リストからn番目のコマンドを実行し、!-n
コマンドはn行戻ります。次の例では、467
行でコマンドを実行しています。 :
!467
コマンドを実行する別の方法は、!word
を使用することです。 拡張。 word
「単語」で始まる最新のコマンドを指します。
通常、history
画面に収まらない出力の多くの行を表示します。出力を一度に1ページずつ表示するには、出力をmore
などのポケットベルプログラムにパイプします。 またはless
コマンド:
history | less
最後のn
を表示するには 行、コマンドへの引数として番号を渡します。たとえば、履歴リストの最後の5行だけを表示するには、次のように入力します。
history -5
up
を使用する およびdown
リスト内のエントリをナビゲートするための矢印キー。検索したコマンドが表示されたら、Enter
を押します。 実行します。
!!
と入力します 前のコマンドを実行するには:
!!
これは、コマンドにsudo
を追加するのを忘れた場合に特に便利です。 、コマンドを再入力する代わりに、次のように入力できます。
sudo !!
!-1
!!
と同じです 履歴リストの最後のコマンド!-2
を実行します 最後から2番目など。
^word1^word2^
拡張を使用すると、「word1」を「word2」に置き換えて最後のコマンドを再実行できます。誤ってsduo command
を入力した場合 sudo command
の代わりに 次の正しい単語を使用してコマンドを繰り返すことができます:
^sduo^sudo^
grep
を使用する 出力をフィルタリングするコマンド。たとえば、「nano」を含むすべてのコマンドを表示するには、次のコマンドを実行します。
history | grep nano
302 sudo nano /etc/resolv.conf
356 nano setup.py
413 sudo nano /etc/hosts
469 nano +22,5 functions.sh
ここで、nano setup.py
を再実行する場合 コマンドは単に次のように入力します:
!356
コマンド履歴を検索する別の方法は、Ctrl-R
を押すことです。 。プロンプトが次のように変わり、以前に実行したコマンドの検索を開始できます。
(reverse-i-search)`':
シェルは一致する行を表示します。次に一致する提案に移動するには、Ctrl-R
を押します。 もう一度。
履歴拡張、修飾子、および指定子の詳細については、Bashのマニュアルを確認してください。
デフォルトでは、新しいセッションを開始すると、Bashは.bash_history
から履歴リストを読み取ります ファイル 。現在のセッションで実行されたコマンドのリストはメモリに保持され、セッションが閉じられたときにファイルに保存されます。
複数のシェルセッションを開いた場合、最後に閉じられたセッションの履歴のみが保存されます。
-a
オプションを使用すると、現在のセッション履歴リストを.bash_history
に保存できます。 ファイル:
history -a
-w
オプションは、完全な履歴リストを履歴ファイルに書き込みます。
history -w
history
コマンドを使用すると、完全な履歴リストをクリアしたり、特定の部分を削除したりできます。
履歴リストをクリアするには、-c
を使用します オプション:
history -c
履歴リストから開始位置と終了位置の間の特定の行を削除するには、-d
を使用します オプション。
たとえば、365〜375の行(これらの行を含む)を削除するには、次のように入力します。
history -d 365 375
-d
に1つの番号のみを指定する場合 オプションの場合、コマンドは指定された行を削除します。
負の整数を使用すると、行は履歴リストの最後からカウントバックされます。
上記のコマンドは、メモリに保持されている履歴リストをクリアしますが、.bash_history
からエントリを削除しません。 ディスク上のファイル。ファイルをクリアするには、履歴リストをファイルに書き込む必要があります:
history -c
history -w
履歴動作の変更#
Bash履歴の動作は、いくつかの異なる環境変数を使用して定義できます。履歴の動作を変更するときは、~/.bashrc
で変数を設定します または、ユーザーがログインしたときに読み込まれるその他の構成ファイル。
デフォルトでは、Bashはコマンド履歴リストに500行を保持します。 HISTSIZE
変数を使用すると、この値を変更できます。 10000に設定するには、次の行を.bashrc
に追加します。 ファイル:
HISTSIZE=10000
HISTCONTROL
変数は、コマンドが履歴リストにどのように保存されるかを定義する、コロンで区切られた値のリストを受け入れます。
-
ignorespace
-スペースで始まるコマンドは履歴リストに保存されません。 ignoredups
-重複するコマンドは保存されません。ignoreboth
-は省略形で、ignorespace
の両方を含みます およびignoredups
。
HISTCONTROL=ignoreboth
HISTTIMEFORMAT
の場合 変数が設定されると、Bashは各行のコマンドの実行のタイムスタンプを付加します。
たとえば、次のように設定した場合:
HISTTIMEFORMAT="%F %T: "
履歴は次の形式で表示されます:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
結論#
history
commandは、以前に実行されたコマンドのリストを表示します。たとえば、履歴を使用して、以前に使用した覚えていない長いコマンドを表示できます。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。