bash 带有参数的别名重命名函数

bash 带有参数的别名重命名函数

我一整天都在尝试让 bash 接收参数但没有成功:我能找到的最接近的参考是:

如何将参数传递给别名?

如果我执行:

rename -v -n 's/^the.//' * 

它完全符合我的需要,但我想变成一个收到“the”的别名。运行时的字符串。有办法做到这一点吗?

欢迎任何想法!

我已经尝试过这个,但没有成功:

alias rp="_rp(){ rename 's/"$1"//' *; unset -f _rp; }; _rp"

答案1

您不能在别名中使用参数。 (您可以在其后面附加项目,但这只会使情况变得复杂。)这是手册页的内容(man bash)关于他们说:

每个简单命令的第一个单词(如果未加引号)将被检查以查看它是否有别名。如果是这样,该单词将被别名的文本替换。 [...]

没有在替换文本中使用参数的机制。如果需要参数,则应使用 shell 函数。 [...]

对于几乎所有用途,别名都被 shell 函数取代。

因此,您应该使用函数而不是别名。

rp() { rename "s{$1}{}" *; }    # No "{}" characters in the substitution

用法

rp 'the.'    # Quotes optional but recommended. Remember . represents any character

相关内容