【发布时间】:2011-06-11 21:19:17
【问题描述】:
有几个 unix 命令旨在对两个文件进行操作。通常,此类命令允许通过使用单个破折号代替文件名从标准输入中读取“文件”之一的内容。
我刚刚遇到a technique,它似乎允许从标准输入读取两个文件:
comm -12 <(sort file1) <(sort file2)
我最初不相信的反应是,“那不应该工作。标准输入将只有两个文件的串联。该命令将无法区分文件,甚至意识到它已被赋予两个文件。”
当然,这种结构确实有效。我已经在 cygwin 1.7.7 上使用 bash 3.2.51 对 comm 和 diff 进行了测试。我很好奇它是如何以及为什么起作用的:
- 为什么会这样?
- 这是 Bash 扩展,还是直接 Bourne shell 功能?
- 这适用于我的系统,但该技术是否适用于其他平台? (换句话说,使用这种技术编写的脚本可以移植吗?)
【问题讨论】: