加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用制表符完成Bash历史记录扩展

发布时间:2020-12-15 21:54:48 所属栏目:安全 来源:网络整理
导读:我经常使用命令历史扩展使用形式!n:m,其中n是历史命令的编号,m是参数的编号或其缩写形式. 有没有办法在现场扩展这些论点,以便我可以选项卡完成它们? 一个简单的例子: $mycmd long/path/with/plenty/of/subdirectories/$cp !$/tediously-verbose-filename
我经常使用命令历史扩展使用形式!n:m,其中n是历史命令的编号,m是参数的编号或其缩写形式.

有没有办法在现场扩展这些论点,以便我可以选项卡完成它们?

一个简单的例子:

$mycmd long/path/with/plenty/of/subdirectories/
$cp !$/tediously-verbose-filename.txt .

我希望能够使用参数重复,而不必完全输入文件名(或使用ls或echo进行虚拟运行).

解决方法

你正在寻找的概念术语是[命令]历史和历史扩展 – 如果你运行man bash,你会发现专门讨论这个主题的部分HISTORY和HISTORY EXPANSION.

也就是说,在这种特殊情况下,它不是历史扩展,而是你朋友的特殊shell变量$_:

它扩展到最近命令的最后一个(扩展)参数.

尝试以下模拟您的场景:

ls "$HOME"  

# Type this on the command line and press TAB (possibly twice)
# _before_ submitting to TAB-complete to matching files in "$HOME"
# (irrespective of what the current directory is).
# $_ at this point contains whatever "$HOME" expanded to,e.g. "/Users/jdoe".
cp $_/

注意:给定命令的制表符完成是否与$_是否使用无关.有关如何为感兴趣的命令手动启用制表符完成,请参阅man bash,可编程完成部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读