gpt4 book ai didi

linux - 强制 cli 实用程序在不提供配置选项且仅写入文件时写入 stdout

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:20 26 4
gpt4 key购买 nike

我必须使用无法修改的古老 cli 工具。它将一堆管道分隔的记录写入文件。我不需要将任何这些数据保存到磁盘,我只需要将它写入标准输出,这样它就可以通过 ssh session 由自动化进程获取。有没有一种方法可以避免该工具将记录持久保存到磁盘并欺骗它只写入标准输出而产生的不必要的开销?

最佳答案

在 bash 中:

$ cli_tool -f <<< >(automated_process)

解释:

  • >(automated_process)process substitution . automated_process从 stdin 读取 cli_tool 产生的结果写入一个特殊的命名文件。
  • <<<here string它将进程替换创建的 fifo 名称或命名文件描述符 ( /dev/fd/...) 提供给 cli_tool stdin(cli_tool -f 从 stdin 读取结果写入位置的文件名)

在我的系统上,该命令可能等同于:

# run in the background, read from /dev/fd/63
automated_process < /dev/fd/63 &
# pass the line "/dev/fd/63" literally to `cli_tool`
cli_tool -f <<< "/dev/fd/63"

效果是cli_tool打印提示 "Enter preferred filename:"并得到 /dev/fd/63字符串作为文件名,即 cli_tool写信给 /dev/fd/63文件,automated_process/dev/fd/63 读取文件。没有内容接触磁盘。

在没有命名文件描述符的系统上 >()可以使用 fifo 实现:

mkfifo filename 
automated_process < filename &
cli_tool -f <<< "filename"

关于linux - 强制 cli 实用程序在不提供配置选项且仅写入文件时写入 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478756/

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