!#:*!#:1-在bash命令中的含义是什么?

在下面的Bash命令中,是什么意思: !#:* !#:1

 echo "This is a sentence." !#:* !#:1- >text3 

这是使用bash的历史替代机制。

具体来说, !#是指当前行(最多但不包括!#本身的位置)。 !#:*是命令名称之后的那一行的部分(因此,在这种情况下, "This is a sentence." )。 !#:1-!#:*一样,只是省略了最后一个单词(所以它不包含我们刚刚通过!#:*添加的"This is a sentence"的第二个副本)。

最后的结果是一行三份This is a sentence. 回显到名为text3的文件中。

输出来自:

 echo "hello" !# 

相当于以下的输出:

 echo "hello" echo "hello" 

这是:

 hello echo hello 

!#表示将!#之前的字符串再次替换为当前行(避免再次写入的快捷键)

  0th 1st 2nd 3rd -------- ------- ------ -------- echo "hello" echo "hello" -------- ------- ------ ------- 

!#:0代表第0列的替代值

!#:1表示第一列的替代值

 echo "hello" !#:1 

这个输出与以下输出相同:

 echo "hello" "hello" 

这是:

 hello hello 

!#:1被第一列中的字符串替换 – "hello"

 echo "hello" !#:0 

产生与以下相同的输出:

 echo "hello" echo 

这是:

 hello echo 

!#:0被第0列中的字符串替换 – echo