什么!!:2在Mac或Linux中意味着什么?

时间:2016-10-22 16:33:38

标签: bash shell

今天我在Mac上看到了一个命令:

touch !!:2/{f1.txt, f2.txt}

我知道使用touch命令但是!!:2在这个命令中做了什么。我没有Mac并且在Linux中尝试它会给出一些奇怪的输出。如果有人能解释这样的更多表达,那就太好了。

2 个答案:

答案 0 :(得分:3)

touch更新文件时间戳(到当前时间,没有参数)

!!是“历史记录扩展”操作,以这种形式从两个感叹号中检索bash历史记录中的上一个命令(两个感叹号),“!-1”的别名

:2是单词说明符,检索第二个命令参数。例如。如果以前的历史记录命令为ls -l /tmp,则!!:2将呈现为“/ tmp”

{f1.txt,f2.txt}被称为“支撑扩张”。支撑扩展需要单个字符串而没有未转义的空格(这绝对是问题中的拼写错误)。例如,foo{bar,baz}将扩展为'foobar foobaz'

所以,我们假设我们运行bash命令

ls -l /tmp

现在,touch !!:2/{f1.txt,f2.txt}将生成

touch /tmp/f1.txt /tmp/f2.txt

答案 1 :(得分:0)

https://tiswww.case.edu/php/chet/bash/bashref.html

!!指前一个命令。这是'!-1'的同义词。

:2指的是第二个参数。

例如:

echo "content" > foo
cp foo bar
cat !!:2

显示栏的内容。 !!:2是上一个命令的第二个参数。 你的例子中有哪一个?

相关问题