Articles of cp

将bash shellvariables传递给Makefile?

在我的env.sh里面: export BIN="/home/user/stuff" 在我的Makefile里面: 等等等等 TARGET = filetobeinstalled 等等等等 install: cp $(TARGET) $(BIN) 在运行make install之前,我在我的bash shell中定义了env vars: source /home/user/env.sh 。 我仔细检查,这些环境variables正在工作,通过在运行Makefile的shell中inputecho $BIN ,这给了我适当的响应( /home/user/stuff )。 所以,我试图将在shell提示符处定义的$BINvariables与source一起传递给引用$BIN Makefile中 ,但是没有定义它。 不幸的是,当我运行make install ,它并没有从输出中看到$BIN $ source /home/user/env.sh $ echo $BIN $ /home/user/stuff $ make install make[1]: Entering directory `/home/user/stufftoinstall' cp filetobeinstalled cp: missing destination file operand after `filetobeinstalled' […]

对于cp命令,如何理解“新”文件

我检查了man cp ,并在Ubuntu 14.04做了一些实验。 我发现cp -u通过比较修改时间来更新文件。 我对么? 在手册页上,它指出: -u,–update 仅在SOURCE文件比目标文件新或目标文件丢失时才复制 我找不到“新”的定义,一般情况下比较访问时间,修改时间还是更改时间?

CP错误(与ls和grep结合使用) – cp:不能stat

当我使用grep进行ls时,结果是非常需要的:dll的列表,如下所示: $ ls -R | grep "dll$" boost_chrono-vc90-gd-1_47.dll boost_chrono-vc90-mt-gd-1_47.dll boost_chrono-vc90-1_47.dll boost_chrono-vc90-mt-1_47.dll boost_date_time-vc90-gd-1_47.dll boost_date_time-vc90-mt-gd-1_47.dll boost_date_time-vc90-1_47.dll boost_date_time-vc90-mt-1_47.dll boost_filesystem-vc90-gd-1_47.dll boost_filesystem-vc90-mt-gd-1_47.dll boost_filesystem-vc90-1_47.dll … 但是当我试图复制所有这些DLL到目的地说../,我得到错误,没有文件被复制: $ cp `ls -R | grep "dll$"` ../ cp: cannot stat `boost_chrono-vc90-gd-1_47.dll': No such file or directory cp: cannot stat `boost_chrono-vc90-mt-gd-1_47.dll': No such file or directory cp: cannot stat `boost_chrono-vc90-1_47.dll': No such file or directory […]

Linux脚本cp改变文件名

我正在尝试做一个回收站。 我有一个删除function,将选定的文件发送到回收站,并将其存储目录的位置添加到文件。 问题是当我使用尾部从脚本获取位置。 尽pipe该脚本起作用,它将文件重命名为尾部。 任何人都可以解释为什么cp重命名文件? 以下是我相信问题所在的片段: destination=(tail $1 -n 1) cp ~/Recycling/$1 $destination rm ~/Recycling/$1 谢谢

是否有任何副本更新替代命令?

我目前正在使用BusyBox v1.16.2, cp命令不提供更新选项: … -u, –update copy only when the SOURCE file is newer than the destination file or when the destination file is missing 有没有其他的select? 我想使用find –newer参数,但我想弄清楚如何做到这一点(经过几次尝试…)。 BusyBox v1.16.2 multi-call binary. Usage: cp [OPTIONS] SOURCE DEST Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY Options: -a Same as -dpR -R,-r Recurse -d,-P Preserve […]

在Linux命令行中复制多个子目录中的文件

假设我有以下子目录 ./a/, ./b/, ./c/, … 也就是说,在我目前的工作目录下是这些子目录的a/ , b/和c/ ,而在这些子目录中都是文件。 在目录中, a/是文件a.in ,在目录b/是文件b.in等等。 我现在要将每个.in文件复制到一个.out文件,即a.in到a.out和b.in到b.out ,并且我希望它们驻留在它们被复制的目录中。 所以a.out将在目录a/find。 我尝试了各种不同的方法,比如 find ./ -name '*.in'|cp * *.out 这不起作用,因为它认为*.out是一个目录。 也试过 ls -d */ | cd; cp *.in *.out 但它会列出子目录,进入其中每一个,但不会让cp做它的工作(这仍然是行不通的) 该 find ./ -name '*.in' 命令工作正常。 有没有办法pipe道参数赋值运算符? 例如 find ./ -name '*.in'| assign filename=|cp filename filename.out 其中assign filename=赋予文件的每个.in文件的值。 实际上,如果赋值可以摆脱.in文件扩展名,那么会更好一些,而不是得到a.in.out我们会得到首选的a.out 感谢您的时间。

使用cp时文件大小发生变化

我遇到以下问题。 当我在Linux中使用cp命令将文件A复制到文件B时,这些文件的大小是不同的,例如A是6.4M,B是7.0M。 即使我在相同的目录中执行此操作也是如此(以避免不同驱动器上的块大小不同)。 这是关于什么的? 如何避免? 它会改变文件吗? 另外还有一些奇怪的行为。 如果我把文件A对应到文件B并且试图立即检查B的大小,那么它给出0或者例如6.2M,一段时间之后B的大小是7.0M并且是恒定的。 是否有可能捕获一些中间复制结果? 那为什么这么慢?

如果从shell脚本执行,cp命令将不会运行

我有非常简单的shell脚本 #!/bin/bash cp -rf /var/www/ksite/app2/* /var/www/ksite/app echo "—-" echo "done" 但似乎cp命令失败 如果我执行 cp -rf /var/www/ksite/app2/* /var/www/ksite/app 从terminal一切工作正常。 有人可以告诉我如何将cp包含在shell脚本中吗? 谢谢

为什么Linux命令CP在CLI和脚本中的行为有所不同?

我想复制一堆Verilog / systemverilog源,所以我用通配符expression式来使用CP: cp <some_dir>/*.{v,sv,svh} . 有用。 但是,当我把它放到一个完全一样的脚本的脚本,CP命令失败,日志: cp: cannot stat `../../mytest/spiTest/*.{v,sv,svh}': No such file or directory 这是怎么发生的? PS:我使用bash作为shell。 这是我的脚本: #!/bin/bash rdir=../../mytest/spiTest f1="$rdir/bench.lst" f2="$rdir/cphex" #the script to copy rom data f3="$rdir/make*" #makefile scripts f4="$rdir/*.hex" #rom files f5="$rdir/*.{v,sv,svh}" #testbench files echo 'Copying files…' cp $f1 $f2 $f3 $f4 . cp $f5 . 我确实改变了第一行 #!/bin/bash -vx 并再次运行这个脚本,我得到: […]

如果在perl脚本中运行cp,将覆盖现有的文件?

我有一个程序,将生成PNG图像的像素强度值,并且通常这些图像必须覆盖与同名的新文件,因为原始的结果文本文件的某些故障。 我有的问题是,当我复制该文件的新版本做目的地目录我必须首先删除具有相同名称的目的地文件或将目的地文件覆盖? system ("rm -rf /home/alos/Y2H_images/all$intensity"); system ("cp $intensity /home/alos/Y2H_images/all"); 或者将在Perl脚本中执行复制命令自动覆盖文件? 谢谢