为什么我可以从一个位置进行通配符复制,但不能从另一个位置进行通配符复制?

为什么我可以从一个位置进行通配符复制,但不能从另一个位置进行通配符复制?

一个通配符批量复制对我有用:

sudo cp /home/jenkins/dist/*.war /opt/tomcat/webapps/

但另一个类似的却不行:

sudo cp /opt/tomcat/webapps/*.war /home/jenkins/archive
cp: cannot stat '/opt/tomcat/webapps/*.war': No such file or directory

但实际上两个文件夹都有这样的文件:

sudo ls -l /opt/tomcat/webapps/
total 330536
drwxr-x--- 5 tomcat paysoft      4096 Sep 26 02:12 ROOT
-r-x------ 1 tomcat tomcat  127981631 Sep 26 02:10 ROOT.war
drwxr-x--- 4 root   root         4096 Feb 26  2023 site-api
-r-x------ 1 tomcat tomcat  106277537 Sep 26 02:11 site-api.war
drwxr-x--- 4 tomcat paysoft      4096 Sep 26 02:11 web-api
-r-x------ 1 tomcat tomcat  104181448 Sep 26 02:11 web-api.war

sudo ls -l /home/jenkins/dist/
total 569312
-rw-r--r-- 1 jenkins jenkins 112948432 Aug  1  2022 money-transfer-web.jar
-rw-r--r-- 1 jenkins jenkins 127981631 Sep 26 02:03 ROOT.war
-rw-r--r-- 1 jenkins jenkins 106277537 Sep 26 02:03 site-api.war
-rw-r--r-- 1 jenkins jenkins 131561362 Sep 26 02:03 terminal-server.jar
-rw-r--r-- 1 jenkins jenkins 104181448 Sep 26 02:03 web-api.war

是什么原因?

PS 目录本身是:

sudo ls -l /home/jenkins/
total 8
drwxr-xr-x 2 root    root    4096 Jul 11 15:20 archive
drwxr-xr-x 2 jenkins jenkins 4096 Jun 30  2022 dist

答案1

sudo cp /home/jenkins/dist/*.war /opt/tomcat/webapps/

在这里,您的(非特权)shell 将在将结果命令行传递给 sudo 之前尝试扩展“*” - 因此其行为将取决于您从 /home/jenkins/dist/ 读取的权限。

您没有向我们展示目录的权限,只展示了目录的内容。

相反,在以下情况下,扩展由 root shell 完成:

sudo 'cp /home/jenkins/dist/*.war /opt/tomcat/webapps/'

相关内容