AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[autocomplete](unix)

Martin Hope
Dan Messer
Asked: 2024-03-24 03:22:00 +0800 CST

TCSH 选项卡自动完成当前输入命令的部分

  • 5

我正在尝试编写自己的完整命令。完成需要使用键入命令的一部分来进行路径搜索。

我试图获得以下行为

当我my_commad -ws my_ws -t[TAB]在 my_ws/tests 下编写文件夹列表时,它显示为完成列表,我不知道如何打破它

我尝试了以下操作,但由于引号问题而失败,我猜

complete my_command 'n@-t@`echo $COMMAND_LINE | perl -ne '/-ws (\w+)/; print $1'`@'
autocomplete
  • 1 个回答
  • 26 Views
Martin Hope
Arno
Asked: 2022-11-19 12:12:19 +0800 CST

仅完成一次位置参数

  • 5

我正在尝试为将gsSSH 主机名作为其第一个参数并将任意字符串作为第二个参数的命令(称为)编写完成。

我从默认的 SSH 完成中窃取了这个:

# Load completions shared by various ssh tools like ssh, scp and sftp.
__fish_complete_ssh ssh
# Also retrieve `user@host` entries from history
function __ssh_history_completions
    history --prefix ssh --max=100 | string replace -rf '.* ([A-Za-z0-9._:-]+@[A-Za-z0-9._:-]+).*' '$1'
end

我用它来完成gs命令的参数:

complete -c gs -d Remote -xa "(__fish_complete_user_at_hosts)"
complete -c gs -d Remote -ka '(__ssh_history_completions)'

这有效,但它完成了两个参数的 SSH 主机名:

  • 如果我输入gs <tab>,fish 会正确完成 SSH 主机名,
  • 如果我键入gs somehost <tab>,fish 会再次错误地完成 SSH 主机名(这个参数不应该完成,它是一个任意字符串)。

我怎样才能使这个完成只影响我命令的第一个位置参数?

autocomplete
  • 1 个回答
  • 24 Views
Martin Hope
QuarticCat
Asked: 2022-09-21 19:24:30 +0800 CST

如何配置 zsh 完成以排除 `.` 和 `..`?

  • 1

我按照这个答案配置了我的 zsh 。然后我发现完成现在包括.and ..。如何删除它们?

在此处输入图像描述

zsh autocomplete
  • 1 个回答
  • 28 Views
Martin Hope
paradroid
Asked: 2022-09-11 17:26:55 +0800 CST

特定的 bash 完成文件在 /usr/share/bash-completion/completions 中不起作用,但在 /etc/bash_completion.d 中工作正常

  • 4

我有一个 git 存储库,在其中保存了一些静态链接的二进制文件以及相关的 man 文件和 bash 完成文件,这些文件都是使用GNU Stow进行“安装”来制作符号链接的。

我之前已经将 bash 完成文件的符号链接放入/etc/bash_completion.d没有问题,但最近我开始将它们放入/usr/share/bash-completion/completions,因为我认为这对它们来说是一个更正确的位置,因为二进制文件正在进入/usr/local/bin并且 man 文件在/usr/local/share/man.

除了四个特定的 bash 完成文件之外,一切都像以前一样工作,这些文件在放置在这个新位置时不再工作。这些是:

  • git-identity.bash-完成
  • tmux.completion.bash

这两个用于 fzf:

  • 完成.bash
  • 键绑定.bash

我还有 20 个其他 bash 完成文件可以正常工作。这些特定的 bash 完成文件是什么让它们在/etc/bash_completion.d没有问题但没有问题的情况下工作/usr/share/bash-completion/completions?

编辑: 它们也不起作用~/.local/share/bash-completion/completions。


附加信息:

这些文件来自标准的 Debian/Ubuntu.bashrc行:

# Enable programmable completion features
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

在这两个位置中,不是目录上的内容被获取,而是这两个文件:

/usr/share/bash-completion/bash_completion

/etc/bash_completion

如果 NOT ,第二个文件只是指向第一个文件shopt -oq posix。在我的设置中:

$ if ! shopt -oq posix; then echo "not posix"; fi
not posix

我认为答案必须在/usr/share/bash-completion/bash_completion中。


更多的:

我尝试用bash_completion最新版本替换,但这也不起作用。

https://github.com/scop/bash-completion

还..

