我试图了解如何tar
在 Bash 脚本中使用将项目目录复制到另一个位置,同时排除 node_modules 子目录。发布了一条可能有用的评论这里,我已经为我的用例重写了,如下所示:
tar -cf - --exclude="node_modules" "${source}" | tar -xf - -C "${target}"
然而,在了解一些有关它的事情之前,我不愿意运行这个命令。这是我的问题 -
--exclude
the 之前的单独连字符和 the 之前的单独连字符的用途是什么-C
?- .tar 文件实际上是在文件系统中的某个位置创建的吗?如果有,它在哪里命名?
答案1
-
许多实用程序根据上下文将参数定义为标准输入/输出,对于 GNU 来说甚至tar
不需要它,因为它用于输入/输出的默认文件是 stdio。据此,tar -cf - --exclude="node_modules" "${source}"
将tar
存档写入标准输出,这实际上是一个管道,其另一端提供给以下命令tar -xf - -C "${target}"
作为提取的标准输入。- 在您的管道中,标准输出永远不会重定向到文件,因此
tar
实际上不会创建任何存档。