迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

解决在 Bash(或 Cygwin)上找不到 R 命令

作者:迹忆客 最近更新:2023/06/09 浏览次数:

命令的行为有时可能与您预期的不同,即使您看起来一切都正确,例如 bash 的情况:'\r': command not found 或类似的错误消息,例如 syntax error near unexpected token $'\r'

当您看到此类错误消息时,您必须理解错误消息。 在这种情况下,它必须处理回车符 \r,它指示终端将光标移动到行的开头。

本文将帮助您了解错误消息以及如何解决或防止此类错误再次发生。


解决bash: '\r': command not found With Notepad++

不同的操作系统行为不同,Windows 通常是不同的。 如前所述,\r 字符的存在是导致此错误的原因。

\r 与换行符有关,换行符在不同操作系统中的管理方式不同。

与 Unix 和现代 Mac 不同,Windows 使用不同的换行样式,它使用 \n(LF - 换行)和 \r(CR - 回车)作为换行字符样式和旧 Mac(OS X 之前的 macOS)。

Unix、Linux 和现代 Mac 仅使用 \n 来开始一个新行,这在终端处理文本时很重要。

因此,如果您是 Windows PC(可能运行 Cygwin、Git Bash 或 WSL2 - 适用于 Linux 的 Windows 子系统),您尝试运行的脚本很可能包含您可能拥有的 CRLF 字符(\r\n 作为换行符) 在 Windows 的默认记事本编辑器中看到。

windows notepad

有了这个以及您创建的脚本或文件的可能性,您正在使用基于 Windows 的编辑器运行命令,您有 Windows 样式(或 CRLF)行尾并且需要摆脱 CRLF 字符。

一个简单的解决方案是使用像 Notepad++ 这样的编辑器将文件格式更改为 Unix 字符格式 LF,这样它就不会显示以下命令。

bash: '\r': command not found
syntax error near unexpected token `$'\r'
`fi

在您的操作系统(Windows 或 Mac)上使用 Notepad++ 打开您正在使用的脚本,并通过双击 Windows (CR LF)/Macintosh (CR) 选项卡并更改为 Unix (LF) 来更改文件格式设置。

notepadpluspluss

之后,在新配置的脚本上运行相同的命令,你应该不会有任何问题。

让我们使用包含以下内容的简单脚本文件重新创建相同的问题。

#!/bin/bash

echo "Testing the Carriage Return Character"
echo "Behavior"
echo "Wow! It works"

预期输出(没有错误):

Testing the Carriage Return Character
Behavior
Wow! It works

我们保存了默认Windows风格结尾的脚本文件,运行脚本文件的结果如下。

script.sh

虽然它仍然输出 echo 语句,但它给了我们 '\r': command not found。 让我们用 Unix (LF) 格式保存同一个文件。

script unix

现在,错误消息不存在。


解决 bash: '\r': command not found With dos2unix

当您在终端(或 Cygwin 终端)中时,您可能不想使用文本编辑器进行一些行结束更改。 这就是 dos2unix 与我们的 bash: '\r': command not found 问题有关的地方。

使用 dos2unix,您可以将 DOS (Windows) 或 Mac 格式换行符中的文件 - 纯文本转换为脚本 - 转换为 UNIX 格式换行符。

我们的 script.sh 上的一个简单的 dos2unix 命令将解决我们的错误消息。

dos2unix.exe script.sh

您可能会收到未找到的命令,尤其是当您使用 Windows 上的 Cygwin 终端并且尚未安装该软件包时。

Linux 附带了大多数典型的发行版,但如果你没有,你可以使用下面的命令或按照安装指南进行操作。

sudo apt install tofrodos

要在 macOS 上安装 dos2unix,您可以安装 MacPorts,然后使用下面的命令或通过 Brew 按照安装指南进行操作。

sudo port install dos2unix

要在 Cygwin 上安装,您需要单击安装文件以更新现有安装。 之后,您应该会看到“选择包”屏幕和一个搜索栏。

