為什麼我可以從一個位置進行通配符複製,但不能從另一個位置進行通配符複製?

為什麼我可以從一個位置進行通配符複製,但不能從另一個位置進行通配符複製?

一份通配符批量副本適合我:

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/'

相關內容