在下面的Bash命令中,含义是:!#:* !#:1
echo "This is a sentence." !#:* !#:1- >text3
答案 0 :(得分:8)
使用bash's history substitution mechanism.
具体来说,!#
指的是当前行(最多但不包括!#
本身的位置)。 !#:*
是命令名后面的那一行的一部分(因此,在这种情况下,"This is a sentence."
)。 !#:1-
与!#:*
相同,只是它省略了最后一个字(因此它不包含我们刚刚通过"This is a sentence"
添加的!#:*
的第二个副本)。
最终结果是一行,其中三个This is a sentence.
副本回显到名为text3
的文件中。
答案 1 :(得分:4)
来自:
的输出echo "hello" !#
等同于:
的输出echo "hello" echo "hello"
是:
hello echo hello
!#
表示将!#
之前的字符串再次替换为当前行(避免再次写入的快捷方式)
0th 1st 2nd 3rd
-------- ------- ------ --------
echo "hello" echo "hello"
-------- ------- ------ -------
!#:0
表示第0列中的替换值
!#:1
表示第1列中的替换值
实施例
echo "hello" !#:1
该输出与以下输出相同:
echo "hello" "hello"
是:
hello hello
第一列中的 !#:1
替换为字符串 - "hello"
echo "hello" !#:0
产生与<:p>相同的输出
echo "hello" echo
是:
hello echo
!#:0
被第0列中的字符串替换 - echo