V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
MLawliet
V2EX  ›  Linux

只知道命令非开头的一部分,如何快速找到完整命令

  •  
  •   MLawliet · 2019-10-09 13:57:32 +08:00 · 5396 次点击
    这是一个创建于 1871 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 iptables, 忘了是以 ip 开头,只记得有 table,怎样快速找到 iptables ?

    46 条回复    2019-10-23 13:09:36 +08:00
    zsc8917zsc
        1
    zsc8917zsc  
       2019-10-09 14:04:03 +08:00
    history |grep table 如果使用过就能查出来
    Tumblr
        2
    Tumblr  
       2019-10-09 14:05:26 +08:00
    PowerShell 这点就好了!
    Get-Command *table*
    Get-Help _command_you_found_
    jokeqf
        3
    jokeqf  
       2019-10-09 14:08:32 +08:00
    fuck table ?
    MLawliet
        4
    MLawliet  
    OP
       2019-10-09 14:08:54 +08:00
    @zsc8917zsc 有局限啊。。不过目前是最好的方法。。
    @Tumblr linux 下呢。。
    Tumblr
        5
    Tumblr  
       2019-10-09 14:11:05 +08:00
    @MLawliet #4 都一样的啊,PowerShell Core 跨平台的呀。。。
    zdy349
        6
    zdy349  
       2019-10-09 14:12:38 +08:00
    欢迎使用 zsh
    MLawliet
        7
    MLawliet  
    OP
       2019-10-09 14:13:27 +08:00
    @zdy349 是用的 zsh 啊,怎样补全?
    CivAx
        8
    CivAx  
       2019-10-09 14:13:37 +08:00   ❤️ 1
    compgen

    Google before asking.
    ETiV
        9
    ETiV  
       2019-10-09 14:14:07 +08:00   ❤️ 1
    for p in $(echo $PATH | sed 's/:/ /g'); do find $p -iname '*table*'; done
    zdy349
        10
    zdy349  
       2019-10-09 14:18:58 +08:00
    @MLawliet 直接 table 键吧,不过有的补不出来,但是欢迎使用 9 楼的正解。
    lufeng08
        11
    lufeng08  
       2019-10-09 14:20:27 +08:00
    item incr.zsh 补全插件
    NullErro
        12
    NullErro  
       2019-10-09 14:20:57 +08:00
    你试试这个工具网站: https://wangchujiang.com/linux-command/
    hsddszjs
        13
    hsddszjs  
       2019-10-09 14:21:36 +08:00
    fzf ^r
    lululau
        14
    lululau  
       2019-10-09 14:24:37 +08:00
    zsh: hash | ag PATTERN
    lerry
        15
    lerry  
       2019-10-09 14:28:07 +08:00
    CTRL+R 然后输入 table
    HeiXiaoBai
        16
    HeiXiaoBai  
       2019-10-09 14:31:05 +08:00
    ls `echo $PATH | sed "s/:/ /g"` | grep table
    hbl
        17
    hbl  
       2019-10-09 14:33:13 +08:00 via iPhone
    把目录搜一遍 /usr/bin ...等

    ls -l /bin |grep table
    Vegetable
        18
    Vegetable  
       2019-10-09 14:33:52 +08:00
    echo $PATH| awk -F':' '{for( i=1;i<NF; i++ ) print $i}'|xargs ls |grep table
    MLawliet
        19
    MLawliet  
    OP
       2019-10-09 14:34:53 +08:00
    @CivAx 非常感谢~
    不过..说中文不好么? :)
    我发帖之前 google 过啊,希望找到一个快速补全后半部分命令的功能,所以没能搜到您这个命令
    另外我看了下您之前的帖子,貌似很多也是可以 google 到的哦~
    CEBBCAT
        20
    CEBBCAT  
       2019-10-09 14:43:18 +08:00
    记得有的 shell 会提供程序名变量,内含 cat、ls、echo 等等,从里面应该可以找到,echo $然后 Tab 补下全找找那个变量?
    MLawliet
        21
    MLawliet  
    OP
       2019-10-09 14:44:36 +08:00
    @zdy349 zsh 下 table 也只能从开头补全..
    @lufeng08 非常感谢,试了下这个插件,也只能从开头匹配啊。。
    lovedebug
        22
    lovedebug  
       2019-10-09 14:45:33 +08:00
    the fuck ~~
    wangyzj
        23
    wangyzj  
       2019-10-09 14:46:27 +08:00
    fuck?
    lovedebug
        24
    lovedebug  
       2019-10-09 14:46:56 +08:00
    HeiXiaoBai
        25
    HeiXiaoBai  
       2019-10-09 14:48:10 +08:00
    如果是要支持 Tab 键从中间匹配的,很大程度会影响正常开头匹配的命令,所以忘记的时候还是直接 ls grep 一下吧,毕竟也不是经常忘
    CivAx
        26
    CivAx  
       2019-10-09 14:48:54 +08:00
    @MLawliet #19 你 Google 的方式不对。

    问题要换个思路来 break down。问题本质是对现有命令模糊检索,既然检索有 grep,那么如何列出现存全局命令与 alias 才是要解决的问题,“Linux show all command” 一搜就有了,compgen -ac | grep "${keyword}"。

    第二,如果想争执这个点的话,你指出一下我这个号从 18 年 7 月 25 开始发的帖子里,哪一篇技术问题贴的问题是可以在 Google 和百度的前 10 页里找到直接答案或组合得出正确答案的。实际上连帖子的全部回复都几乎毫无帮助,除了一位大哥当场给我开发了一个应需产品。
    azh7138m
        27
    azh7138m  
       2019-10-09 14:53:17 +08:00
    choury
        28
    choury  
       2019-10-09 14:53:38 +08:00
    ctrl + r 直接搜索
    MLawliet
        29
    MLawliet  
    OP
       2019-10-09 15:03:52 +08:00
    @azh7138m 非常感谢,我在用 ohmyzsh,刚发现 ohmyzsh 确实可以从非开头补全,但逻辑有点奇怪,iptables 没问题,实际上帖子里的 iptables 只是我随便找了个例子,我并没有实际测过这个 iptables 的补全情况。。

    我是在使用 iftop 命令遇到的问题,我记得 top 部分,使用 #op + table 补全发现无法实现,以为 ohmyzsh 不能支持非开头补全,但刚测了一下#ftop + table 却可以识别到 iftop。。。
    ilunny
        30
    ilunny  
       2019-10-09 15:12:51 +08:00 via Android
    man -k table
    MLawliet
        31
    MLawliet  
    OP
       2019-10-09 15:14:01 +08:00
    @CivAx 不好意思,可能是帖子没描述清楚,我的想法是想找一个能快速补全后半部分命令的方法,对于怎么找到这个完整命令,我对 linux 有一点点了解,还是可以找到的,不过您说的这个命令,我之前确实不知道,学到了~
    然后。。并没有争执的意思。。
    最后,非常感谢~
    gunjianpan
        32
    gunjianpan  
       2019-10-09 15:15:33 +08:00
    U need fzf.
    jinqzzz
        33
    jinqzzz  
       2019-10-09 15:52:05 +08:00
    zsh-autosuggestions
    jinqzzz
        34
    jinqzzz  
       2019-10-09 15:54:31 +08:00
    @jinqzzz 这个是从头开始补,从.zsh_history 查的. 楼主只记得后边,这个应该做不到
    azurefire
        35
    azurefire  
       2019-10-09 16:02:28 +08:00 via iPhone
    fzf +1
    araraloren
        36
    araraloren  
       2019-10-09 16:08:46 +08:00
    看看这个名字
    apropos
    查找手册的相关内容,也许可以找到名字叫啥。。
    azh7138m
        37
    azh7138m  
       2019-10-09 16:09:18 +08:00
    @MLawliet 是因为有前缀匹配到了,不会展示剩余结果(猜的
    efaun
        38
    efaun  
       2019-10-09 16:22:19 +08:00
    @CivAx #26 虽然你给出了解决方案,但是语气着实让人不舒服,希望以后大家都能保持一个友善的态度吧
    cdlnls
        39
    cdlnls  
       2019-10-09 16:39:58 +08:00 via iPhone
    fish,目前见过觉得最好的
    ryd994
        40
    ryd994  
       2019-10-09 16:42:36 +08:00 via Android
    man -k 或者 apropos
    Unix 下绝大多数命令有 manpage,找到 manpage 就找到了命令
    Tink
        42
    Tink  
       2019-10-09 17:19:34 +08:00 via iPhone
    navi
    bumz
        43
    bumz  
       2019-10-09 23:05:05 +08:00 via iPhone
    @MLawliet 按 table 是啥
    按 tab? 全称 tabular
    bumz
        44
    bumz  
       2019-10-09 23:06:09 +08:00 via iPhone
    @zdy349 同楼上
    Harry1993
        45
    Harry1993  
       2019-10-10 05:19:11 +08:00
    如果你的 shell 是 emacs-based,用`ctrl-r`;如果是 vim-based,用`/`(按`esc`之後)。
    tomychen
        46
    tomychen  
       2019-10-23 13:09:36 +08:00
    ctrl + r
    如果类似命令太多,不一定能匹配到
    再就是 grep 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4551 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:54 · PVG 17:54 · LAX 01:54 · JFK 04:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.