使用 docker cp 时 json 文件中的 carriage-return 字符 ^M
carriage-return character ^M in json file when using docker cp
我的主机是 windows,我使用的是 docker 桌面。当我使用命令 docker cp
将文件从 windows 复制到容器 Ubuntu 时,json 文件最终将包含回车符-return 字符(即^M)。我怎样才能删除它们?
障碍:
docker cp
windows 命令会将 json 复制为 root 只读
- Docker 图片从某处拉取,我只能访问没有
chmod
权限的用户 jovyan。 docker exec -u 0
会 return 错误 Error response from daemon: Multiple IDs found with provided prefix: 0
所以我也不能只以 root 身份登录。
- 尝试 WinSCP 将文件移动到容器中,但 return 错误提示“远程端意外关闭网络连接”。我正在使用主机名作为本地主机和端口号的 SFTP。填充。我将密码留空,因为我认为用户 jovyan 不需要密码,因为
docker exec
会直接连接到该用户而不询问密码。
这里的简单答案是安装转换程序,转换行尾并为您处理讨厌的回车returns,dos2unix 总是一个很好的选择。
安装:
sudo apt install dos2unix
用法:
dos2unix <filename>
^M
是 \r
字符的键盘等价物。 sed
是一个默认安装在 Ubuntu 发行版中的程序,因此您应该能够 运行 从 Ubuntu 容器中的 json 文件中删除这些字符:
sed -i 's/\r$//' FILENAME
如果您想知道该命令的作用,这里是信息:
sed
是一个可以改变文件的流编辑器
-i
表示原地修改
s/\r$//
是一个替换表达式,表示用空 替换行尾的 \r
($
表示行尾)
我的主机是 windows,我使用的是 docker 桌面。当我使用命令 docker cp
将文件从 windows 复制到容器 Ubuntu 时,json 文件最终将包含回车符-return 字符(即^M)。我怎样才能删除它们?
障碍:
docker cp
windows 命令会将 json 复制为 root 只读
- Docker 图片从某处拉取,我只能访问没有
chmod
权限的用户 jovyan。docker exec -u 0
会 return 错误Error response from daemon: Multiple IDs found with provided prefix: 0
所以我也不能只以 root 身份登录。 - 尝试 WinSCP 将文件移动到容器中,但 return 错误提示“远程端意外关闭网络连接”。我正在使用主机名作为本地主机和端口号的 SFTP。填充。我将密码留空,因为我认为用户 jovyan 不需要密码,因为
docker exec
会直接连接到该用户而不询问密码。
这里的简单答案是安装转换程序,转换行尾并为您处理讨厌的回车returns,dos2unix 总是一个很好的选择。
安装:
sudo apt install dos2unix
用法:
dos2unix <filename>
^M
是 \r
字符的键盘等价物。 sed
是一个默认安装在 Ubuntu 发行版中的程序,因此您应该能够 运行 从 Ubuntu 容器中的 json 文件中删除这些字符:
sed -i 's/\r$//' FILENAME
如果您想知道该命令的作用,这里是信息:
sed
是一个可以改变文件的流编辑器-i
表示原地修改s/\r$//
是一个替换表达式,表示用空 替换行尾的
\r
($
表示行尾)