gpt4 book ai didi

bash - 'mv' 命令抛出错误但在 docker 中执行正常

转载 作者:行者123 更新时间:2023-12-02 18:45:22 26 4
gpt4 key购买 nike

当我执行以下命令时(将所有扩展名为 .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环境

最佳答案

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

因此,将您的命令传递给 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 需要真实的文件名,而不是 *

关于bash - 'mv' 命令抛出错误但在 docker 中执行正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44390360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com