Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
2020/06/05
Linuxのコマンドの履歴からコマンドを実行する方法
bashのコマンドラインの実行履歴は「history」コマンドで確認
Linuxの bashのコマンドラインでコマンドを実行する場合、過去に入力したコマンドをもう一度実行したいなぁ、と思うことも少なくないでしょう。
そんなとき、便利なコマンドが「history」です。
「history」コマンドは、実行したコマンドの履歴を見ることができるコマンドです。
「history」コマンドでコマンド履歴を表示
「history」コマンドの使い方は簡単です。
1 2 3 4 5 6 7 8 9 10 11 |
$ history 1 echo $HENSU1 2 HENSU1=$HENSU1" "xyz 3 echo $HENSU1 4 HENSU1=$HENSU1"_"xyz 5 echo $HENSU1 6 HENSU1=$HENSU1";"xyz 7 echo $HENSU1 8 HENSU1=$HENSU1""xyz 9 echo $HENSU1 10 history |
上記のように、「history」と入力するだけです。
そうすると、過去に実行したコマンドの履歴を表示します。
表示される履歴のデフォルトの数は 1000個です。
(この数値の設定方法は後述します。)
ちなみに、上記の履歴は「Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説「「Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など」の記事で書いていますが、Linuxのシェルで変数を扱う方法についての実験をしていたためにその履歴が残っていました。
historyの履歴からコマンドを実行する場合は「!」+履歴番号
履歴の中から再度実行したいコマンドがある場合は、「!(エクスクラメーションマーク)」に履歴の番号を組み合わせて入力をします。
1 2 3 |
$ !9 echo $HENSU1 abcxyz xyz_xyz;xyzxyz |
「!9」と入力することで、履歴の 9番目のコマンド「echo $HENSU1
」を実行し、その結果を表示します。
「!!」で直前のコマンドを再実行
1 2 3 |
$ !! echo $HENSU1 abcxyz xyz_xyz;xyzxyz |
「!!」を入力すると、直前に実行したコマンドを再実行します。
「!文字列」で履歴を検索して再実行
1 2 3 |
$ !echo echo $HENSU1 abcxyz xyz_xyz;xyzxyz |
「!」+「文字列」を入力すると文字列が合致する履歴のコマンドを実行します。
例えば、上記のように「!echo」を入力すると、「echo」に合致するコマンドを実行します。
入力する文字列「echo」はコマンド全体である必要はなく、「echo」の一部である「ec」でも「ec」が合致する履歴からコマンドを実行します。
また、履歴に候補が複数ある場合は、一番最後に実行したコマンドを実行します。
ただし、実行するコマンドを事前に確認できませんので、認識しているコマンドと違うコマンドが実行される可能性もあるため、使いどころが難しいと感じます。
「!?文字列」で履歴を検索して再実行
1 2 3 |
$ !?HENSU1 echo $HENSU1 abcxyz xyz_xyz;xyzxyz |
前項の「!文字列」の「文字列」は「コマンド」を検索する記述方式です。
ですが、「!?」を使うとコマンドだけではなく、パラメーターを含めた文字列から履歴から検索しますので、上記のように「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」に記述されています。
1 |
HISTSIZE=1000 |
「/etc/profile」に上記の記述がありますので、この数値を変更することで「HISTSIZE」の設定値を変更することができます。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。
-
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。
-
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。
-
Linuxのheadコマンドは先頭行から、tailコマンドは最終行から指定した行を表示する
Linuxのhead、tailコマンドはファイルの先頭の一部、もしくは、末行の一部を表示するコマンド。行数や文字数で指定をする。tailはログを監視するためのオプションがある。
-
cat、less、head、tail、split、sedなどLinuxでファイル、文字列を操作するコマンド
Linuxでファイル、テキストを操作するコマンドのまとめ。cat、less、head、tail、split、tr、sedなど、ファイルを表示、置換、連結、分割などの各コマンドの使い方の紹介と詳細ページの紹介。
-
Linuxのタイムスタンプはmtime、ctime、atimeの3種類。touchコマンドで更新する方法
Linuxのファイルのタイムスタンプにはmtime、ctime、atimeの3種類がある。その違いを詳細に解説しつつ、lsで表示するオプション、touchで更新するオプションを解説。
-
Linux findコマンドを使ってn日前のファイルを削除する 3つの記述方法
作成からn日経ったファイルを削除したい、そんなときにはfindコマンドを使う。コマンドの記述の方法は3種類あり、それぞれを解説。書き易さもあるがスピードに大きく差がある記述方法もある。
-
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など
Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。
-
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。
-
UNIX・Linuxの sedコマンドで特定の文字列を置換する方法
UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。