【问题标题】:'mv' command throwing error but executing fine in docker'mv' 命令抛出错误,但在 docker 中执行良好
【发布时间】:2017-11-07 11:47:24
【问题描述】:

当我执行以下命令时(将所有带有.txt.sbreaks 扩展名的文件移动到另一个文件夹):

sudo docker exec name mv xyz/data/outputs/*.{sbreaks,txt} <>/data/spare

我收到以下错误:

mv: cannot stat ‘xyz/data/outputs/*.sbreaks’: No such file or directory
mv: cannot stat ‘xyz/data/outputs/*.txt’: No such file or directory

但是,当我通过 sudo docker exec -it name bash 进入 docker 并执行相同的命令:mv xyz/data/outputs/*.{sbreaks,txt} xyz/data/spare 时,它执行得很好。

我在这里做错了什么?

PS:本地和Docker容器都是ubuntu环境

【问题讨论】:

  • &lt;&gt; 代表什么?
  • @Whymarrh 用正确的名称编辑

标签: bash ubuntu docker


【解决方案1】:

那是因为 * 是由 shell 程序(即 bash)扩展的。 (Psst,这是典型的面试题)。

因此,将您的命令传递给 shell,让它为您启动 mv

sudo docker exec cypher bash -c 'mv xyz/data/outputs/*.{sbreaks,txt} .......'

当您执行docker exec some_program some_param 时,docker 搜索some_program 并直接执行它而不做任何额外的操作,并将some_param 作为参数传递(在您的情况下为星号)。 mv 需要真实的文件名,而不是 *

【讨论】:

  • TIL。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2017-04-16
  • 2022-06-16
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
相关资源
最近更新 更多