这些文件在放入其中任何一个时都不起作用~/.local/share/bash-completion/completions。

bash autocomplete
  • 1 个回答
  • 86 Views
Martin Hope
alper
Asked: 2022-05-08 01:12:15 +0800 CST

如何从“打开”的选项卡完成建议中抑制 *://?

  • 0

我OS X在zshshell中体验过这个,打开的手册页。

$ type open
open is /usr/bin/open

$ man open
  OPEN(1)                   General Commands
Manual                            OPEN(1)

NAME
     open – open files and directories

当我键入open并键入选项卡时,我看到以下输出:

$ open                                                                                                                          
file:      ftp://     gopher://    http://    https://

我从不尝试打开任何file:, ftp://, gopher://, http://, https://,因此我只想压制它们。是否可以抑制它们并且只看到文件/文件夹名称。

zsh autocomplete
  • 1 个回答
  • 25 Views
Martin Hope
Martin Tournoij
Asked: 2022-04-26 02:02:16 +0800 CST

如何在没有空格和特殊 shell 字符转义的情况下显示文件完成?

  • 2

我有一堆带空格的文件名:

[~/music]% ls
Acid Eater - Black Fuzz On Wheels.ogg         Angel'in Heavy Syrup 4.mp3
Akalé Wubé - Akalé Wubé.opus                  Astor Piazzolla & Gary Burton - The New Tango.mp3
Allen Toussaint - The Bright Mississippi.mp3  B.B. King - Live at the Regal.mp3
Angel'in Heavy Syrup 1.opus                   Bar Kokhba Sextet - Lucifer.opus
Angel'in Heavy Syrup 2.opus                   Billy Bang - Vietnam the Aftermath.mp3
Angel'in Heavy Syrup 3.mp3

完成为空格插入转义字符(这也意味着没有足够的空间在两列中显示它):

[~/music]% mpv <Tab>
Acid\ Eater\ -\ Black\ Fuzz\ On\ Wheels.ogg
Akalé\ Wubé\ -\ Akalé\ Wubé.opus
Allen\ Toussaint\ -\ The\ Bright\ Mississippi.mp3
Angel\'in\ Heavy\ Syrup\ 1.opus
Angel\'in\ Heavy\ Syrup\ 2.opus
Angel\'in\ Heavy\ Syrup\ 3.mp3
Angel\'in\ Heavy\ Syrup\ 4.mp3
Astor\ Piazzolla\ \&\ Gary\ Burton\ -\ The\ New\ Tango.mp3
B.B.\ King\ -\ Live\ at\ the\ Regal.mp3
Bar\ Kokhba\ Sextet\ -\ Lucifer.opus
Billy\ Bang\ -\ Vietnam\ the\ Aftermath.mp3

这是有道理的,但也很难阅读;我想:

[~/music]% mpv <Tab>
Acid Eater - Black Fuzz On Wheels.ogg         Angel'in Heavy Syrup 4.mp3
Akalé Wubé - Akalé Wubé.opus                  Astor Piazzolla & Gary Burton - The New Tango.mp3
Allen Toussaint - The Bright Mississippi.mp3  B.B. King - Live at the Regal.mp3
Angel'in Heavy Syrup 1.opus                   Bar Kokhba Sextet - Lucifer.opus
Angel'in Heavy Syrup 2.opus                   Billy Bang - Vietnam the Aftermath.mp3
Angel'in Heavy Syrup 3.mp3

[~/music]% mpv Acid<Tab>
# Completes to:
[~/music]% mpv Acid\ Eater\ -\ Black\ Fuzz\ On\ Wheels.ogg

# It's okay to type escapes on the cmdline; it's just the display.
[~/music]% mpv Angel\'in\ H<Tab>
Angel'in Heavy Syrup 1.opus  Angel'in Heavy Syrup 3.mp3
Angel'in Heavy Syrup 2.opus  Angel'in Heavy Syrup 4.mp3

我花了一些时间阅读 zshcompsys(1),但我真的看不出有办法做到这一点。

zsh autocomplete
  • 1 个回答
  • 76 Views
Martin Hope
Fajela Tajkiya
Asked: 2022-04-22 15:11:05 +0800 CST

有没有办法让 Bash 中的命令选项名称自动完成?

  • 1

我正在使用 Bash 4.4。

[root@192 ~]# bash --version
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@192 ~]#

