是的,这正在使用历史记录。 !#
是一个历史事件指示符,它指的是到目前为止键入的整个命令行。 :*
是一个单词(范围)指示符,表示除0之外的所有单词。因此,输入后echo "This is a sentence. "
,将!#:*
扩展为"This is a sentence. "
。并且(其中x和y是整数)是一个单词(范围)指示符,它表示单词编号x到单词编号y。如果省略y(),则将其解释为从第二个到最后一个单词的单词编号x。因此,在“到目前为止已输入整个命令行”之后,显示为x-y
x-
echo "This is a sentence. " "This is a sentence. "
然后!#:1-
扩展为"This is a sentence. "
,因为每个引用的"This is a sentence. "
字符串都计为一个单词,所以!#:1-
等价于!#:1
(只是单词编号1)。所以你最终会
echo "This is a sentence. " "This is a sentence. " "This is a sentence. " >text3
命令中的-
和>
一起出现的事实只是一个混乱;他们不互动。还有“这是一个句子”这一事实。用引号将发生的事情弄糊涂;如果你说
echo This is a sentence. !#:* !#:1-
它会扩展为
echo This is a sentence. This is a sentence. !#:1-
然后
echo This is a sentence. This is a sentence. This is a sentence. This is a
(因为!#:1-
从倒数第二个字扩展到第1个字。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句