该!find
命令允许用户执行先前执行的命令find
及其所有参数。
它的内部是如何工作的,这种行为到底是在哪里编程的?
答案1
它与命令本身无关find
,它是 shell 的一个功能,称为历史扩展。如果您的 shell 支持历史扩展,您可以参考您过去输入的命令并用它执行一些操作。
例如,在 Bash 中,您的操作是指事件指示符的历史命令。来自bash手册:
事件指示符是对历史列表中命令行条目的引用。除非引用是绝对的,否则事件是相对于历史列表中的当前位置的。
!
启动历史记录替换,除非后面跟有空格、制表符、行尾
=
或(
(当extglob
使用内置命令启用 shell 选项时shopt
)。
!string
引用历史列表中以字符串开头的当前位置之前的最新命令。
对于真正的内部结构,您可以阅读源代码get_history_event
从 Bash 4.3 开始。