我想知道是否有任何方法可以使选项名称自动完成。例如,如果我键入realpath --re并后跟一个Tab,它可以帮助我填写选项名称的缺失部分,然后我得到realpath --relative-to=.

bash autocomplete
  • 1 个回答
  • 48 Views
Martin Hope
400 the Cat
Asked: 2022-02-19 20:51:03 +0800 CST

自定义脚本的 zsh 完成规则

  • 3

我有自定义脚本的 zsh 完成文件foo。

它应该在以下位置完成常规文件$HOME/foo:

#compdef foo

_arguments -S : \
    '-i' \
    '1:thing:_path_files -W $HOME/foo -g "*(.)"'

我需要修改完成如下:

添加可选参数--dir。

当我键入foo --dir<TAB>时,它应该为目录提供补全$HOME/foo

foo --dir=<TAB>

此外,文件完成路径($HOME/foo默认情况下)应更改为$HOME/foo/my_dir,其中my_dir提供的名称为--dir=my_dir.

更新:

基本上,完成规则应该有两种操作模式:

  1. 当我键入时foo -<TAB>,它应该为我提供可选参数 ( -d -w -l -i)。然后,根据选择的可选参数:

1a)foo -d <TAB>仅完成路径中的目录

1b)foo -w / -l / -i <TAB>完成路径中的常规文件

这可以按需要工作。

  1. 当我键入时foo <TAB>,完成规则应该在路径中提供常规文件。目前,这不能按预期工作。它仍然为我提供了可选参数,我必须选择一个,然后才能完成目录/文件。

当我键入foo <TAB>(不带-)时,它只为我提供选项参数。只有在我选择了一个可选参数之后,我的完成规则才会在路径中提供目录/文件。

如何修复我的脚本,使其在没有任何可选参数的情况下工作,并且在这种情况下只需完成路径中的常规文件?

这是完成规则:

#compdef foo

local -A opt_args

_arguments -S -C \
    '-i[select file]:thing_file:_path_files -W $HOME/manuals/${opt_args[-d]} -g "*(.)"' \
    '-l[select file]:thing_file:_path_files -W $HOME/manuals/${opt_args[-d]} -g "*(.)"' \
    '-w[select file]:thing_file:_path_files -W $HOME/manuals/${opt_args[-d]} -g "*(.)"' \
    '-d[select directory]:directory_file:_path_files -/ -W $HOME/manuals' \
     && return 0

最后一个小问题。完成规则只需要(完成)一个可选参数。

当我键入foo -i -<TAB>时,它不提供其他剩余的可选参数。这些参数不应相互排斥。应该可以使用:

foo -i -l -w <TAB>
zsh autocomplete
  • 1 个回答
  • 139 Views
Martin Hope
400 the Cat
Asked: 2022-02-15 21:24:23 +0800 CST

gpg 的 zsh 补全

  • 3

我正在使用我的 zsh 版本(debian 10)附带的默认_gpg完成文件。我已将文件粘贴在这里:https ://ctxt.io/2/AABg86pPFQzsh5.7.1-1

当我这样做时gpg <TAB>,zsh 会完成当前目录中的文件和目录。我想改变它,以便:

a) 如果我使用 gpg 没有进一步的参数(这意味着-d),那么只有当前目录中的 *.gpg 文件完成(不是目录)

b)如果我使用-e或-c(暗示加密),则仅完成当前目录中的非 gpg 文件(不是目录)

c)对于其余的,我猜默认行为是好的

我已将以下内容添加到我的.zshrc:

zstyle ':completion::complete:gpg:*' file-patterns '*.(gpg|sig)(.)'

但这应该只是案例a的规则)

我怎样才能实现上述行为?

zsh autocomplete
  • 2 个回答
  • 202 Views
Martin Hope
Ton Machielsen
Asked: 2021-12-31 03:25:14 +0800 CST

有没有办法验证完成文件?

  • 1

我有能够为 bash、zsh 和 fish 创建完成文件的工具。我通常使用 zsh,但我无法让这个完成文件在 zsh 上工作。所以作为一个测试,我安装了fish并为fish创建了完成文件。还有一个我无法上班。所有其他完成在 zsh 和 fish 中都可以正常工作,所以我怀疑该工具会创建一个损坏的完成文件。有没有办法检查完成文件的语法是否有错误?

zsh autocomplete
  • 3 个回答
  • 225 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve