Bashを実行しているLinuxターミナルには、最近行ったことを追跡するために使用できる組み込みの履歴があります。 Bashセッションの履歴を表示するには、組み込みコマンドhistory
を使用します :
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
history
コマンドは、ほとんどのコマンドのようにファイルシステム上の実行可能ファイルではなく、Bashの機能です。これは、type
を使用して確認できます コマンド:
$ type history
history is a shell builtin
シェル履歴の行の上限は、HISTSIZE
によって定義されます。 変数。この変数は.bashrc
で設定できます ファイル。次の例では、履歴を3,000行に設定します。その後、リストの一番下に配置された最新のコマンド用のスペースを確保するために、最も古い行が削除されます。
export HISTSIZE=3000
他にも履歴関連の変数があります。 HISTCONTROL
変数は、保存される履歴を制御します。これを.bashrc
に配置することで、Bashに空のスペースで始まるコマンドを強制的に除外させることができます。 ファイル:
export HISTCONTROL=$HISTCONTROL:ignorespace
これで、スペースで始まるコマンドを入力した場合、そのコマンドは履歴に記録されません:
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
重複するエントリを回避することもできます:
export HISTCONTROL=$HISTCONTROL:ignoredups
ここで、2つのコマンドを次々に入力すると、履歴に表示されるのは1つだけです。
$ ls
$ ls
$ ls
$ history
1 ls
2 history
これらの両方の無視が好きな場合は、ignoreboth
を使用できます。 :
export HISTCONTROL=$HISTCONTROL:ignoreboth
間違いを犯してシェルに機密性の高いものを入力したり、履歴をクリーンアップして、何かを正しく機能させるために行った手順をより正確に表現したい場合があります。 Bashの履歴からコマンドを削除する場合は、-d
を使用します 削除するアイテムの行番号を指定したオプション:
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
history
の追加を停止するには エントリには、space
を配置できます ignorespace
がある限り、コマンドの前に HISTCONTROL
で 環境変数:
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
-c
を使用して、セッション履歴全体をクリアできます。 オプション:
$ history -c
$ history
$
Bashの詳細
- バッシュチートシート
- Bashを使用したプログラミングの概要
- Bashスクリプトに関するシステム管理者ガイド
- 最新のBash記事
履歴を操作することは、特に目的を念頭に置いて履歴をキュレートする場合は、通常、思ったよりも危険性が低くなります。たとえば、複雑な問題を文書化する場合は、セッション履歴を使用してコマンドを記録するのが最適な場合がよくあります。これは、コマンドを履歴に挿入することで実行し、プロセスをテストするためです。多くの場合、何もせずに文書化すると、小さな手順を見落としたり、細かい部分を間違って書いたりすることになります。
必要に応じて履歴セッションを使用し、履歴に対する力を賢く行使してください。ハッピーヒストリーハッキング!