Daw*_*y33 1 bash ubuntu docker
当我执行以下命令(将带有.txt
和.sbreaks
扩展名的所有文件移动到另一个文件夹)时:
sudo docker exec name mv xyz/data/outputs/*.{sbreaks,txt} <>/data/spare
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
mv: cannot stat ‘xyz/data/outputs/*.sbreaks’: No such file or directory
mv: cannot stat ‘xyz/data/outputs/*.txt’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,当我进入docker sudo docker exec -it name bash
并执行相同的命令时:mv xyz/data/outputs/*.{sbreaks,txt} xyz/data/spare
它执行正常.
我在这做错了什么?
PS:本地和Docker容器都是ubuntu环境
那是因为它*
是由shell程序(即bash)扩展的.(Psst,这是典型的面试问题).
所以将你的命令传递给shell并让它mv
为你启动:
sudo docker exec cypher bash -c 'mv xyz/data/outputs/*.{sbreaks,txt} .......'
Run Code Online (Sandbox Code Playgroud)
当你这样做时docker exec some_program some_param
,docker some_program
直接搜索并执行它而不做任何额外的事情,只是some_param
作为参数传递(在你的情况下是一个星).mv
期望真正的文件名,而不是*
.
归档时间: |
|
查看次数: |
625 次 |
最近记录: |