HOWTO · Bash

バッシュ履歴サイズ

この記事は、Bash の歴史とそのサイズと操作を理解するための包括的なガイドです。

このチュートリアルでは、Bash の履歴、そのサイズ、および履歴のサイズとハンドルの制限を変更する方法について学習します。 トピックに移る前に、まず Bash シェルで履歴が必要な理由と、それを取得する方法を発見しましょう。

ほとんどの開発者、システム管理者、およびソフトウェア アプリケーション エンジニアは、Linux コマンド ラインで多くの時間を費やしています。 人間なので、タイプミスをします。

また、多くのコマンドには、パラメーター/オプションのリストがあります (それぞれの順序で)。 したがって、それらを正確な順序で覚えることは困難です。

したがって、履歴は、Bash シェルで入力した前のコマンドを思い出すのに役立ちます。

Bash 履歴の概要

履歴に関しては、Bash はコマンド、ファイル、およびショートカットを追跡します。 ユーザーは history ユーティリティを使用してコマンド ラインに入力できます。

history ユーティリティは有益な情報を提供します。 現在のシステムまたはアカウントの変更がどのように発生したかを追跡するのに役立ちます。

Bash には、Bash 履歴に関連する 2つの組み込みコマンドがあります。

  1. history - このコマンドは、Bash 履歴から以前に使用したコマンドのリストを提供し、Bash 履歴を変更することもできます
  2. fc - このコマンドは、history コマンドのすべてのタスクを実行し、コマンドの実行を許可します。

Bash の履歴に関するすべての情報は、Bash ユーザーの場合は ~/.bash_history ファイルに保存されますが、他のユーザーの場合は .history だけの場合があります。

history コマンドから始めて、それがどのように機能するかを見てみましょう。

Bash history コマンドを使用して Bash 履歴を表示する

履歴全体を表示したい場合は、シェルで history コマンドを記述できます。 履歴ファイルから履歴全体が一覧表示されます。

$ history

出力は次のようになります。

	1  ping google.com
    2  sudo apt update
    3  ping google.com
    4  java --version
    5  sudo apt install openjdk-17-jre-headless
    6  sudo apt-get install gcc
    7  sudo apt-get install gpp
    8  sudo apt-get install g++
    9  sudo apt-get install mingw-w64
   10  sudo apt-get install codeblocks
   11  codeblocks
   12  sudo apt update
   13  sudo apt update mu-editor
   14  sudo apt install mu-editor
   15  sudo apt update
   16  python3 --version
   17  clear
   18  snap find pycharm
   19  sudo snap install pycharm-professional --classic
   20  clear
   21  cd desktop/python
   22  cd desktop/python task5.py
	...

他にも役立つ Bash の history コマンドがありますが、ここでは説明しませんが、この Web サイト から読むことができます。

Linux の Bash の fc コマンドは、fix コマンドとしても知られています。 主に、複数行のコマンドを変更するために使用されます。

fc コマンドのパラメーター -l は、以前のコマンド履歴を表示します。

コマンドとその出力の次の例を見てみましょう。

$ fc -l
302	 284 ./a.out
303	 285 gcc execve1.c -o e1
304	 286 gcc execve2.c
305	 287 ./a.out
306	 288 $ sudo snap install whatsdesk
307	 289 sudo snap install whatsdesk
308	 290 cd ..
309	 291 cd CodeForces/
310	 292 pwd
311	 293 history
312	 294 1  ping google.com
313	 295 ls
314	 296 wc Test.c
315	 297 fc -l
316	 298 ls
317	 clear

バッシュ履歴サイズ

Bash履歴ファイルについて話すと、データもあると思います。 Bash履歴ファイルのデフォルトは500から1000です。

履歴ファイルのエントリの最大数です。 ただし、さまざまなコマンドを使用して必要な範囲に履歴サイズを構成できるため、永続的ではありません。

それらを調べてみましょう。

Bash 履歴の構成

Bash コマンド履歴を構成するには、~/.bashrc ファイルを変更する必要があります。 ~/.bashrc ファイルは、次の nano コマンドを使用して更新できます。

$ nano ~/.bashrc

変更したら、Ctrl+O を押してから Ctrl+X を押して保存し、nano を閉じます。 編集者。 次に、次のコマンドを実行して Bash 設定を再読み込みします。

