You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell创建目录时最后一级目录名末尾多出\r字符的问题如何解决

问题成因

你遇到的是跨平台换行符不兼容问题:

  • Windows系统的文本文件默认换行符为CRLF(即\r\n,回车+换行两个字符)
  • Linux/macOS等类Unix系统的文本文件默认换行符为LF(即\n,仅换行一个字符)
    你编写的Shell脚本如果是在Windows环境下保存、或者通过Windows系统传输过,会自动把换行符替换为CRLF格式,当你在类Unix环境下执行这个脚本时,系统不会把行尾的\r当作换行符的一部分,而是会直接把它拼接到你写的路径参数末尾,最终就生成了带\r后缀的third目录。

解决办法

1. 修复Shell脚本的换行符格式

可以用以下任意一种方法把脚本的换行符转换为Unix兼容的LF格式:

  • 用dos2unix工具直接转换:执行命令dos2unix 你的脚本文件名.sh即可一键替换所有换行符
  • 如果没有安装dos2unix,可以用sed命令处理:sed -i 's/\r$//' 你的脚本文件名.sh,这个命令会直接删除脚本所有行尾的\r字符
  • 如果你是用VS Code、Notepad++等编辑器写脚本,可以直接在编辑器右下角把换行符格式从CRLF改成LF之后再保存脚本

2. 删除已生成的带\r后缀的异常目录

直接用普通的rmdir命令识别不到带特殊字符的目录名,可以用以下方法处理:

  • 先进入Home/first/second目录,执行命令rmdir third$'\r',这里$'\r'是Shell的ANSI-C转义写法,可以准确匹配回车字符
  • 如果上述方法无效,可以用通配符匹配删除:rmdir third?,注意要确认当前目录下没有其他以third开头加单个字符的目录再执行,避免误删

内容的提问来源于stack exchange,提问作者lime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:27:03