Bash履歴コマンドをうまく活用する

みなさん、こんにちは、Liang Xuです

historyコマンド履歴を表示するには通常コマンドを使用する必要があると思いますが、実際にはhistoryコマンドにはこの機能だけでなく、history多くの便利な機能があります。特にhistoryコマンドのBashバージョンは、historyマルチコマンドが提供する他のLinuxシェルよりも機能を提供します。

バッシュには長い歴史があり、古代のシェルがあり、古いシェルにはボーンシェル(sh)もあります。したがって、Bashのhistoryコマンドはすべてのhistory機能が豊富なLinuxシェルコマンドです。historyコマンドのbashバージョンは、逆検索、クイックコールをサポートするだけでなく、履歴の書き換えなどもサポートします。

history上記のBash コマンドの機能をうまく活用すると作業効率が向上するので、Liang XuにBash historyコマンドとその一般的な機能を1つずつ説明してもらいます。

履歴は組み込みコマンドです

historyこのコマンドは、他の多くのコマンドとは異なります。コマンドは/usr/bin/usr/local/binやのように実行可能ファイルとして一般的なシステムレベルの場所に配置することに慣れている場合があります〜/ binただし、組み込みhistoryコマンドはPATH、パスに格納されている環境変数には含まれていません

実際、historyコマンドは物理的な場所には保存されません。

$ 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.
[...]

以来、historyそのシェルが機能を内蔵するので、シェルの各history機能は独特です。そのため、Bashで使用できる機能がTcsh、Fish、Dashで使用できない場合や、Tcsh、Fish、Dashで使用できる機能がBashで使用できない場合があります。

Bashコマンドの履歴を表示する

history コマンドの最も基本的で最も頻繁な使用は、シェルセッションのコマンド履歴を表示することです。

$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world"
  3  history

イベントプロンプト

イベントプロンプト(!)は、イベントごとに履歴レコードを検索します。ここでのイベントとは、履歴レコードに記録された各コマンドを指します。つまり、コマンドの行であり、参照用にデジタルインデックスでマークされています。

履歴内のコマンドを再実行するには、次のコマンドを使用します!実行するコマンドの前に直接(スペースなしで)インデックス番号を追加します。たとえば、履歴の最初の命令がecho helloであり、それを再実行するとします。

$ !1
echo "hello"
hello

履歴の現在位置から始まる負の線を提供することにより、相対位置を使用することもできます。たとえば、履歴の最後から3番目のコマンドを返すには:

$ echo "alvin"
alvin
$ echo "hello"
hello
$ echo "world"
world
$ !-3
echo "alvin"
alvin

前のコマンドに戻るだけの場合は、!-1の代わりに省略形!!を使用できます。これにより、キーを押す時間全体が節約されます。

$ echo "alvin"
alvin
$ !!
echo "alvin"
alvin

文字列検索

特定の文字列で履歴レコードのコマンドを検索して実行することもできます。

特定の文字列で始まるコマンドを検索する場合は、次のコマンドを使用します!検索する文字列を直接(スペースなしで)追加します。

$ echo "alvin"
alvin
$ true
$ false
$ !echo
echo "alvin"
alvin

また、特定の文字列を含むコマンドをどこでも検索できます。これを行うには、使用する必要があるだけです!囲まれた特定の文字列を直接追加しますか?次のように、フロントエンドとバックエンドで:

$ echo "alvin"
alvin
$ true
$ false
$ !?alvin?
echo "alvin"
alvin

検索したい文字列がコマンドの最後にあることがわかっている場合は、その後の文字列を省略できますか?、このような:

$ echo alvin
alvin
$ !?alvin
echo alvin
alvin

履歴レコードにターゲット文字列を含むコマンドが複数ある場合、修飾されたコマンドの最後のコマンドのみが実行されることに注意してください。

$ echo "hello world"
hello world
$ echo "hello alvin"
hello alvin
$ !?hello?
echo "hello alvin"
hello alvin

文字列の置換

特定の文字列を検索し、それを新しい文字列に置き換えてコマンドを変更できます。

$ echo "hello"
hello
$ echo "world"
world
$ ^hello^alvin
echo "alvin"
alvin

ただし、ターゲット文字列の最初の出現のみを置き換えることができます。ターゲット文字列がコマンドに2回出現する場合、次のように最初の出現のみが置き換えられます。

$ echo "hello hello"
hello hello
$ ^hello^alvin
echo "alvin hello"
alvin hello

文字列検索と同様に、履歴にターゲット文字列を含むコマンドが複数ある場合、最後のコマンドのみが置き換えられて実行されます。

$ echo "hello world"
hello world
$ echo "hello"
hello
$ ^hello^alvin
echo "alvin"
alvin

historyコマンドを最大限に活用する

実際、Bash history関数はこの記事で述べたよりもはるかに多くのコマンドを実行しますが、履歴を表示historyするhistoryためだけに使用するのではなく、適切な開始コマンドを使用することに慣れていますhistoryコマンドを常に使用して、history多くのことを完了するために特定の指示なしでコマンドのみを使用しているかどうかを確認してください

最後に、この記事があなたの仕事に役立つことを願っています。historyさらに質問注文する場合、またはhistoryいくつかのより便利な機能のコマンドを知っている場合は、メッセージを残してお伝えください。

最後に、最近、多くの友人からLinuxラーニングロードマップの提供を求められたため、私の経験に基づいて、1か月間余暇を過ごし、電子書籍を作成しました。面接であろうと自己改善であろうと、私はそれがあなたを助けると信じています!ディレクトリは次のとおりです。

みんなに無料でプレゼントして、いいね!

電子ブック| Linux開発ラーニングロードマップ

この電子書籍をより完璧にするために、何人かの友人が私に加わってくれることを願っています。

利得?古いアイアンに3ストライクのコンボを付けて、より多くの人がこの記事を読めるようにしてほしい

推奨読書:

おすすめ

転載: blog.csdn.net/yychuyu/article/details/108369245