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

可以将相同的输入文件用作管道命令的输出吗?

尚河
2023-03-14
问题内容

考虑类似:

cat file | command > file

这是好习惯吗?难道这会在我们读取输入文件的同时覆盖输入文件,还是总是先在内存中读取它,然后通过管道传递给第二个命令?

显然,我可以将临时文件用作中介步骤,但我只是想知道..

t=$(mktemp)
cat file | command > ${t} && mv ${t} file

问题答案:

不,那不行。管道中的所有命令同时执行,并且外壳程序在执行命令之前准备重定向。因此,该命令很可能在cat读取文件之前将其覆盖。

您需要moreutils提供的海绵(1)。



 类似资料:
  • 问题内容: 本质上,我正在尝试替换: 为了避免使用硬盘驱动器,请在C ++中使用管道。这是我的代码: 我绝对可以确保上述字符串已正确初始化。但是,发生了两件事对我来说没有意义: (1)我正在执行的程序报告“输入文件为空”。由于我未使用“ <”调用程序,因此不应期望输入文件。相反,它应该期待键盘输入。此外,它应该阅读“ gulp_command”中包含的文本。 (2)程序的报告(通过标准输出提供)出

  • 问题内容: 这是一段简单的代码: 我将其执行为:java Read <input.txt 一旦将input.txt完全传递到程序中,x就会保持无限的null。为什么呢?有没有办法在将文件输入代码后使标准输入(命令行)活动?我尝试关闭流并重新打开,但它不起作用。重置等。 问题答案: 通过执行操作,您已经告诉操作系统,对于此过程,管道文件 是 标准文件。您不能再从应用程序内部切换回命令行。 如果要这样

  • 问题内容: 我想在Linux操作系统上的C程序内执行以下操作: 使用syscall(或2)创建PIPE 使用exec()执行新流程 将流程的STDIN连接到先前创建的管道。 将流程的输出连接到另一个PIPE。 这样做的目的是为了性能目的而避免访问任何驱动器。 我知道使用PIPE系统调用创建管道非常简单,我可以使用popen为输入或输出目的创建管道。 但是您将如何针对输入和输出执行此操作? 问题答案

  • 问题内容: 有没有人有创建Java中的管道对象,任何好的建议 是 从Java既是一个InputStream和和OutputStream没有多重继承和两个流是抽象类,而不是接口? 基本需求是有一个可以传递给需要InputStream或OutputStream的对象的对象,该对象需要将一个线程的输出传递给另一个线程的输入。 问题答案: 看来这个问题的重点已被遗漏。如果我对您的理解正确,那么您希望一个对

  • 我试图使用jsch连接到远程交换机,运行一些命令并提取输出。 我能够使用连接到开关,但是命令输出在输入流中不可用。也许我做得不对。这是密码 当我调试inputStream时。isAvailable()始终返回零,表示该命令没有输出。 蒂亚!

  • 我想知道如何将输出写入与show()函数显示的输出相同的文本文件。例如,当我执行此代码时: 输出: 当我执行这段代码时: 输出: 所以,当我试图使用以下代码将此输出写入文本文件时: 文本文件中的输出与“System.out.println(p.toString());”显示的输出相同。 那么,如何将show()函数显示的相同输出写入文本文件? 完整代码: