Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
MLawliet
V2EX  ›  Linux

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

  •  
  •   MLawliet · Oct 9, 2019 · 6134 views
    This topic created in 2435 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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