当使用docker-cp时,json文件中的回车符^M



我的主机是windows,我使用的是docker桌面。当我使用命令docker cp将文件从windows复制到Ubuntu容器时,json文件最终会包含回车符(即^M(。我如何删除它们?

障碍:

  1. docker cpwindows命令会将json复制为只读
  2. Docker镜像从某个地方拉过来,我只能访问没有chmod权限的用户jovyan。docker exec -u 0会返回错误Error response from daemon: Multiple IDs found with provided prefix: 0,所以我也不能只以root身份登录
  3. 尝试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($表示行的末尾(替换为零

最新更新