在 docker exec 命令中使用“*”

问题描述 投票:0回答:1

我正在尝试在运行的 docker 容器中运行特定命令。

 Docker exec -t containername1 ls /tmp/sth/*

作为回报我收到

 ls: cannot access '/tmp/sth/*': No such file or directory

事实上,当我在容器内执行命令时,一切正常。容器使用 Debian,本地计算机使用 Windows。我试图找到它,但找不到。

linux windows docker containers system
1个回答
43
投票

如果你想要一个 shell 在容器内来扩展你的 glob,你需要......嗯......实际上在容器内运行一个 shell。容器外部的人看不到容器内部的文件(当然),因此它传递

ls
文字模式,而不是您想要的目录中的文件列表。

因此:

docker exec -t t1 sh -c "ls /tmp/sth/*"

...请注意,我通常会在命令中使用单引号,但由于您的主机是 Windows,因此使用双引号,因为它们更有可能从

cmd.exe
开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.