gpt4 book ai didi

bash - 将两个文件重定向到标准输入

转载 作者:行者123 更新时间:2023-11-29 08:47:43 24 4
gpt4 key购买 nike

有几个 unix 命令设计用于对两个文件进行操作。通常,此类命令允许通过使用单个破折号代替文件名从标准输入中读取其中一个"file"的内容。

我刚刚遇到 a technique这似乎允许从标准输入读取两个文件:

comm -12 <(sort file1) <(sort file2)

我最初不相信的 react 是,“那不应该工作。标准输入将只是两个文件的串联。该命令将无法区分文件,甚至无法意识到它已被赋予内容两个文件。”

当然,这种构造确实有效。我已经在 cygwin 1.7.7 上使用 bash 3.2.51 对 commdiff 进行了测试。我很好奇它的工作原理和原因:

  • 为什么会这样?
  • 这是 Bash 扩展,还是直接的 Bourne shell 功能?
  • 这适用于我的系统,但该技术适用于其他平台吗? (换句话说,使用这种技术编写的脚本是否具有可移植性?)

最佳答案

Bash、Korn shell(ksh93,无论如何)和 Z shell 都支持 process substitution .这些在实用程序中显示为文件。试试这个:

$ bash -c 'echo <(echo)'
/dev/fd/63
$ ksh -c 'echo <(echo)'
/dev/fd/4
$ zsh -c 'echo <(echo)'
/proc/self/fd/12

您会看到与所示文件描述符类似的文件描述符。

关于bash - 将两个文件重定向到标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com