【问题标题】:Can I reference the last path or file I specified in bash?我可以引用我在 bash 中指定的最后一个路径或文件吗?
【发布时间】:2013-12-09 22:58:10
【问题描述】:

例如,如果我mv一个文件说,example.ex,然后想chmod它,有没有办法可以快速访问example.ex?

我希望类似于$last 或$-1 的内容,但我对“Bash 引用最后一个文件|路径”的搜索会产生不相关的内容。

【问题讨论】:

  • $_ ... 这就是你所需要的。

标签: bash command-line-arguments


【解决方案1】:

$_ 将为您提供上一个命令的最后一句话,这似乎足以满足您当前的需求。例如:

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

【讨论】:

  • $_和!$有什么区别?
  • @janos,csh 变体 !$ 在扩展之前,而 $_ 在扩展之后。如果你在echo {1..5} 后面跟着echo $_,你会得到5。如果你跟着echo {1..5} 和echo !$,你会再次得到1 2 3 4 5。我会说清楚的。
  • 谢谢,很好的回答!
  • 任何以! 开头的构造都在bash 手册页的HISTORY EXPANSION 部分进行了描述。
【解决方案2】:

对于交互使用,有一个键盘组合就是这样:alt+. (alt+dot)

它直接在你的命令行中插入最后一个命令的最后一个参数(如果你多次按下它,你循环之前每个命令的最后一个参数)。

试试吧,我已经习惯了,现在我用它来作为战利品。

【讨论】:

  • 你用的是什么外壳?
  • bash(版本 4.2.37)
猜你喜欢
  • 2023-01-11
  • 1970-01-01
  • 2021-06-09
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多