この!find
コマンドを使用すると、ユーザーはfind
すべてのパラメーターを使用して以前に実行したコマンドを実行できます。
内部的にはどのように機能し、この動作は正確にどこにプログラムされていますか?
ベストアンサー1
コマンド自体とは何の関係もなく、find
履歴拡張と呼ばれるシェルの機能です。シェルが履歴拡張をサポートしている場合は、過去に入力したコマンドを参照してこれを使用していくつかの操作を実行できます。
たとえば、Bashでは、あなたのアクションはイベントインジケータのコマンド履歴を参照します。 ~からバッシュマニュアル:
イベントインジケータは、履歴リストのコマンドラインエントリへの参照です。参照が絶対的でない場合、イベントは履歴リストの現在の場所に基づいています。
!
後にスペース、タブ、行末、
=
または(
(extglob
組み込みコマンドを使用してシェルオプションが有効になっている場合shopt
)がない場合は、履歴の交換を開始します。
!string
文字列で始まる履歴リストの現在位置より前の最新コマンドを参照します。
実際の内部コンテンツはソースコードを読み取ることができます。get_history_event
バッシュ4.3から始まります。