小编TTT*_*TTT的帖子

cp -r 中的语法差异以及如何克服它们

假设我们在一个空白目录中。然后,执行以下命令:

mkdir dir1
cp -r dir1 dir2
Run Code Online (Sandbox Code Playgroud)

生成两个(空白)目录dir1dir2,其中dir2已创建为dir1. 但是,如果我们这样做:

mkdir dir1
mkdir dir2
cp -r dir1 dir2
Run Code Online (Sandbox Code Playgroud)

然后我们反而发现dir1现在已经放到里面了dir2。这意味着完全相同的cp命令的行为取决于目标目录是否存在。如果是,则该cp命令的作用与此相同:

mkdir dir1
mkdir dir2
cp -r dir1 dir2/.
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎非常违反直觉。我原以为cp -r dir1 dir2(当dir2已经存在时)会删除现有dir2(和任何内容)并将其替换为dir1,因为这是cp用于两个文件时的行为。我知道递归副本本身有点不同,因为目录在 Linux 中(更广泛地在类 Unix 系统中)存在,但我正在寻找更多关于为什么选择这种行为的解释。如果您能指出一种方法来确保cp行为符合我的预期(而不必事先测试并删除目标目录),则可以加分。我尝试了一些cp选择,但没有任何运气。我想我会接受rsync 为了其他不知道该命令的人在这个问题上发生的解决方案。

如果这种行为不普遍,我在 CentOS 上使用 bash。

linux command-line cp history

5
推荐指数
1
解决办法
485
查看次数

如何使 wc 将标准解释为文件列表

我知道还有其他方法可以解决这个问题,但我希望能够将wcstdin 解释为文件名或文件名列表。例如,

ls JP*/std* | wc
Run Code Online (Sandbox Code Playgroud)

将与

wc JP*/std*
Run Code Online (Sandbox Code Playgroud)

我猜想调整这种行为是不可能的,但我正在编写一个脚本,这会让我的生活变得更轻松。谢谢。

pipe stdin wc

4
推荐指数
1
解决办法
6610
查看次数

标签 统计

command-line ×1

cp ×1

history ×1

linux ×1

pipe ×1

stdin ×1

wc ×1