2017-07-31 106 views
3

我想将名为“Hi Dude”的文件重命名为“Hi Bro”。重命名命令不会在2步命令中为具有空格键的文件重命名(mac终端)

如果我在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脚本。

回答

2

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

当您运行mv Hi\ Dude Hi\ BroHi\ DudeHi\ Bro因为你是信令击不通过转义他们给任何特殊含义的空间被识别为两个独立的参数。 (如果您没有逃脱的空间,将有四个参数)

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

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

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

+1

非常感谢@Anubis,它工作。 :d – Grovile