select packages

使用搜索栏,搜索 dos2unix 并双击跳过值(您应该会看到版本号)。 之后,单击下一步并完成安装。

现在,让我们在脚本上尝试 dos2unix 命令。

dos2unix

如您所见,该命令将 script.sh 文件更改为命令输出所示的 Unix 格式,并且当我们运行相同的脚本时,错误消息不再存在。

dos2unix: converting file script.sh to Unix format...

解决 bash: '\r': command not found With sed

sed 是一个 Unix 实用程序,可帮助我们解析和转换可通过 Linux 终端(包括 Cygwin)获得的文本。 有了它,我们可以过滤掉尾随的 \r 字符,而不会导致我们的脚本出现问题。

下面的命令可以帮助删除 \r 字符并消除我们在使用某些 RegEx 表达式和实用程序时遇到的错误消息。

sed -i 's/\r$//' script.sh

在您的情况下,您可以将 script.sh 替换为文件名。

让我们在 CRLF 样式的脚本 script.sh 上尝试使用 sed 命令。

sed

现在,我们摆脱了 $ '\r': command not found 的困扰。

使用这三种替代方法,您可以通过在工作时将脚本文件保存为 Unix (LF) 格式来轻松避免此问题。 但是,如果它是我们可以阻止的并且只是我们碰巧可以访问的文件,我们可以使用 dos2unix 或 sed 命令来处理错误。

上一篇:解决 Nodemon Command Not Found

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

解决 Nodemon Command Not Found

发布时间:2023/06/09 浏览次数:122 分类:操作系统

本文将讨论如何解决和处理 nodemon command not found 错误。使用npm解决Nodemon Command Not Found 通过 npm,我们可以安装有用的功能库、包和工具来改进我们在 NodeJS 平台上的开发。

Bash 中的错误处理

发布时间:2023/06/09 浏览次数:134 分类:操作系统

本文介绍了 bash 中的错误处理。 请记住,了解退出代码、选项(如 errexit 和 trap)使我们能够构建健壮的脚本并更有效地管理 bash 问题。Bash 中的退出代码 基于退出代码处理错误是检测命令失败

Bash 中 Curl 命令的 Urlencode 数据

发布时间:2023/06/09 浏览次数:175 分类:操作系统

本文将教我们如何在 bash 中为 curl 命令对数据进行 urlencode。 让我们从 curl 命令的语法开始。Bash 中的 curl 命令 curl 命令的基本语法如下:

在 Bash 中获取绝对路径

发布时间:2023/06/09 浏览次数:96 分类:操作系统

在这篇 Bash 文章中,我们将学习在 Linux 中获取绝对路径的不同方法。 我们还将学习一些不同的 Linux 命令来获取文件的绝对路径。

Bash 抑制输出

发布时间:2023/06/09 浏览次数:60 分类:操作系统

本文将解释使用 Bash 抑制命令输出的方法。 此外,我们还将研究将输出重定向到文件以供以后使用。Shell 和脚本简介

Bash Nohup 与 & 的区别

发布时间:2023/06/09 浏览次数:137 分类:操作系统

这篇简短的文章介绍了通过 Bash 在后台运行 Linux 进程的 nohup 命令和 & 控制运算符。 此外,我们将进一步研究 nohup 和 & 之间的主要区别。在后台运行 Linux 进程

在 Bash 中重命名文件

发布时间:2023/06/09 浏览次数:50 分类:操作系统

在本文中,我们将介绍一种方法,通过它您可以轻松地重命名目录中的所有文件。 此外,我们将看到必要的示例和解释,以使主题更容易理解。在 Bash 中使用 mv 命令重命名文件

在另一个 Bash 脚本中包含脚本文件

发布时间:2023/06/09 浏览次数:79 分类:操作系统

本文讨论了将一个 Bash 脚本文件包含到另一个脚本文件中的不同方法。在 Bash 脚本中包含文件 在 Bash 中包含或重用脚本非常简单。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便