今天我在Mac上看到了一个命令:
touch !!:2/{f1.txt, f2.txt}
我知道使用touch命令但是!!:2在这个命令中做了什么。我没有Mac并且在Linux中尝试它会给出一些奇怪的输出。如果有人能解释这样的更多表达,那就太好了。
答案 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是上一个命令的第二个参数。 你的例子中有哪一个?