对于带有空格键的文件,在2步命令中重命名命令(mac终端)

时间:2017-07-31 04:24:09

标签: bash terminal quoting

我想重命名一个名为" 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脚本实现这个。

1 个答案:

答案 0 :(得分:2)

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

当您运行mv Hi\ Dude Hi\ Bro时,Hi\ DudeHi\ Bro被识别为两个单独的参数,因为您发信号通知Bash不要通过转义它们来为空格赋予任何特殊含义。 (如果你没有逃避空间,那么会有四个参数)

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

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

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