在docker exec命令中使用'*'

Wic*_*123 0 linux windows containers system docker

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

 Docker exec -t t1 ls /tmp/sth/*
Run Code Online (Sandbox Code Playgroud)

作为回报,我收到

 ls: cannot access '/tmp/sth/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

Cha*_*ffy 5

如果您想让容器内的外壳扩展您的glob,则需要……好吧……实际上是在容器内运行外壳。容器外部的那个(当然)看不到容器内部的文件,因此它传递ls了文字模式,而不是您想要的目录中的文件列表。

从而:

docker exec -t t1 sh -c "ls /tmp/sth/*"
Run Code Online (Sandbox Code Playgroud)

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