GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu16.04LTSサーバーのBashシェルで履歴機能を使用する

Bash(Bourne againシェル)は、ほとんどのUNIXライクなシステムで使用される一般的なシェルです。 BashはBrianFoxによってGNUProjectとして作成されています。 Bourneシェル、Cシェル、Kornシェルの機能が組み込まれています。 bashシェルを使用してコマンドラインで時間を費やすユーザーは、過去に実行されたコマンドを繰り返したいと思うことがよくあります。 Bashシェル履歴機能は、最近のコマンドを記憶し、後で再利用するのに役立ちます。したがって、再入力する時間を節約できます。始めましょう!

履歴の一覧表示

履歴の場合 引数を渡さずに使用されたコマンドは、対応する行番号で使用された最近のコマンドを表示します。

$ history 

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

最後に実行された「n」コマンドの一覧表示

「history」を使用すると、最後に実行された「n」コマンドを次のように取得できます。

$ history 7 

履歴から特定のコマンドを実行する

履歴から特定のコマンドを実行することが可能です。感嘆符に続いて履歴にリストされているコマンドの番号を使用すると、魔法が実行されます。たとえば、次のコマンドは、番号7(du –sh)のコマンドを次のように再実行します。

$ !7 

前のコマンドをもう一度実行します

多くの場合、コマンドを何度も実行する必要があります。以下のコマンドは、前に使用したコマンドを実行することでそのジョブを実行します。

$ !!
Or
$ !-1  

コマンドの検索

履歴によって生成された出力は、いくつかの方法で使用できます。たとえば、履歴出力を– more、tail、grepに渡して、目的の出力を取得できます。

コマンド履歴で「無料」を検索します。$history| grep free最後の4つのコマンドのみを表示するには:

$ history | tail -4 

moreコマンドを使用すると、ターミナルに一度に1ページずつ出力を表示できます。

$ history | more   

特定の単語で始まる前のコマンドを実行します

感嘆符の後にコマンドの特定の単語を使用すると、魔法がかかります!。ユーザーが「free–h」を実行したとします。 「!free」と入力すると、コマンド「free –h」が再実行されます。

履歴のクリア

以下のコマンドで履歴をクリアすることができます。$history-cこれにより、現在のユーザーセッションのbashシェルメモリ内のすべてのコマンドがクリアされます。

便利なエイリアス

エイリアスは、長くて複雑なコマンドに付けられた短い名前です。履歴コマンドの単純な1文字のエイリアス。

$ alias 'h=history' 

以下のエイリアス「ht」は、最新の10個のコマンドを表示します–

$ alias 'ht=history | tail' 

以下のエイリアス「hg」を使用すると、指定された文字列に一致するすべてのコマンドを表示できます–

$ alias 'hg=history | grep' 

これらのエイリアスを「〜/ .bashrc」ファイルに追加して、システムが起動するたびに永続化するようにします。

履歴構成設定

Bashシェル変数 説明
HISTFILE 履歴がコマンドを保存する物理ファイルの場所。 bashシェルのデフォルトは「〜/.bash_history」です。 「/dev/ null」を設定すると、履歴の記録が無効になります。
HISTFILESIZE 履歴ファイルに保存されるいくつかのコマンドを指します。
履歴サイズ 履歴リストのメモリに保存されているいくつかのコマンドを指します。値を0(ゼロ)に設定すると、履歴の記録が無効になります。
HISTIGNORE ある種のコマンドを保存しないことが必要な場合があります。この変数は、コロンで区切られたパターンのリストを取ります。たとえば、次の構成では、履歴機能がコマンドを記録しないようにします:ls、top、clear。

HISTIGNORE =” ls *:top:clear”
HISTTIMEFORMAT このHISTTIMEFORMAT変数を使用すると、タイムスタンプ付きの履歴を表示できます。

HISTTIMEFORMATを'%F%T'に設定すると、次の結果が得られます。これは、システム管理者にとって非常に便利なコマンドです。
HISTCONTROL HISTCONTROLは重複を無視するのに役立ちます。 HISTCONTROLは、erasedups、ignorespace、ignoredups、またはignorebothの値で設定できます。 (コロンで区切る)次の例を次に示します。HISTCONTROL=ignoredups:erasedups
HISTCONTROL =ignoreboth履歴エントリに次のような重複が含まれているとします(「top」と「ls–latr」が連続して繰り返されます)。HISTCONTROLが「ignoredups」に設定されている場合」の場合、履歴は次のように表示されます。

詳細設定

Bashはコマンドのリストを内部的にメモリに保持し、終了時に設定されたファイル(デフォルトは.bash_history)に書き込まれます。ユーザーがシェルを終了すると、最後の$HISTSIZE行が履歴リストから$HISTFILEに設定されたファイルにコピーされます。ユーザーが多数のbashセッションでログインしている場合、最後に終了したセッションのみが履歴を保存します。ユーザーセッションでコマンドを実行した直後にコマンド履歴を書き込む場合は、「。bashrc」ファイルに以下の設定ができます。

$ shopt -s histappend $ PROMPT_COMMAND =” history -a;履歴-c; history -r”“ shopt –s histappend”は、履歴を上書きする代わりに追加を有効にします。
“ history -a”は、メモリ内の履歴コマンドを〜/ .bash_history
“ history -c”に追加するために使用されます。メモリ内の履歴コマンドをクリアするために使用されます
「history-r」は、履歴コマンドを〜/ .bash_historyからメモリに読み取るために使用されます
履歴関連の構成設定を持つ一般的な「〜/.bashrc」ファイルは以下のように表示されます。#メモリに記録されるコマンドのサイズを制御します
HISTSIZE =2000#ファイルに保存されるコマンドのサイズを制御します
HISTFILESIZE =10000

#コマンドが書き込まれる物理ファイルの場所
HISTFILE =/ var / users / rjujare / .bash_history

#記録および表示目的のフォーマット:タイムスタンプを含める
HISTTIMEFORMAT =’%F%T‘

#lsのような一般的なコマンドを無視する
HISTIGNORE =” ls:id:uname:clear:top”

#重複するコマンドとスペースで始まるコマンドを無視する
HISTCONTROL =ignoreboth
#追加、履歴を上書きしない
shopt -s histappend
PROMPT_COMMAND =” history -a;履歴-c;履歴-r」

構成を保存する方法

設定を変更するには、お気に入りのエディタで〜/.bashrcファイルを開きます。変更が完了したら、ファイルを保存して終了します。変更効果を得るには、次のように「source」コマンドを使用してファイルをソースします。

$ source ~/.bashrc   

結論

Bashシェル 多くの便利な機能が付属しており、そのうちの1つは履歴です。これらの機能により、管理者と通常のユーザーの生産性も大幅に向上します。あなた自身の経験を歴史と共有することを忘れないでください!


Linux
  1. コマンドの出力をBashを使用して列ごとに分割しますか?

  2. bash で履歴の編集を無効にする方法

  3. 方法:無制限の Bash/シェル履歴?

  1. LinuxでBashの履歴をクリアする方法

  2. タイプアヘッドをBash履歴検索(ctrl-r)に適用するにはどうすればよいですか?

  3. bashシェルを使用してコマンドを複数回実行する方法は?

  1. Linuxの履歴コマンド(Bashの履歴)

  2. BashスクリプトでのLinuxスリープコマンドの使用

  3. Bash スクリプト:セッションをログに記録するための bash スクリプトからのスクリプト コマンドの使用