使用制表符完成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,可编程完成部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |