我一整天都在尝试让 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