我有一个像这样的命令:
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