如何组合shell命令

时间:2011-11-25 15:11:24

标签: linux shell

我正在尝试创建一个脚本,该脚本将从目录中复制文件并将复制的文件放入新目录。

我知道cp命令会复制文件而mkdir命令会创建目录,但是有人知道如何将这两个命令组合成一行吗?

到目前为止我已经

mkdir /root/newdir/ cp /root/*.doc /root/newdir

这会给出错误消息

mkdir: cannot create directory 'cp': Files exists
mkdir: cannot create directory '/root/files/wp.doc: File exists
mkdir: cannot create directory 'mkdir' : File exists
mkdir: cannot create directory '/root/files/new dir: file exists

然而,它确实创建了目录newdir

4 个答案:

答案 0 :(得分:8)

mkdir -p /root/newdir/ && cp /root/*.doc /root/newdir/

这将调用mkdir来创建目录结构,检查命令执行是否成功,如果是,则调用cp命令。

答案 1 :(得分:2)

mkdir /root/newdir/; cp /root/*.doc /root/newdir

答案 2 :(得分:0)

在两个命令之间放置分号

答案 3 :(得分:0)

这是因为您没有告诉shell命令的确切位置。在这种情况下:

mkdir /root/newdir/ cp /root/*.doc /root/newdir

您的命令cp将作为mkdir命令的参数,shell尝试将文件命名为cp。所有其他情况也是如此。

;命令放在后面。它告诉shell命令已经结束,下一个字是另一个命令。

换行符(返回键)也被视为命令seprator。因此,如果您将每个命令放在下一行,它也可以正常工作。 所以你可以尝试其中任何一个:

mkdir /root/newdir/  ; cp /root/*.doc /root/newdir

OR

mkdir /root/newdir/ 

cp /root/*.doc /root/newdir