Linuxコマンドラインでツールやスクリプトを実行する作業をしている場合は、毎日実行するコマンドがたくさんあると思います。コマンドラインを初めて使用する場合は、履歴と呼ばれるツールが存在することを知っておく必要があります。 -これにより、以前に実行したコマンドのリストが表示されます。
このチュートリアルでは、わかりやすい例を使用して、historyコマンドの基本について説明します。ただし、その前に、ここでのすべての例がUbuntu16.04LTSマシンでテストされていることを言及する価値があります。
Linux履歴コマンド
コマンドライン履歴を効果的に活用する方法を知っていれば、日常的に多くの時間を節約できます。以下は、履歴コマンドをどのように活用できるかについての良いアイデアを提供するQ&Aスタイルの例です。
Q1。履歴コマンドはどのように機能しますか?
基本的な使用法は簡単です。「history」コマンドを実行するだけです。
history
したがって、以前に実行したコマンドが出力に表示されていることがわかります。 'more'コマンドを使用して、出力表示が最初のページで一時停止していることを確認したことに注意してください('history'の完全な出力は通常非常に長いです)。
Q2。履歴を日付と時刻も表示する方法は?
historyコマンドで各コマンドの実行日時を表示する場合は、次の方法でHISTTIMEFORMAT変数をエクスポートすることでこれを行うことができます。
export HISTTIMEFORMAT="%F %T: "
それでおしまい。これで、「history」コマンドを実行すると、出力に日付と時刻の情報が表示されます。
すべてのコマンドで日付と時刻が同じであることがわかる場合は、次の説明でわかりやすくなります。
If you set the HISTTIMEFORMAT in bash your new entries get stored in the history file with a
timestamp, older commands that don't have a timestamp (those before you ever set HISTTIMEFORMAT
will display one and the same date-time-stamp (I assume the one from the first entry found with a
real timestamp).
This problem should solve itself after your complete history has been updated in a few days.
You can look in ~/.bash_history to see what is the first line that has a date-time-stamp.
Those are lines starting with a # followed by a (currently) 10 digit number.
Q3。履歴にコマンドの記録を停止させる方法は?
システムにコマンド履歴を保存させたくない状況が発生した場合は、HISTSIZE変数を使用してこれを行うことができます。ゼロを値としてエクスポートするだけで、問題ありません。
次の例を参照してください:
ご覧のとおり、「history」コマンドを実行しても結果は生成されませんでした。
HISTFILESIZE変数もあることに注意してください。 2つの違いは次のとおりです。
HISTSIZE is the number of lines or commands that are stored in memory in a history list while your
bash session is ongoing.
HISTFILESIZE is the number of lines or commands that (a) are allowed in the history file at startup
time of a session, and (b) are stored in the history file at the end of your bash session for use in
future sessions.
Q4。履歴に単一のコマンドを記録しないようにするにはどうすればよいですか?
これは、HISTCONTROL変数を「ignorespace」に設定することで実行できます。これは、次の方法で実行できます。
export HISTCONTROL=ignorespace
これで、履歴に記録したくないコマンドを実行するときは、先頭にスペースを付けて実行するだけです。
Q5。クイック履歴検索を実行する方法は?
もちろん、grepコマンドを使用して、historyコマンドによって生成された出力で特定のキーワードまたはコマンドを検索できます。ただし、はるかに高速な方法であるreverse-i-searchも存在します。
非常に簡単です。コマンドラインでCTRL+Rを押すだけで、プロンプトが次のように変わります。
次に、検索するキーワードを入力すると、右側に履歴から一致する提案が表示されます。たとえば、「man」(引用符なし)と入力すると、最初に得られた結果は「manapropos」でした。
これが探しているものでない場合は、もう一度CTRL+Rを押すことで次の一致する結果を得ることができます。したがって、私の場合、次に得られた結果は「manfindsearch」でした。
この方法で検索を続けることができます。目的の結果が得られたら、右矢印キーを押すだけで、プロンプトにコマンド全体が表示されます。
これで、このコマンドを実行したり、好きなように使用したりできます。
Q6。前のコマンドを実行する方法は?
最後に実行されたコマンドを実行する簡単な方法は2つあります。CTRL+Pを押すか、次のコマンドを実行します。
!!
信じない(特に2番目の方法)?試してみてください。
最後から2番目のコマンドをすばやく実行する必要がある場合は、次の方法で実行できます。
!-1
などなど。
Q7。履歴に出力の重複エントリを無視させるにはどうすればよいですか?
これは、 HISTCONTROLを設定することで実行できます。 'ignoreboth'および'erasedups'への変数。次の方法で行うことができます:
echo HISTCONTROL=ignoreboth:erasedups
これで、historyコマンドを実行すると、出力に重複が含まれなくなります。
Q8。履歴をクリアする方法は?
新たに開始できるように既存の履歴をクリアする場合は、-cコマンドラインオプションを使用します。
history -c
歴史はあなたが知っておくべき非常に重要なコマンドであることにあなたはおそらく同意するでしょう。このチュートリアルでは、このツールを最大限に活用するためのいくつかの重要なヒント/コツについて説明しました。これらを練習したら、ツールのマニュアルページにアクセスして詳細を確認してください。