【发布时间】:2013-12-09 22:58:10
【问题描述】:
例如,如果我mv一个文件说,example.ex,然后想chmod它,有没有办法可以快速访问example.ex?
我希望类似于$last 或$-1 的内容,但我对“Bash 引用最后一个文件|路径”的搜索会产生不相关的内容。
【问题讨论】:
-
$_... 这就是你所需要的。
标签: bash command-line-arguments
例如,如果我mv一个文件说,example.ex,然后想chmod它,有没有办法可以快速访问example.ex?
我希望类似于$last 或$-1 的内容,但我对“Bash 引用最后一个文件|路径”的搜索会产生不相关的内容。
【问题讨论】:
$_ ... 这就是你所需要的。
标签: bash command-line-arguments
$_ 将为您提供上一个命令的最后一句话,这似乎足以满足您当前的需求。例如:
mkdir biglongdirname
cp *.c $_
将创建该目录并将所有 C 文件复制到其中。
对于您的具体示例,可能类似于:
mv srcfile.ex example.ex
chmod 700 $_
注意$_是扩展后的最后一个参数,你可以使用csh-like变体!$来获取扩展前的最后一个参数(cmets是我在之后添加的事件):
pax> echo {1..5} # will expand to "1 2 3 4 5" (sans quotes).
1 2 3 4 5
pax> echo !$ # will give pre-expansion last arg "{1..5}".
echo {1..5} # shows command before executing.
1 2 3 4 5
pax> echo $_ # will give post-expansion last arg "5".
5
【讨论】:
$_和!$有什么区别?
csh 变体 !$ 在扩展之前,而 $_ 在扩展之后。如果你在echo {1..5} 后面跟着echo $_,你会得到5。如果你跟着echo {1..5} 和echo !$,你会再次得到1 2 3 4 5。我会说清楚的。
! 开头的构造都在bash 手册页的HISTORY EXPANSION 部分进行了描述。
对于交互使用,有一个键盘组合就是这样:alt+. (alt+dot)
它直接在你的命令行中插入最后一个命令的最后一个参数(如果你多次按下它,你循环之前每个命令的最后一个参数)。
试试吧,我已经习惯了,现在我用它来作为战利品。
【讨论】: