Answers:
在!*
,!
是历史扩展前缀,*
是字标志这意味着所有的参数。您可以将常规语法记住为bang-line-colon-column(!
第:
几行)。有许多可能的快捷方式:默认行是前一行,默认列说明符是“ all”,并且如果列说明符是非数字的,则可以省略冒号(但!3
表示第3行)。您可以使用!:0
指命令名,!:1
,!:2
,等,是指连续的参数,!:$
最后一句话,!:*
所有的参数,等等。
另请参见这篇文章由迈克尔Mrozek在Unix的堆栈交换。
!1:1
会指向第一行的第一个参数?
就我个人而言,我真的不喜欢这种“带有感叹号的扩展”功能,即使您echo "Hello World!"
在交互式外壳程序中尝试,该功能也可能会打扰(因此,假定它们将以非交互式模式运行的源脚本根本无法使用)。
因此,我set +o histexpand
使用以下方法设置并开始调用参数:
Esc, 1, Esc, Ctrl-Y => Insert first argument of previous command.
请注意,Esc技巧是因为我没有meta键。
echo 'Hello, orld!'
。注意单引号而不是双引号。
!:1
,!:2
。将版本与冒号一起使用后,它可以工作。