Bash 不能以交互方式扩展反引号

The*_*per 6 command-line bash 9.10 auto-completion

在 RHEL5.2 (bash 2.3.25) 上,我可以 cd `pwd`/[TAB] 并且使用 pwd(1) 的输出将 pwd 替换到我当前的工作目录中。

如何在 Ubuntu 9.10 (bash 4.0.33) 中实现相同的功能。

我已经阅读了以前的问题,这些问题将反引号称为旧的和贬值的。我不知道这个。我可以理解嵌套它们可能很困难,我使用 ${} 是脚本,但我希望能够在 shell 中以交互方式评估命令。

Cal*_*leb 5

这是一个功能而不是一个错误。

以这种方式思考这个场景:为了完成该任务,shell 必须在反引号中运行命令。如果它不打算运行多次,需要花费大量时间来执行等,这可能会导致非常严重的负面后果。

为了进行扩展,bash 只需要一个作为路径的字符串,而不是必须执行某些程序才能完成字符串。考虑使用作为当前工作目录的路径的建议./以及建议!

反引号并没有过时或过时,尽管$()现在通常更喜欢较新的语法。但是,在您的示例中,根本不建议使用命令。反引号和命令应该谨慎使用,并且仅在无法使用其他语法时使用。


use*_*own 3

尝试

光盘 。/TAB

反而。

cd $VAR/...
cd $(cmd)/...
Run Code Online (Sandbox Code Playgroud)

也不适合我。也许你可以比较 /etc/bash_completion 文件。