エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する

      2020/06/05

Linuxのコマンドの履歴からコマンドを実行する方法

 

bashのコマンドラインの実行履歴は「history」コマンドで確認

 
Linuxの bashのコマンドラインでコマンドを実行する場合、過去に入力したコマンドをもう一度実行したいなぁ、と思うことも少なくないでしょう。
 
そんなとき、便利なコマンドが「history」です。
 
「history」コマンドは、実行したコマンドの履歴を見ることができるコマンドです。
 
 

「history」コマンドでコマンド履歴を表示

 
「history」コマンドの使い方は簡単です。
 

 
上記のように、「history」と入力するだけです。
そうすると、過去に実行したコマンドの履歴を表示します。
 
表示される履歴のデフォルトの数は 1000個です。
(この数値の設定方法は後述します。)
 
 
ちなみに、上記の履歴は「Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説「「Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など」の記事で書いていますが、Linuxのシェルで変数を扱う方法についての実験をしていたためにその履歴が残っていました。
 
 

historyの履歴からコマンドを実行する場合は「!」+履歴番号

 
履歴の中から再度実行したいコマンドがある場合は、「!(エクスクラメーションマーク)」に履歴の番号を組み合わせて入力をします。
 

 
「!9」と入力することで、履歴の 9番目のコマンド「echo $HENSU1」を実行し、その結果を表示します。
 
 

「!!」で直前のコマンドを再実行

 

 
「!!」を入力すると、直前に実行したコマンドを再実行します。
 
 

「!文字列」で履歴を検索して再実行

 

 
「!」+「文字列」を入力すると文字列が合致する履歴のコマンドを実行します。
 
例えば、上記のように「!echo」を入力すると、「echo」に合致するコマンドを実行します。
入力する文字列「echo」はコマンド全体である必要はなく、「echo」の一部である「ec」でも「ec」が合致する履歴からコマンドを実行します。
 
また、履歴に候補が複数ある場合は、一番最後に実行したコマンドを実行します。
 
ただし、実行するコマンドを事前に確認できませんので、認識しているコマンドと違うコマンドが実行される可能性もあるため、使いどころが難しいと感じます。
 
 

「!?文字列」で履歴を検索して再実行

 

 
前項の「!文字列」の「文字列」は「コマンド」を検索する記述方式です。
ですが、「!?」を使うとコマンドだけではなく、パラメーターを含めた文字列から履歴から検索しますので、上記のように「HENSU1」のように変数名で検索することもできます。
 
 

history機能も便利だが「↑」「↓」で簡易的にコマンドを再実行する方法も

 
history機能を使うと 1000件も履歴を確認することができますので便利ですが、2つ、3つ前に実行したコマンドを再実行したい、と言う場合は、上矢印キー「↑」や、下矢印キー「↓」を押すことで、一つ前、一つ後のコマンドを表示させることができます。
複数回押すことで、キーを押した回数分さかのぼることができます。
 
表示されたコマンドを実行したい場合は、Enterを押します。
 
また、「↑」は「Ctrl+P」、「↓」は「Ctrl+N」でも同様の動きをします。
 
 

historyの履歴は「.bash_history」に保存してある

 
「history」コマンドを実行したときに表示されるコマンドの履歴ですが、ユーザのホームディレクトリ(「/home/admin/」など)にある「.bash_history」ファイルに保存されています。
 
 

historyの履歴ファイルは環境変数「HISTFILE」に保存してある

 
historyの履歴ファイル「.bash_history」は、デフォルトの設定ですが、この設定は環境変数「HISTFILE」に保存されています。
 
環境変数「HISTFILE」を変更することで、コマンドの履歴ファイルを変更することができます。
 
環境変数の変更方法は、下記の記事を参考にしてください。
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など
 
 

historyの履歴数は環境変数「HISTSIZE」「HISTFILESIZE」に保存してある

 
「history」コマンドでたどれるコマンドの履歴は、デフォルトでは 1000です。
この履歴の数が保存されている環境変数は「HISTSIZE」「HISTFILESIZE」です。
 
環境変数「HISTSIZE」「HISTFILESIZE」を変更することで保存されるコマンドの履歴数を変更することができます。
 
 

全ユーザの「history」履歴数は「/etc/profile」の設定で管理されている

 
historyの履歴数は環境変数「HISTSIZE」「HISTFILESIZE」に保存されていますが、この環境変数の設定は「/etc/profile」に記述されています。
 

 
「/etc/profile」に上記の記述がありますので、この数値を変更することで「HISTSIZE」の設定値を変更することができます。

 - Linuxコマンド

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man
Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man

Linuxのコマンドの実行ファイルやマニュアルの情報を確認するコマンドwhich、whereis、whatis、apropos、manの機能と使い方、似たところと違うところの紹介。

Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare

Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。

Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする

Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。

Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する

Linuxのhead、tailコマンドはファイルの先頭の一部、もしくは、末行の一部を表示するコマンド。行数や文字数で指定をする。tailはログを監視するためのオプションがある。

Linuxのnlは行番号を付与してファイルの内容を表示するコマンド
Linuxのnlは行番号を付与してファイルの内容を表示するコマンド

Linuxでファイルを表示する際に行番号を付与するにはcatコマンドにnオプションを使うことでも可能。しかし、行番号を付与する専門のnlコマンドがある。ここではその使い方を詳細に解説。

Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法

Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。

Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドは指定したサイズにファイルを分割する

Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。

Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説

Linuxにtac、revというコマンドがある。catの逆の処理なのだが、tacは最終行から逆に表示し、revは行末の文字から逆に表示をすることを解説しつつその使い方について詳しく解説をする。

Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法

作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。

makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新

Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。