问题

问题

该命令sha256sum正确计算了.sha256文件中指示的校验和:

user@myHostname:~/Desktop/RT_N16/Merlin_JohnsFork$ sha256sum RT-N16_3.0.0.4_374.43_2-39L3j9527.trx
545927719c46e359a0db6bf9dcb348f99c0f3d8786725780cb182994c61b19be  RT-N16_3.0.0.4_374.43_2-39L3j9527.trx

所有文件都位于同一目录中。我做到了不是创建.sha256 文件的内容:

user@myHostname:~/Desktop/RT_N16/Merlin_JohnsFork$ cat sha256sum.sha256 
545927719c46e359a0db6bf9dcb348f99c0f3d8786725780cb182994c61b19be  RT-N16_3.0.0.4_374.43_2-39L3j9527.trx

sha256sum命令读取.sha256文件并返回错误:

user@myHostname:~/Desktop/RT_N16/Merlin_JohnsFork$ sha256sum -c sha256sum.sha256
sha256sum: 'RT-N16_3.0.0.4_374.43_2-39L3j9527.trx'$'\r': No such file or directory
: FAILED open or read_2-39L3j9527.trx
sha256sum: WARNING: 1 listed file could not be read

问题

  • 上述语法不正确还是.sha256文件有问题?

  • 该命令是否尝试打开 filename= _2-39L3j9527.trx

答案1

如果你仔细观察,你会发现这条信息实际上是

filename$'\r': No such file or directory

$'\r'是 shell 告诉您\r字符串末尾有一个回车符 ( ) 的方式。这表示文件sha256sum.sha256具有 DOS 或 Windows 样式的行尾 (CRLF),而不是 Unix 标准 LF 行尾。

您可以使用以下方法之一修复该文件如何将 Windows 行尾更改为 Unix 版本

dos2unix您可以使用专门为此设计的程序:

dos2unix file.txt

将取代所有线路上的所有 CR,并投入运营。

要将输出保存到不同的文件中:

dos2unix -n file.txt output.txt

您可能需要先安装它:

sudo apt-get install dos2unix

相关内容