有趣的问题涉及到如何 - 父母和父母的问题。作品

时间:2015-04-27 20:32:26

标签: path csh cp parents

我编写了一个简短的csh脚本来读取文件,该文件包含要复制的文件的路径,然后将这些文件复制到目录中:

1 #!/bin/csh
2 #
3 # This script copies source and executable files modified to solve issues 
4 # brought up by Veracode.
5 #
6 
7 set tempdir = '~/updatedfiles2'
8 
9 foreach line ( "`cat modifiedFiles`" )
*************here is the cp line**************
10    `cp -a $line $tempdir`
**********************************************
11 end

以前工作正常。我决定在同一个tempdir目录下以目录树的形式保留这些文件的路径,因为当具有不同路径的文件具有相同名称时会发生冒号。 (即/vobs/emv/integratedClient/jniWrapper/OEMIMAKEFILE/vobs/mv_components/utilities/general/OEMIMAKEFILE

所以,我尝试使用--parents选项,如下所示:

1 #!/bin/csh
2 #
3 # This script copies source and executable files modified to solve issues 
4 # brought up by Veracode.
5 #
6 
7 set tempdir = '~/updatedfiles2'
8 
9 foreach line ( "`cat modifiedFiles`" )
*************here is the cp line**************
10    `cp -a --parents $line $tempdir`
**********************************************
11 end

当我测试它时,它开始尝试从根目录开始复制我的整个系统,这不是我想要的效果。我只是试图复制特定文件,在复制时保持其目录结构。

我找到了--parents的一些解释,但没有一个描述我所看到的事情。是因为我使用--parents错了吗?这是我的输入文件吗?我不确定。

modifiedFiles的内容(tempdir的值)如下所示:

...
4 /vobs/emv/C_API/APIPrivate.cpp
5 /vobs/mv_components/utilities/class/Array.c
6 /vobs/mv_components/utilities/class/String1.c
7 /vobs/mv_components/export_functions/code/write_nastran_ortho3_none.c
...

/vobs是根目录,因此这可能会影响--parents。有没有人听说过无限制的递归复制,尽管有特定的文件路径且没有-r参数?我误解了--parents吗?

1 个答案:

答案 0 :(得分:0)

哇,我觉得愚蠢。

经过一遍又一遍的审视,我发现了我做错了什么。

上面的实际命令是在csh脚本中。当命令被包含在csh脚本中的前面标记(``)中时,执行该命令,并且shell使用该命令的输出。因此我正在执行cp,然后在shell中执行输出。我不确定为什么它是递归复制向上,但删除那些前面的刻度修复了一切。在我原来的“工作”脚本中忽略了之前的错误,当我添加--parents选项时,已经损坏的脚本突破了更多。

故事的道德,小心前面的嘀嗒声!

对于任何有兴趣的人,请:

...
9 foreach line ( "`cat modifiedFiles`" )
*************here is the cp line**************
10    `cp -a --parents $line $tempdir`
**********************************************
11 end
...

之后:

...
9 foreach line ( "`cat modifiedFiles`" )
*************here is the cp line**************
10    cp -a --parents $line $tempdir
**********************************************
11 end
...

此外,输入文件中的两个条目以C样式注释掉 /* comment */ 这导致从根目录进行递归复制。哈哈....哎。愚蠢的我。