如何打印命令行命令的一部分

Posted

技术标签:

【中文标题】如何打印命令行命令的一部分【英文标题】:How to printf part of command line command 【发布时间】:2012-04-28 06:21:44 【问题描述】:

您好,我目前正在尝试在运行程序时打印命令行的某个部分。我目前按如下方式运行我的程序

zcat gcc | sim

我想要完成的是将命令行的“gcc”部分打印到单独的文件中。有什么办法可以做到这一点。感谢您的帮助

我忘了说这是用 c 而不是 C++

【问题讨论】:

伙计,谷歌主要函数参数 [argc, argv] 它没有作为我已经尝试过的主函数参数传递 对不起,你能不能再解释一下,你想做什么? zcat gcc 解压程序sim读入并分析的文件gcc。所以我如上所述调用我的程序。在我的程序结束时,我打印出一组结果,并想打印出所使用的文件的名称,在这种情况下是 gcc。但是,我尝试过的所有内容都只是在 gcc 文件的第一行而不是显式命令行中读取的。 【参考方案1】:

“sim”程序只知道它有来自标准输入的数据。它不知道是什么将数据传递给标准输入 - 它可能是另一个程序,或者重定向的输入,或者来自设备。

从 'sim' POV 中,只有来自标准输入的数据。

如果您可以保证您将始终通过管道从另一个进程接收数据,您可以开始寻找与“sim”进程匹配的进程标头,并从然后从相关进程中提取进程信息。但是,我怀疑这超出了您的意愿。

【讨论】:

有什么方法可以读取命令行中输入的内容 没有“简单”的方法。有一个艰难的方法,这将涉及您通过进程树拖网查找关联的进程来馈送 sim 的标准输入,然后计算出相关进程的参数。坦率地说,对于您想要实现的目标;我只是将您的“sim”程序扩展为具有指定要读取的文件的参数。这样你就可以从 main() 的参数向量中获得文件的名称。【参考方案2】:

您正在将zcat 的输出(通过管道)传递给您的程序,它不知道传递给zcat 的参数的详细信息。 不过,您可以将其作为输入流的一部分显式传递,

(echo 'zcat gcc'; zcat gcc ) | sim

但这是一个黑客。如果您打算运行您的 只能以这种方式编程。

【讨论】:

以上是关于如何打印命令行命令的一部分的主要内容,如果未能解决你的问题,请参考以下文章

Java或C#调用命令行批处理命令如何获得返回值

打印用法时如何表示命令行参数是可选的

如何在 jmeter 聚合报告命令行中打印 95 和 99 百分位数?

如何从命令行漂亮地打印 XML?

如何在C ++中从命令行删除打印的字符

如何使用 awk 命令在匹配正则表达式之前和之后打印 5 行