kurokirasama Asked: 2018-06-30 08:20:52 +0800 CST2018-06-30 08:20:52 +0800 CST 2018-06-30 08:20:52 +0800 CST Linux 等效于 windows cmd 命令 772 我正在迁移到 Linux,我需要转换以下 Windowscmd命令: fc file1.txt file2.txt | find /i "no se han encontrado diferencias" > nul && set equal=yes 我认为fc可以替换为diffor comm, findwith grep,但我不知道如何做这&&部分,也许是一个if声明...... grep shell 3 个回答 Voted Best Answer Stéphane Chazelas 2018-06-30T08:35:37+08:002018-06-30T08:35:37+08:00 猜测这些 Windows 命令的作用,我会说 POSIXsh脚本中的等价物是: equal=no cmp -s file1 file2 && equal=yes 如果可以读取两个文件并具有相同的内容(字节到字节),这会将equal变量设置为。yes 作为 的替代方案cmp -s,在包括基于 Linux 的系统在内的某些系统上,您可以使用diff -q. diff -q(q对于quiet),与大多数cmp -s(s对于quiet )相反,如果无法读取任何文件,则会报告错误消息。diff虽然和的 GNU 实现cmp首先检查这两个文件是否是同一个文件的路径(包括作为另一个文件的硬链接或符号链接)或大小不同以节省阅读它们的busybox时间,cmp但虽然busybox diff确实如此。因此,在那些使用 的系统上,出于性能原因busybox,您可能更喜欢。diff -q Stephen Harris 2018-06-30T08:33:59+08:002018-06-30T08:33:59+08:00 您的 windows 命令似乎将两个文件与该fc命令进行比较,并在输出中搜索“无差异”消息;如果我们看到该消息,则将变量设置equal为yes. unix命令cmp可以用来比较文件,如果匹配则返回零输出,我们可以直接测试,所以不需要“搜索输出”功能。 [[ -z "$(cmp file1 file2 2>&1)" ]] && equal=yes ivanivan 2018-06-30T08:32:42+08:002018-06-30T08:32:42+08:00 在bashshell 中,&&操作符是用于进程控制的逻辑和,如果第一个进程没有因错误退出,则允许运行第二个进程。双管道 ( ||) 的作用类似,但它是一个 OR 语句,如果前面的命令不成功,它将运行。 因此,给定一个名为的文件sample_file,其内容为: aaa bbb 123 ccc ddd 命令 grep ccc sample_file >/dev/null && echo found || echo not found 将回显“找到”和这个 - grep cow sample_file >/dev/null && echo found || echo not found 将回显“未找到” 只需将 echo 语句替换为您的变量赋值即可。
猜测这些 Windows 命令的作用,我会说 POSIX
sh
脚本中的等价物是:如果可以读取两个文件并具有相同的内容(字节到字节),这会将
equal
变量设置为。yes
作为 的替代方案
cmp -s
,在包括基于 Linux 的系统在内的某些系统上,您可以使用diff -q
.diff -q
(q
对于quiet),与大多数cmp -s
(s
对于quiet )相反,如果无法读取任何文件,则会报告错误消息。diff
虽然和的 GNU 实现cmp
首先检查这两个文件是否是同一个文件的路径(包括作为另一个文件的硬链接或符号链接)或大小不同以节省阅读它们的busybox
时间,cmp
但虽然busybox
diff
确实如此。因此,在那些使用 的系统上,出于性能原因busybox
,您可能更喜欢。diff -q
您的 windows 命令似乎将两个文件与该
fc
命令进行比较,并在输出中搜索“无差异”消息;如果我们看到该消息,则将变量设置equal
为yes
.unix命令
cmp
可以用来比较文件,如果匹配则返回零输出,我们可以直接测试,所以不需要“搜索输出”功能。在
bash
shell 中,&&
操作符是用于进程控制的逻辑和,如果第一个进程没有因错误退出,则允许运行第二个进程。双管道 (||
) 的作用类似,但它是一个 OR 语句,如果前面的命令不成功,它将运行。因此,给定一个名为的文件
sample_file
,其内容为:命令
将回显“找到”和这个 -
将回显“未找到”
只需将 echo 语句替换为您的变量赋值即可。