Linux History Expansion 转义冒号,这并不意味着作为修饰符(在 zsh 中)

Linux History Expansion 转义冒号,这并不意味着作为修饰符(在 zsh 中)

我有一个像这样的命令:

echo test

现在我想在 zsh 中使用另一个带有历史扩展的命令中的最后一个参数。我的另一个命令中有一个前导冒号“:”,所以我想要的结果是:

echo test:someothertext

我尝试使用 linux bash 历史扩展,如下所示:

echo !!$:someothertext

:s 将被解释为修饰符,结果是:

echo testsomeothertext

因此,缺少所需的冒号。

真实场景更有用,并且使用 git 命令(git showbranch:file),但这个 echo 示例更容易在每个系统上重现。

我已经尝试过使用“\”作为冒号的转义,但是没有用(“\”也打印在结果中),而且我尝试过使用有效的修饰符以便第二个冒号不会被解释但是也不起作用。

所以我尝试了这个:

echo !!$:p:someothertext

结果是:

zsh: substitution failed

答案1

不太好,但在bash这个作品中:

echo !!$\
:someothertext

答案2

您始终可以使用:

echo !!$':moretext'

或者:

echo !!$'':moretext

或者:

echo $_:moretext

相关内容