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