有两个父母A和B,有许多子目录和文件。坐在parentdir B中,键入这两个命令;他们之间有什么区别?
cp -r /path/to/A/* *
和
cp -r /path/to/A/* .
答案 0 :(得分:1)
除非你是鲁莽的,否则你永远不会输入第一个命令:
*
自身扩展为当前目录中每个非隐藏文件/目录的名称。因此,我们假设/path/to/A
包含两个子目录(spoon
和fork
),当前目录包含三个子目录(foo
,bar
和{{1} })。这意味着shell会将您的第一个命令解释为:
baz
换句话说,递归地将cp -r /path/to/A/fork /path/to/A/spoon bar baz foo
,/path/to/A/fork
,/path/to/A/spoon
和bar
复制到baz
(当前目录中碰巧会出现的项目)按字母顺序排列)。因此,您最终会在foo
下面找到四个新目录:foo
,foo/fork
,foo/spoon
和foo/bar
。
您的第二个命令意味着以递归方式将foo/baz
和/path/to/A/spoon
复制到当前目录中。这将在当前目录中创建两个新的子目录(/path/to/A/fork
和fork
)。