在Shell中创建目录导致最后一个文件夹有额外的“\r”

mznpcxlj  于 2023-04-21  发布在  Shell
关注(0)|答案(3)|浏览(226)

我写了一个基本的shell脚本,创建目录,并更改目录到该文件夹中写入。
现在我有以下内容:

mkdir -p "Home/first/second/third"
cd "Home/first/second/third"

这会产生不希望的结果,因为文件结构如下所示:

- Home
   - first
   - second
   - third\r

我想去掉third\r上的\r,但我不确定为什么要这样做。我已经尝试了大量不同的变体,似乎无法找出添加额外\r的问题所在

w8biq8rn

w8biq8rn1#

你确定这是剧本吗
因为mkdir -p“Home/first/second/third”应该并且确实创建了类似的结构。

Home
  - first
    - second
      - third

你需要弄清楚你使用的是什么操作系统和shell。
你是在主机上创建文件还是从windows机器复制到主机上?

  • 编辑
    使用
dos2unix script.sh

来摆脱那些讨厌的\r Windows字符。

1mrurvl1

1mrurvl12#

感谢@Klox弄清楚了这一点。
在Windows计算机上编辑的文件以\r\n结尾,而在Linux计算机上编辑的文件以\n结尾。
因此,尽管代码是在Linux上编译的,但它仍然以\r\n结束创建的文件,导致在mkdir中创建的最后一个目录以\r结束。为了删除这个\r文件必须在Linux环境中写入

56lgkhnf

56lgkhnf3#

VSCode用户会发现,如果他们通过vscode创建了一个目录,\r默认情况下,在macos(ksh终端)或linux上,它也会包含这个目录。尽管vscode直接在macos/linux系统上运行。

相关问题