输入输出

宝剑锋从磨砺出,梅花香自苦寒来。

—— 佚名·《警世贤文·勤奋篇》

标准输入

将标准输入作为文件来读取

diff 命令用于对比两个文件的内容:

1
diff ${file1} ${file2}

有时我们需要将某个命令的输出,跟一个文件进行对比。这时可以先将命令输出重定向到一个临时文件,再进行对比:

1
2
3
4
5
${some_command} > ${result_file}
diff ${the_file} ${result_file}

# 记得要及时清理临时文件!!!
rm ${result_file}

但创建临时文件非常麻烦,用完还要记得清理,有更好的方式吗?当然有啦!

1
diff ${the_file} <(${some_command})

这个例子, Shell 会新建一个 管道pipe );然后执行括号中定义的命令,并将结果写到管道中;最后将管道的路径作为命令行参数传给 diff 命令。执行完毕后,Shell 会自动回收管道,省事多了!

具体到 diff 命令,还有一个更加简便的方法:

1
${some_command} | diff ${the_file} -

这个例子直接将命令输出作为标准输入,传给 diff 命令;而 diff 命令第二个参数 - 表示标准输入。这样的话,diff 命令就会从标准输入读取数据,并跟第一个文件进行对比。

需要特别注意,并不是所有命令都支持 - ,取决于命令内部是否对这个占位符进行特殊处理。

小菜笔记】系列文章首发于公众号【小菜学编程】,敬请关注:

【小菜笔记】系列文章首发于公众号【小菜学编程】,敬请关注: