Shell感叹号命令

这个命令是做什么的?

!g++ 

对于历史命令:

 !12 

它运行历史命令#12,但g++或另一个:

 !cat filename 

请参阅Bash手册“事件指示符” :

!string

请参阅以string开头的历史记录列表中当前位置之前的最新命令。

这意味着!g++运行最后一个以g++开头的命令,调用GNU C ++编译器:

 $ g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran ... (g++ does its job here) ... $ vim test ... (other commands) ... $ !g++ g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran <-- same command as before 

另一方面, !cat filename并没有什么意义,因为它已经是一个完整的命令了。 除非上次命令之后有一个超级复杂的管道,当然,事件指示符会重复。