Shell 在bash中做什么!(感叹号)在命令之前是什么意思?

Shell 在bash中做什么!(感叹号)在命令之前是什么意思?,shell,command-line-interface,Shell,Command Line Interface,我只是把命令发错了 git status 与 控制台显示它已开始将上次克隆的存储库克隆到文件夹状态 我的问题是,这个命令是什么意思?它有什么用途吗?在bash中,如果您键入后跟一个命令名,它将用历史记录中以该名称开头的最后一个命令替换它 所以在你的情况下!git被替换为git clone somerepo,因此整行代码被翻译为git clone somerepo status请阅读:这里的问题不是git命令,而是开始时的感叹号,我知道这是个愚蠢的问题,但我想知道发生了什么。。。如果我不知何故损

我只是把命令发错了

git status

控制台显示它已开始将上次克隆的存储库克隆到文件夹状态


我的问题是,这个命令是什么意思?它有什么用途吗?

在bash中,如果您键入
后跟一个命令名,它将用历史记录中以该名称开头的最后一个命令替换它


所以在你的情况下
!git
被替换为
git clone somerepo
,因此整行代码被翻译为
git clone somerepo status

请阅读:这里的问题不是git命令,而是开始时的感叹号,我知道这是个愚蠢的问题,但我想知道发生了什么。。。如果我不知何故损坏了我的克隆库,你能不能也链接到一个包含这种语法的库?这是一个奇怪的特性。但是在什么情况下它有用呢?我通常只需按下向上的箭头就可以找到以前执行的命令,在脚本中,我可能会认为写完整的表达式几乎总是更好的,因为它更清楚地发生了什么。而且,它感觉像是在使用
这种方式有点像赌博,因为它可能会意外地执行另一个命令,而不是您希望执行的命令,除非您对您执行的最新命令没有完全的记忆(至少我不相信自己的内存)。关于有用性,例如,您确实
grep someString foo.txt
还不知道您得到了什么结果。您的出现次数较少,并且想要了解上下文,所以您需要执行`
!grep-A 10-B 10
在比赛前后打印10行。
!git status