我每天都使用 Ubuntu,最近我发现 Kali Linux 上的终端行为与 Ubuntu 上的终端不同......我可以根据我输入的命令历史看到我正在输入的命令的结尾已经输入如下:
我知道我可以通过按 Tab 来使用自动完成功能,但这个功能是别的东西,因为我可以在按 Tab 之前看到命令......这也不是 Kali 相关问题,因为我只想在 Ubuntu 20.04 上复制这个功能。这是一项我可以通过安装一些工具轻松安装在 Ubuntu 上的功能apt install吗?还是我需要做的配置?
假设我是一个懒惰的混混,并希望避免把每串用引号将参数传递给函数时,我该如何避免字符*和?正在使用的bash为patname扩张呢?
简化示例:
fn () {
echo "$1"
}
# shopt -s option - disable * and ?
fn not/*/expanded
fn neither\ should\ this/be/expanded?
fn 'accepted too*'
# shopt -u option - enable * and ?
Run Code Online (Sandbox Code Playgroud)
这应该输出:
not/*/expanded
neither should this/be/expanded?
accepted too*
Run Code Online (Sandbox Code Playgroud) 有没有办法像在android上一样进行单词预测?
就像这个截图:

这将大大提高在 Ubuntu 上打字的速度。
我在这里需要它:
所需功能:
更新
我为这个问题悬赏,但仍然没有答案。我猜桌面快死了。我想迟早我会使用 android 而不是 ubuntu。
当我启动 bash 子 shell(通过bash从命令提示符调用)时,所有选项卡补全都会停止工作。该complete命令在新 shell 中变为空:
$ complete
[...]
complete -F _apport-collect apport-collect
complete -F _filedir_xspec vim
complete -o dirnames -o filenames -F _apport-bug ubuntu-bug
complete -F _known_hosts ftp
complete -F _longopt units
complete -F _longopt uname
complete -F _service /etc/init.d/network-manager
complete -F _longopt touch
complete -F _longopt ldd
complete -F _command then
complete -F _known_hosts rlogin
complete -F _service /etc/init.d/sddm
complete -F _service /etc/init.d/lvm2-lvmpolld
complete -F _command command
complete -F _longopt sha384sum
complete -F _known_hosts …Run Code Online (Sandbox Code Playgroud) 我有一个符号链接:
/path/to/foo -> /path/to/bar/foo
Run Code Online (Sandbox Code Playgroud)
当/path/to/foo我可能想要 cd 到/path/to/bar/foo:
$ cd ../ Tab
然后什么都不会自动完成。不过,我仍然cd可以通过在目录“bar”中输入来正常工作。
这是为什么?是否有我可以应用的设置或技巧来完成该选项卡?
我是 Geany IDE 的新手。我已经安装了基本的 Geany,没有来自 ubuntu 软件中心的任何插件。当我按 Ctrl 空格时,我找不到 php 的代码完成。此功能是否需要插件?
谢谢。
由于 bash 是最近更新的,当我尝试在 cd 期间通过 Tab 键自动完成时,我得到以下信息...
tony@tony-HP:~$ cd Mucword=1
words[0]=${!ref}${COMP_WORDS[i]}
words[1]=${!ref}${COMP_WORDS[i]}
cword=1
words=("${@:3:2}")
cword="$3"
cur="$3"
cur="$3"
cword="$3"
prev="$3"
words=("${@:3:2}")
compgen -d -- "$quoted"
sic/
Run Code Online (Sandbox Code Playgroud)
在这里,我cd Mu在提示符下输入并使用选项卡,在 bash 吐出我不需要的信息sic/后,在确定我的音乐目录后添加。有什么变化?在安全问题之后是否有默认设置?
ps 如您所料,点击返回更改目录。
我正在使用 Ubuntu 14.04(更新),在终端中,自动完成运行良好,但是当我在终端中使用 adb 命令时,自动完成不再起作用..
所以我收到以下错误:
bash: _parse_usage: line 16: syntax error near unexpected token `('
bash: _parse_usage: line 16: ` -?(\[)+([a-zA-Z0-9?]))'
bash: error importing function definition for `_parse_usage'
bash: _longopt: line 14: syntax error near unexpected token `('
bash: _longopt: line 14: ` --+([-a-z0-9_]))'
bash: error importing function definition for `_longopt'
Run Code Online (Sandbox Code Playgroud)
显然仅在函数调用上。
我本地安装了 Ubuntu 16.04,默认情况下它具有systemctl子命令的 bash 补全功能。但是当我在 Digital Ocean 上启动 Ubuntu Server 18.04 实例时,子systemctl命令没有 bash 补全。我预计会缺少一些软件包,例如systemd-completion,但在我本地的 Ubuntu 上我只安装了这些软件包:
ii libpam-systemd:amd64 229-4ubuntu21.2 amd64 system and service manager - PAM module\nii libsystemd0:amd64 229-4ubuntu21.2 amd64 systemd utility library\nii libsystemd0:i386 229-4ubuntu21.2 i386 systemd utility library\nii systemd 229-4ubuntu21.2 amd64 system and service manager\nii systemd-shim 9-1bzr4ubuntu1 amd64 shim for systemd\nii systemd-sysv 229-4ubuntu21.2 amd64 system and service manager - SysV links\nRun Code Online (Sandbox Code Playgroud)\n\n和竣工工程。这bash-completion软件包已安装在两台机器上。
另外,在/etc/bash_completion.d/我的本地 16.04 机器上,我没有看到任何相关的 systemctl …
我编写了一些软件,其中包含它自己的 Bash 完成脚本。当我手动获取它时,这个脚本工作正常,但我试图找出如何最好地安装在 Ubuntu 18.04 上。
/usr/share/bash-completion/completions 中有很多其他完成脚本,这让我认为这是答案,但是在那里安装我的完成脚本没有任何效果。那个位置不知何故是一个红鲱鱼?或者除了将脚本放在那里之外,我还需要做些什么来注册脚本?
我想补充的bash的可编程完成自定义完成规范,做了以下情况:每当输入的命令是foo,我想对于部分令牌之后做文件名/目录下完成foo,但是相对于一个固定的目录(比方说/a/b/c),而不是当前工作目录。
例如,假设/a/b/c包含文件
hello goodbye cheers directory
Run Code Online (Sandbox Code Playgroud)
并/a/b/c/directory包含文件
adieu ciao
Run Code Online (Sandbox Code Playgroud)
然后,输入foo go<TAB>应该完成goto goodbye,并且输入foo dir<TAB>ci<TAB>应该首先完成参数 todirectory/然后 to directory/ciao,无论我当前的工作目录是什么。
我希望能够通过一次调用来设置它complete,但是在阅读手册后,我似乎无法做到这一点。可以做到吗?而且,如果没有,我怎么能添加一个 compspec 来做到这一点?
假设我在一个文件夹中有三个文件名以 s 开头的文件。
如果我输入 s 并点击Tab,我会听到错误提示音,并且终端中没有完成任何操作。我必须输入足够的文件名,以便在它自动完成之前明确终端我想要的文件Tab。
因此,如果我有文件名school、scuba、 和scary,并且我想开办学校,我必须输入 sch ,否则它不会自动完成。我见过一些例子,您可以键入内容s,然后可以Tab一一浏览所有选项。
此功能不可用还是我必须在某处更改设置?