【问题标题】:cp command simply not copyingcp 命令根本不复制
【发布时间】:2011-07-29 02:45:11
【问题描述】:

我正在编写一个 shell 脚本,当我说

时出于某种原因
cp full_path/* full_path_directory/ 

我得到一个错误。我已经回显了命令,当我运行它在交互式 shell 中回显的内容时,它可以工作。我不知道为什么它不能在 shell 脚本中工作。我使用的是完整路径而不是绝对路径。我试图在目标目录的末尾加一个斜杠,然后不加斜杠……还能是什么?

错误:

cp: /opt/local/apache2/htdocs/baseline/*: No such file or directory

所以当我回显出来时,我得到:

/opt/local/apache2/htdocs/baseline/* /opt/local/apache2/htdocs/test/

【问题讨论】:

  • 您输入的确切命令是什么?
  • 发布确切的命令行; ls -al 在该基线目录上的输出是什么?
  • @Kevin: cp -r 只需要递归复制——这也许是不需要的。但是-如果这是目标,则不会出现该错误消息。谁投票赞成?

标签: linux shell terminal


【解决方案1】:

它的意思是它所说的。 /opt/local/apache2/htdocs/baseline/ 目录中没有文件,或者您没有读取该目录的权限。 ls 告诉你什么?

【讨论】:

  • 里面有文件。查看它们是 -rw-r--r-- 的文件,但我以 root 身份运行脚本...运行脚本时我说 sudo。
  • 目录本身的权限是什么? ls -ld ...
  • @Bohemian 不正确。 OP专门说“shell脚本”。并且还从 shell 发出 echo 命令。
  • 我认为 shell 脚本会做任何交互式 shell 会做的事情。因此,如果它回显出某些内容,它将完全在 shell 脚本中执行此操作。显然,它确实将星号作为文件名。
  • 默认的 shell 行为是扩展通配符,但如果不能扩展(不匹配),它会按字面意思(使用通配符)将其提供给程序。回显应该显示所有匹配项。既然没有,那就是没有匹配的文件的另一个迹象。
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2018-02-04
  • 2022-01-06
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多