【发布时间】:2018-05-04 05:17:28
【问题描述】:
我正在尝试重命名大约 40 张图片(“1.png”为“40.png”)。
第一个命令在终端中起作用:
user$ ls | cat -n | while read n f; do mv "$f" "$n.png"; done
但我想将该命令设为 ~/.bash_profile 中的别名。
alias rename-png="ls | cat -n | while read n f; do mv "$f" "&n.png"; done"
alias rename-png="ls | cat -n | while read n f; do mv /"$f/" /"&n.png/"; done"
rename-png() {
ls | cat -n | while read n f; do mv "$f" "$n.png"; done
}
第一个别名不起作用,我认为这是因为引号没有转义。然而,即使在转义双引号时,命令也会在mv 处中断。我也在一个函数中尝试过,也没有成功。
错误:
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
有人可以向我解释我做错了什么吗?
【问题讨论】:
-
前。
alias l='ls -lp'所以修改你的别名定义,把=后面的部分用'引号括起来。 -
顺便说一句,反斜杠,而不是正斜杠,用于在双引号中转义——你也需要转义
$s(虽然它会更明智如果要使用别名,请使用单引号,正如 chepner 所说,此用例的错误之处)。 -
事后看来,那是我的错,我最初在测试时使用了反斜杠。作为一个例子,我很快就提出了这个答案。我也尝试转义货币符号和单引号以开始,它仍然在 mv 处中断。目前正在查看 ls 的未解析输出。