Skip to main content
 首页 » 编程设计

linux之奇怪的差异行为

2023年11月22日19qq78292959

我有一个名为 this.txt 的文件,其中包含以下内容:

a 
b 
c 
d 

我使用生成的:ls/home > this.txt

然后我创建一个名为 that.txt 的文件,其中包含以下内容:

a 
c 
d 
f 

我使用生成的:ssh -p 1111 root@176.178.1.8 'ls/home' > that.txt

当我使用 diff this.txt that.txt 比较两者时,我得到了正常的结果。

然后我使用 expect 脚本获取文件 that2.txt 以避免键入 ssh 连接的密码,包含此内容

a 
c 
d 
f 

使用 cat 我比较(视觉上)两个文件并且是相同的,但是当我使用 diff this.txt that.txt 我得到的结果毫无意义(它表示 this.txt 中没有任何内容在 that2.txt 中)。

此外,如果我使用 diff that.txt that2.txt,我会得到毫无意义的结果。

可能是因为我使用了两个不同的解释器(因为我使用 expect 和 bash)并且文件编码不同?有什么想法吗?

PD:希望我解释了自己。我不会说英语,这是我的第一个问题。

请您参考如下方法:

我假设您的文件在行尾有空格或有不同的行尾标记,可能两者都有。请比较 od -c that.txtod -c that2.txt 的输出。此外,可能值得检查文件大小。

哦,我要补充一点,您不需要将密码放入 expect 脚本中。 ssh 可以使用公钥对,这是一种 更安全的选择,而且设置起来并不难。检查 man ssh-keygen 开始。