我的主机是windows,我使用的是docker桌面。当我使用命令docker cp
将文件从windows复制到Ubuntu容器时,json文件最终会包含回车符(即^M(。我如何删除它们?
障碍:
docker cp
windows命令会将json复制为只读- Docker镜像从某个地方拉过来,我只能访问没有
chmod
权限的用户jovyan。docker exec -u 0
会返回错误Error response from daemon: Multiple IDs found with provided prefix: 0
,所以我也不能只以root身份登录 - 尝试WinSCP将文件移动到容器中,但返回错误";远程侧意外地关闭了网络连接";。我正在使用SFTP,主机名为localhost,端口号已填充。我将密码留空,因为我认为用户jovyan不需要密码,因为
docker exec
会在不询问密码的情况下直接连接到此用户
这里的简单答案是安装转换程序,转换行尾并处理讨厌的回车。对你来说,dos2unix总是一个不错的选择。
安装:
sudo apt install dos2unix
用法:
dos2unix <filename>
^M
相当于r
字符的键盘。sed
是一个默认安装在Ubuntu发行版中的程序,因此您应该能够运行它来从Ubuntu容器中的json文件中删除这些字符:
sed -i 's/r$//' FILENAME
如果你想知道命令的作用,这里有信息:
sed
是一个可以更改文件的流编辑器-i
表示修改到位s/r$//
是一个替换表达式,表示将行末尾的r
($
表示行的末尾(替换为零