当前位置: 首页 > 面试题库 >

<()在Bash中做什么?

王刚毅
2023-03-14
问题内容

在superuser.com上的帖子答案中,我们看到了

join <(sort abc) <(sort bcd)

在将文件abc和bcd进行发送之前将它们排序。这导致了一个编程问题,更适合于stackoverflow。

这是如何运作的?<()构造到底是什么?它叫什么?

如果(sort abc)是在abc上运行sort并返回输出的合法调用,为什么我们需要<

也就是说,以下两行是等效的

(sort abc) | join - <(sort bcd)
join <(sort abc) <(sort bcd)

join (sort abc) (sort bcd)

是语法错误。请提示我!


问题答案:

这称为过程替换。

<( list)是单个语法结构,在这种情况下,“ <”字符不是单独的符号。它执行 list
并将其输出作为文件(不是标准重定向)提供给命令。

它等效于运行(除了在可能的情况下使用管道而不是临时文件):

sort abc > /tmp/1
sort bcd > /tmp/2
join /tmp/1 /tmp/2

请注意,两种输出均以要连接的文件名形式提供,而不是以标准重定向的形式提供。

( list)是出于不同目的的不同构造。它只是创建一个执行 list 的子外壳,将其标准描述符提供给父外壳。

这是bash手册中的相关部分。



 类似资料:
  • 问题内容: 我遵循了以下教程:http : //davidtsadler.com/archives/2012/06/03/how-to-install- magento-on-ubuntu/ 在某个时候,它告诉我执行以下命令: 这个命令做了什么,我该如何取消呢? 我重新启动了计算机,看来它仍在运行。我看了看和,但没有在里面找到它。 问题答案: 引用自: 您引用的命令会将heredoc中的文本(即,

  • 问题内容: 好的,我尝试查找或shift的含义,但是此站点对此进行了解释:http : //www.janeg.ca/scjp/oper/shift.html 如果和孩子说话,会是什么解释? 问题答案: 计算机是二进制设备。因此,数字由1和0的序列表示。 移位只是简单地左右移动那些1和0的序列。 因此,操作员要做的就是将这些位向右移一位。 考虑数字101: 在这种情况下,最低有效位被截断了。显然,

  • 问题内容: %在JavaScript中有什么作用? 关于它是什么及其作用的定义将不胜感激。 问题答案: 这是一个 模运算符 。有关JavaScript算术运算符的更多信息,请参见本文档或规范 。 %(模量) 模运算符的用法如下: var1%var2 在前面的语句中,模运算符以第二操作数为模的形式返回第一个操作数,即var1以var2为模,其中var1和var2是变量。模函数是var1除以var2的

  • 问题内容: 在Java中,我刚刚发现以下代码是合法的: 仅供参考,接收方只是具有以下签名的帮助程序类: 我从未见过这种记法。这是如何运作的?有什么方法可以更常规地进行编码吗? 问题答案: 这是从包含的类主体外部实例化非静态内部类的方法,如Oracle docs中所述 。 每个内部类实例都与其包含类的实例相关联。当你从一个内部类 中 包含它的类,它使用的默认容器的实例: 但是,如果要在Foo外部创建

  • 问题内容: 用 Java 做什么?我阅读了文档,但仍然无法确定。 医生说: 返回可以从此输入流读取(或跳过)的字节数,而不会被该输入流的方法的下一个调用者阻塞。下一个调用者可能是同一线程或另一个线程。 类InputStream的可用方法始终返回0。 封锁 是什么意思?这仅表示同步通话吗? 最重要的是,该方法的目的是什么? 问题答案: 这里的阻塞与线程或同步无关。相反,它涉及到阻塞的IO(见本获取更

  • 问题内容: 返回类型-方法返回的值的数据类型;如果该方法未返回值,则返回void。 http://download.oracle.com/javase/tutorial/java/javaOO/methods.html 那好吧..这是我的问题: http://download.oracle.com/javase/tutorial/java/javaOO/enum.html 上面的代码没有无效就无法