$ source ~/.bashrc

また

$ . ~/.bashrc

どちらのコマンドも、Bash 履歴ファイルを変更します。

Bash 履歴ファイルのサイズを変更する

変数 HISTSIZEHISTFILESIZE は、Bash の履歴に関連しています。 変数 HISTSIZE にはキャッシュされる Bash コマンドの最大数が含まれ、変数 HISTFILESIZE には履歴ファイルに保存されているトップ コマンドの数が含まれます。

デフォルトでは、履歴ファイルに最大 500 個のコマンドを保持できます。

これらの変数を出力することで、これらの値を表示できます。 出力は、マシン/構成によって異なる場合があります。 1つのサンプル実行と関連する結果を次に示します。

$ echo $HISTSIZE
$ echo $HISTFILESIZE
1000
2000

これらの値を構成するには、次の行をファイル ~/.bashrc に追加します。

$ HISTSIZE = 6000
$ HITFILESIZE = 6000

繰り返しますが、これらの変数を出力して値を確認できます。

$ echo $HISTSIZE
$ echo $HISTFILESIZE
6000
6000

無制限の Bash 履歴ファイル サイズを設定する

前のセクションでは、Bash で履歴サイズを変更する方法について説明しました。 ただし、無制限のサイズに設定できると便利な場合があります。 どうやってそれをしますか? 探検しよう!

次の手順を使用して、Bash 履歴サイズまたはファイル サイズの合計を設定することもできます。

  • Bash 履歴ファイルを変更します。 StackOverFlow で読むことができるように、場合によっては切り捨てられるため、Bash 履歴ファイルにはいくつかの問題があります。

    HISTFILE 環境変数を別のディレクトリを使用するように変更することで、この問題を解決できます。

    export HITSFILE= ~/.history
    

    HISTFILE は、履歴ファイルのパス/場所を参照します (デフォルトは ~/.bash_history です)。

  • 履歴サイズを増やします。 HISTFILESIZE および HISTSIZE 変数を空の文字列に設定して、Bash 履歴のサイズを無制限にします。
    $ export HITSFILESIZE=
    $ export HITSIZE=
    
  • 既存の履歴をコピーします。 新しい履歴ファイルを使用していますが、以前のファイル コマンドを失うべきではないため、古いファイルの内容を新しいファイルにコピーします。
    $ cp ~/.bash_history ~/.history
    

Bash の履歴を制御する

出力ノイズやセキュリティ上の理由を避けるために、Bash 履歴からコマンドを除外できます。 これは、履歴管理コマンド HISTCONTROL を使用して行うことができます。このコマンドは、保存される履歴を制御します。

これを指定して、~/.bashrc ファイル内の重複するエントリや先頭に空白があるエントリを無視することができます。

  1. ignorespace – これにより、スペース履歴リストで始まるコマンドが削除されます。
  2. ignoredups – これにより重複するコマンドが排除されます。
  3. ignorebothignoredupsignorespace の両方を有効にします。
  4. erasedups- これにより、リスト全体から重複が削除されます。
$ export HISTCONTROL=ignorespace:ignoredups

変数 HISTIGNORE を使用してコマンドを無視するように制御することもできます。 これは、履歴から除外するすべてのコマンドを指定できる、コロンで区切られたパターンのリストです。

たとえば、履歴リストで基本的で最も頻繁に使用されるコマンド (lspwd など) を無視する場合は、~/.bashrc ファイルに次の行を記述します。

$ export HISTIGNORE="ls:pwd:"

Linux Bash コマンド履歴を使用すると、古いコマンドを繰り返すよりも多くのことができます。

ログオフする前に履歴を HISTFILE に保存する

コマンドは、ユーザーがログオフした後にのみ Bash ファイルに書き込まれます。 ただし、history コマンドで書き込みオプションを使用して、ログオフする前に履歴をファイルに書き込むことができます。

構文は次のとおりです。

$ history -w

このコマンドは、現在のすべてのセッション コマンド履歴を HISTFILE に書き込みます。 この後、コマンド スクリプトは今後使用できるようになります。

この記事では、最後に、Bash の履歴、履歴のサイズ、ファイル サイズ、または Bash の履歴とそのサイズを制限付きまたは無制限の範囲に変更する方法について説明しました。