我有一个在 OS X 上运行的简单 bash 脚本,它删除特定的文件和目录并在它们的位置复制新的文件和目录。一个 Mac .app 目录包含一个空格,当我运行脚本时出现“没有这样的文件或目录”错误。
这是相关的代码。大量已被删减,因此不可能简单地对这些进行硬编码(变量必须按原样分解):
CP="cp -Rf"
INSTALL_DIR="/Applications/"
APP="The App.app"
NEWAPP="$HOME/Downloads/The App.app"
$CP "$NEWAPP " "$INSTALL_DIR$NEWAPP"
Run Code Online (Sandbox Code Playgroud)
我尝试过The\ App.app没有运气的转义,以及尝试单引号、双引号和双转义,但没有任何效果。我想有一种简单的方法可以做到这一点。
谢谢你的帮助。
我正在寻找一种递归查找扩展名为X(.js)的文件的方法,并在扩展名为Y( .ts)的同一目录中制作该文件的副本.
例如/foo/bar/foobar.js - > /foo/bar/foobar.js和/foo/bar/foobar.ts
/foo/bar.js - > /foo/bar.js和/foo/bar.ts等
我的尽职调查:我正在考虑使用find&xargs&cp和大括号扩展(cp foobar.{js,ts})但是xargs使用大括号来表示从xargs传递的文件列表.这让我感到难过,因为我刚刚发现了支撑膨胀/替换的令人敬畏的酱汁.
我觉得必须有一个单线解决方案,但我很难想出一个.
我找到了执行任务的想法:将所需目录复制到新目录,然后将该目录与新目录合并; 以递归方式在每个目录中运行重命名脚本; 使用rsync复制; 使用find,xargs和cpio.
目前看来,运行像这样的重命名脚本脚本是我最终要做的.
我得到了一个包含要复制的文件名的字符串。但是,只有其中一些文件存在。我当前的脚本如下所示:
echo $x | xargs -n 1 test -f {} && cp --target-directory=../folder/ --parents
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到test: {}: binary operator expected错误消息。
我怎样才能做到这一点?
我有一个thecus nas服务器,他们似乎对他们的模板做一些棘手的事情来显示他们的文件,目前正在启动我正在运行一个shell命令将一个文件复制到另一个文件上,所以它用我的自定义模板启动经过一段时间后(我不确定这个时间是什么)它会再次用原始文件覆盖它,我的自定义模板就不见了.
这是我目前的启动脚本:
#!/bin/bash
cp /customTemplates/login.tpl /www/img/templates/adm/login.tpl
Run Code Online (Sandbox Code Playgroud)
有没有办法,执行该复制命令,比如每60秒一次?login.tpl文件只有2kb,所以我不认为这会导致任何问题.
这样做有什么不妥吗?或者我可以使用另一种技巧吗?
我的一个文件夹中有 100 个文件。他们的名字是 1 到 100。
我想将文件 1 到 50 复制到另一个名为 的文件夹中a。像这样的事情,这不是一件好事:
cp 1 2 ... 50 ./a
Run Code Online (Sandbox Code Playgroud) 我试图将文件夹从主目录复制到 apache2 服务器根目录,即我的 Ubuntu 14.04 中的 /var/www/html。我正在使用以下命令 -
$ sudo cp文件夹/var/www/html
并得到以下结果-
cp:省略目录“文件夹名称”
我正在通过 caret::train 函数使用 rpart 构建决策树。我想要做的是将 rpart 的 minsplit 参数设置为等于 1,以便之后用 cp 修剪它。我从这里得到的是参数应该在 train 函数的 ... 中传递。但这不起作用。一个最小的可重现示例:
mod1 <- train(Species ~ ., iris, method = "rpart", tuneGrid = expand.grid(cp = 0), minsplit=1)
mod2 <- rpart(Species ~ ., iris, cp=0, minsplit=1)
Run Code Online (Sandbox Code Playgroud)
我得到的是 mod1$finalModel 和 mod2 完全不同。我希望 mod1$finalModel 就像 mod2(即完全过拟合)。我不能在 tuneGrid 上传递参数,因为它只接受一个 cp 列。
所以我的问题是:是否有插入符号在 train 函数中传递参数 minsplit=1 然后交叉验证 cp 参数?
我的Makefile摘录如下:
.PHONY: product1 product2 product3
product1 product2 product3:
$(MAKE) $(MAKEPRGFLAGS) -C $(LIBS_ROOT)/$@
cp -r `ls -A | grep ".*\.a$"` $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/
Run Code Online (Sandbox Code Playgroud)
编译完成后,当尝试复制.a文件时,出现以下错误:
/ bin / sh:命令替换:第0行:寻找匹配的“”时出现意外的EOF
/ bin / sh:命令替换:第1行:语法错误:文件意外结束
我已小心地提供了匹配的牙套。我的Makefile声明有什么问题?
我在Windows中的cygwin上运行。使用Windows格式的EOL转换从Notepad ++编辑Makefile。
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int fd1 = open(argv[1], O_RDONLY);
int fd2 = open(argv[2], O_WRONLY | O_TRUNC | O_CREAT, 0700);
if (fd1 == -1 || fd2 == -1) {
perror("cannot open file");
exit(-1);
}
char buffer[100];
int n;
while (n = read(fd1, buffer, 100) > 0) { // not working
write(fd2, buffer, n);
}
close(fd1);
close(fd2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个将一个文件的内容复制到另一个文件的 C 程序。我认为 while 循环中的读取有问题,但我不确定。