使用 $_ 访问先前输入的路径时,Tab 不会扩展路径

使用 $_ 访问先前输入的路径时,Tab 不会扩展路径

请考虑以下情形:

我曾经ls列出目录的内容,也曾经Tab找到正确的目录,所以我不知道完整路径。而且路径可能很长,所以我不想再输入一次。现在我试图选择并复制单个文件,例如,从该目录复制到另一个目录。但是要选择文件,在Tab我输入后,该功能不起作用$_

举个例子,

在此处输入图片描述

我尝试使用 来Tab显示目录内容,但在我输入 后它不起作用cp $_/。我该怎么做?

答案1

zsh

当您输入时(注意,后面没有空格),shell 可以扩展;但很可能还有更多以 开头的变量,shell 无法确定您不在其中一个变量后面;因此您将获得一个变量列表(尝试一下)。要立即扩展,您需要通知 shell 变量/参数的名称已经完整:cp $_Tab/_$__$_

cp ${_}Tab

括号的作用与 类似${foo}bar。您明确地用 来终止名称,}因此后面的任何内容(例如bar)都不是它的一部分。如果${_}shell 理解名称中没有缺失(即尚未输入)的部分,那么就${_}意味着$_肯定可以这样扩展。

扩展之后${_},体验Tab应该如您所期望的那样。


bash

(最初这个问题被标记为我也照做了。虽然标签已经没有了,但我决定保留这部分。)

输入 后cp $_,按Ctrl+ Alt+e展开特殊参数。展开后,Tab即可工作。

请注意,按键扩展的不仅仅是变量和参数。例如,如果您cp是别名,那么它也将被扩展。扩展的行将是再次扩大(如果适用)当您点击时Enter。在某些情况下,这种双重扩展可能是不受欢迎的。比较我的这个答案,提到Ctrl++Alt的部分。e

相关内容