在bash中,我知道3个“来自前一个命令的args”快捷方式。他们是:
那么还有更多像这样的arg vars /快捷方式吗? :)
$ stat a\ b\ c/sub/folder/example.txt; mv $_ .
],除非其中有空格,否则无效。
为什么$ _不保留空格?要明白我的意思,请输入:
$ echo "1" "One String Quoted"; for i in $_; do echo \"$i\"; done
并与
$ echo 1 2 "3 4 5";
然后按Enter 然后:$ for i in !*; do echo \"$i\" done;
你能解释为什么你必须按回车^然后执行“for”循环才能使!*工作? [为什么$ _无需按Enter键即可工作(AKA,你可以用“;”来组合命令)]
答案 0 :(得分:2)
$ _保留空格就好了。否则,它会给你一个乱七八糟的混乱或只是命令的后半部分。你想要的是在$ _附近添加引号,以便接收它的命令也保留空格。
所以,在你的例子中:
$ stat a\ b\ c/sub/folder/example.txt; mv "$_" .
答案 1 :(得分:2)
$
执行变量扩展,!
是历史扩展。要使!
访问参数,您必须将命令添加到bash历史记录中,该命令在执行时/按Enter键时发生。
答案 2 :(得分:1)
答案 3 :(得分:1)
使用!#
访问当前行的参数:
$ echo 1 2 "3 4 5"; for i in !#:1-3; do echo ">$i<"; done
1 2 3 4 5
>1<
>2<
>3 4 5<
请参阅bash手册中的history expansion。