将子命令输出放在撇号之间

将子命令输出放在撇号之间

我想将一个文件传递给 mv 命令。但是我试图从命令中传递第一个文件ls。文件名看起来像,my music.mp3所以我必须将子命令输出放在撇号之间,以便 mv 命令正确识别它。我正在尝试做类似的事情(如下),但它不起作用。我知道可以使用 来完成echo,但我相信有更好的方法。

mv '`ls | head -1`' 'Music/my playlist/'

答案1

反引号 `` 已被弃用,取而代之的是运行子命令$(...)。此外,如果文件名中有空格,则应将单引号替换为双引号。

笔记:您可以使用单引号将带有空格的文件名引起来,但您应该使用双引号将子命令引起来。

mv "$(ls | head -1)" "Music/my playlist/"

希望这可以帮助!

相关内容