2013-03-15 59 views
1
cp ${skeleton_dir}/*.cfg ${skeleton_dir}/*.org ./ 

我不明白这是什么意思,但我有一个基于程序行为的猜测。它将.cfg文件复制到当前目录,但是*.org ./做什么?了解shell脚本中的cp

我想修改这一行来复制* .spop文件。这种改变会诀窍吗? (这是很难轻松地验证这一点的周转时间在我的机器上一天)

cp ${skeleton_dir}/*.cfg ${skeleton_dir}/*.org ./ 
cp ${skeleton_dir}/*.spop ${skeleton_dir}/*.org ./ 

很抱歉的愚蠢的问题,但我不知道很多关于这一点,就很难谷歌“./”。

未来,我将如何搜索与cp命令(此“./”)一起使用的不同变体。我现在知道关于“man xxx”,并且我读了“man cp”,但是没有任何关于“./”的信息。“

回答

1

如果您阅读cp的手册页,您会看到可以指定多个源复制到目标目录。 ./是当前目录。那么这样做是将${skeleton_dir}中的所有.cfg.org文件复制到当前目录。只需添加*.spop

cp ${skeleton_dir}/*.cfg ${skeleton_dir}/*.org ${skeleton_dir}/*.spop ./ 

您还可以使用大括号展开:

cp ${skeleton_dir}/*.{cfg,org,spop} ./ 
+0

啊!! ./是当前目录。谢谢。现在这是直截了当的。我把它和运行命令“./”混淆了,它们是两个单独的东西不是? 哦,我明白了./真的不是我认为这一直是这样的跑步。如果我没有这个命令进入终端,它说没有找到命令。 我觉得我已经学到了一些东西 – SwimBikeRun 2013-03-15 04:12:14

+0

@MaxRunFast我不认为'。/'是一个有效的命令..你可能会考虑'。/ executable'在当前目录中运行一个可执行文件 – 2013-03-15 04:15:10

+1

'.'是当前目录,'/'是路径名中目录和内容之间的分隔符。 '.'和'。/'作为'cp'的最后一个参数本质上没有区别。 – Barmar 2013-03-15 04:20:38