みなさん、こんにちは、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か月間余暇を過ごし、電子書籍を作成しました。面接であろうと自己改善であろうと、私はそれがあなたを助けると信じています!ディレクトリは次のとおりです。
みんなに無料でプレゼントして、いいね!
この電子書籍をより完璧にするために、何人かの友人が私に加わってくれることを願っています。
利得?古いアイアンに3ストライクのコンボを付けて、より多くの人がこの記事を読めるようにしてほしい
推奨読書: