5

有什么方法可以!$在参数扩展上下文中使用吗?激发这个问题的预期用法是快速(就击键而言)文件名的更改(例如,不是将文件名保存在变量中并执行rsvg-convert $svg > ${svg/.svg/.png},而是可以使用rsvg-convert $! > $!{/.svg/.png},其中$!{/.svg/.png}错误的语法暗示所需的效果;当有问题的文件是前一行的最后一个标记时,通常可以比其他方法更快地键入这样的命令,例如在存在共享不同长度前缀的文件时使用制表符完成,或者通过复制和粘贴文件名用鼠标选择)。据我所知,没有办法!$在这种情况下使用,但也许通过一些诡计可以达到类似的效果。

4

2 回答 2

5

根据您希望替换的复杂程度,历史扩展确实支持用另一个字符串替换第一次出现的字符串。您只需在替换之前使用:like:

rsvg-convert !$ > !$:s/.svg/.png

您可以在此处查看所有历史修饰符

alt至少在 emacs 模式下,如果您按+ ,bash 也会将前一个命令的最后一个参数内联(运行命令时不用于扩展).。因此,在这种情况下,输入速度可能是最快的:

rsvg-convert

然后alt+ .>alt+然后删除它刚刚用+.放置的扩展名,然后是新的扩展名:altbksppng

于 2017-06-11T01:18:15.850 回答
2

如果您进一步查看 Eric 示例中的修饰符,您还可以执行以下操作:

rsvg-convert !$ > !$:r.png

假设 .svg 当然是一个后缀

于 2017-06-11T06:26:06.953 回答