gpt4 book ai didi

linux - 从标准输入或文件读取的命令行

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

我有一个像这样运行的命令:

$ cmd <file_name> [option]

[option] 是可选的,该命令可以从 stdin 读取。所以下面的命令就可以了:

$ cmd file
$ cmd file option
$ cat file | cmd

但是,使用 [option]stdin 读取会出现错误:

$ cat file | cmd option
Cannot open file: option

那么如何构造命令,或者我必须更改程序以正确从 stdin 读取?

谢谢。

最佳答案

  1. bash 中(以及 kshzshyash...等 shell),有 process substitution ,它将管道的输出转换为 /dev/fd/ 目录中的临时临时文件:

    cmd <(cat file) option
  2. R. Sinasohn comments ,类似 /dev/stdin 的东西可能有效:

    cat file | cmd /dev/stdin option
<小时/>

如果命令依赖于文件可写或具有适当的元数据,这些方法将不会令人满意:

# No editors:
sed -i 's/a/A/' <(echo abcd)
sed: couldn't edit /dev/fd/63: not a regular file

# whatever `file` does won't work.
file <(echo abcd)
/dev/fd/63: broken symbolic link to pipe:[15331948]

# file size not the same as data size.
ls -Hlog <(echo abcd)
prw------- 1 0 Apr 6 23:27 /dev/fd/63

关于linux - 从标准输入或文件读取的命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43265622/

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