如何使用标签快捷键选择不同的自动完成功能?

如何使用标签快捷键选择不同的自动完成功能?

我输入例如:cp /media/Macintosh

我正在恢复某人的 HD,所以我想获得 Then,Tab以便它能够正确地输入 Macintosh HD 的格式

然后我希望当您按下 Tab 键时它在几个选项中完成......

对于这个例子,有桌面和桌面(旧),我如何选择桌面(旧),当我输入时De tab tab它会显示为一个选项列表,但我不知道如何选择列表中的第二个选项。

我需要目录“/Desktop (old)/”的正确格式,我可以使用 tab 来实现这一点,但我不知道该怎么做。

现在我有一个新问题:我正在为某人进行数据恢复:

-Ubuntu:~# cp /media/Macintosh\ HD/Users/orlando/Desktop\ \(original\)/VIDEOS\ ESPANOL/ /media/\$G\$\ DATA/Orlando/Desktop/
cp: omitting directory `/media/Macintosh HD/Users/orlando/Desktop (original)/VIDEOS ESPANOL/'

当我输入以下内容时,这就是我的回复:

-Ubuntu:~# cp /media/Macintosh\ HD/Users/orlando/Desktop\ \(original\)/VIDEOS\ ESPANOL/ /media/\$G\$\ DATA/Orlando/Desktop/
cp: omitting directory `/media/Macintosh HD/Users/orlando/Desktop (original)/VIDEOS ESPANOL/'

顺便说一下,我以 root 身份登录。这是什么意思?我该如何修复?


现在我知道了一些事情,而且这个问题很流行:有人知道修改你的方法bash_profile,以便你可以多次使用 tab 在不同的路径之间循环吗?

对于真正这样做的人来说,正确的答案是: cd ~/.bash_profile或者~/.basher

使用 Sublime/TextEditorOfChoice/VIM/echo 打开文件进入文件:

然后复制并粘贴:

bind '"\t":menu-complete'或者:bind TAB:menu-complete

然后关闭并打开您的终端/bash/命令提示符。

答案1

在 Windows 中,如果您输入DeskTab它将循环显示所有可能的(不区分大小写)匹配项。Ubuntu 的工作方式与此不同(默认情况下)。在 ubuntu 中,如果您输入,De Tab它将填充到Desktop,然后您需要告诉它如何区分。

一般来说,在文件名中添加特殊字符(如空格)并不是一个好习惯。有两种方法可以选择文件名为“桌面旧版”,它们是

Desktop\ Old

或者

"Desktop Old"

在第一个选项中,\充当转义字符,这意味着后面的字符不应被解释为命令的一部分或参数的分隔符,而是解释为前面的同一参数的一部分。第二个选项只是将其放在引号中。

因此,对于你的情况,你需要做的是:

cp De tab-->cp Desktop

现在您需要在这里输入\,然后一旦您再次按下 Tab 键,它就会允许您自动完成(old)

此外,值得注意的是自动完成后的最终命令将如下所示:

cp Desktop\ \(Old\)

因为括号也是特殊字符,就像空格一样。

答案2

你不用“选择”,只需继续输入。Tab一旦发现两个文件中第一个不同的字符,补全就会停止。因此,使用你的例子,你会看到

$ cd Desktop
Desktop/       Desktop (old)/ 
$ cd Desktop

您只需继续输入即可。但是,您选择使用包含空格和括号的奇怪名称。这是一个坏主意,因为它使它们更难处理。要输入空格作为文件名的一部分(通常表示单词或文件名的结尾),您需要使用反斜杠 ( \) 对其进行转义。因此,在这种情况下,您需要输入\(即\Space) 然后Tab再次点击:

$ cd Desktop
Desktop/       Desktop (old)/ 
$ cd Desktop\ ##<--- hit Tab again here

它会神奇地完成

$ cd Desktop\ \(old\)/

请注意括号也会被自动转义。


以上是 Ubuntu 默认 shell ( bash) 的工作方式。其他 shell 允许您Tab再次点击以循环浏览可用选项。例如,bothzshfish允许您循环浏览并选择所需的选项。两者都在存储库中,因此您可能需要查看它们。

相关内容