Bashには豊かな歴史があります。つまり、これはさらに古い祖先を持つ古いシェル(Bourneシェル)ですが、優れた履歴
もあります。 機能の数に基づいて、他のすべてのシェル履歴インターフェイスを超えるコマンド。 history
のBashバージョン 逆検索、クイックリコール、履歴の書き換えなどが可能です。
履歴
コマンドは他の多くのコマンドとは異なります。 / usr / bin
のような一般的なシステムレベルの場所に配置された実行可能ファイルであるコマンドに慣れているかもしれません。 、 / usr / local / bin
、または〜/ bin
。組み込みの履歴
コマンドがPATH
にありません 物理的な場所はありません:
$ which history
which: no history in [PATH]
代わりに、 history
はシェル自体の組み込み関数です:
$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]
Display or manipulate the history list.
[...]
そのため、各シェルの履歴関数は一意であるため、Bashで使用するものはTcsh、Fish、またはDashで機能しない場合があり、それらで使用するものはBashで機能しない場合があります。場合によっては、Bashで何ができるかを知っていると、他のシェルのユーザーがBashの動作を複製するための興味深いハックを作成するようになり、存在を知らなかったBash機能のロックが解除される可能性があります。
history
の最も基本的で頻繁な使用 コマンドは、シェルセッションの履歴を表示することです:
$ echo "hello"
hello
$ echo "world"
world
$ history
1 echo "hello"
2 echo "world"
3 history
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
イベント指定者は、イベントごとに履歴を検索します。 イベント このコンテキストでは、履歴に記録されたコマンドであり、改行文字で示されます。つまり、参照用のインデックス番号でマークされた1行です。
イベント指定子は、ほとんどの場合、感嘆符から始まります。感嘆符は、 bangとも呼ばれます。 (!コード> 。
履歴からコマンドを再実行するには、感嘆符の直後(スペースなし)に必要なコマンドのインデックス番号を使用します。たとえば、1行目にコマンド echo "hello"
が含まれているとします。 、そしてもう一度実行したい:
$ !1
echo "hello"
hello
履歴内の現在の位置から負の数の行を提供することにより、相対位置を使用できます。たとえば、履歴の3つのエントリに戻るには:
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo
1行前に戻る場合は、省略形の !!
を使用できます。 !-1
の代わりに 。これは、キーストローク全体の節約になります!
$ echo "foo"
$ !!
echo "foo"
foo
逆に、実行するコマンドのエントリから特定の文字列を検索することもできます。コマンドを検索するには開始 特定の文字列を使用する場合は、感嘆符の直後(スペースなし)に検索する文字列を使用します。
$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo
(開始時だけでなく)任意の位置に文字列を含むコマンドを検索することもできます。これを行うには、!
を使用します 加えて、通常どおり、検索している文字列を使用しますが、文字列の両端を疑問符で囲みます。文字列の直後に改行文字が続くことがわかっている場合は、末尾の疑問符を省略できます(つまり、戻るを押す前に最後に入力したものです。 ):
$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo
行の先頭で文字列を検索するのと同様に、文字列を検索して新しい文字列に置き換えることができます。コマンドを変更します。
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo
Bashでは、historyコマンドはここで説明されている以上の機能を備えていますが、これは使用に慣れるのに良いスタートです。 単に参照として扱うのではなく、あなたの歴史。 history
を使用する 頻繁にコマンドを実行し、コマンドを入力せずにできることを確認してください。驚かれるかもしれません!