重命名命令不会在带空格键的文件的两步命令中重命名(mac 终端)

Rename command in doesn't rename in 2 step command for files with spacebar (mac terminal)

我想将名为 "Hi Dude" 的文件重命名为 "Hi Bro"。

如果我 运行 在 bash 中执行以下命令,它会起作用。

mv Hi\ Dude Hi\ Bro

但是当我执行以下两个命令时:

arg="Hi\ Dude Hi\ Bro"
mv $arg

显示以下错误:

usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory

有什么解决办法吗?我想为另一个 bash 脚本实现这个。

mv 需要(至少)两个参数(以空格分隔)。

当您 运行 mv Hi\ Dude Hi\ BroHi\ DudeHi\ Bro 被识别为两个单独的论点时,您正在向 Bash 发出信号不要给予任何特殊通过逃避它们对空间的意义。 (如果你没有转义空格,就会有四个参数)

如果您想通过变量传递值,最简单的解决方案是使用如下两个变量。

src="Hi Dude"
dst="Hi Bro"
mv "$src" "$dst"

这与 mv "Hi Dude" "Hi Bro" 相同。双引号信号 bash 将内部的整个事物视为一个单元。所以不要忘记双引号。否则它将是 mv Hi Dude Hi Bro,它做的事情完全不同。