-1

我有一个简单的问题。这是一个shell脚本

ps -a > temp

shell 上的实际输出类似于:

rishis    234 564  0 22:56 pts/1    00:00:04 <command>

但是,当我查看临时文件时,输出仅为:

234 pts/1 00:00:04 <part of command>

谁能解释可能是什么原因?

4

1 回答 1

1

这完全取决于您使用的操作系统和软件版本,但可能归结为:许多常用命令的设计方式略有不同,具体取决于它们是被交互调用还是在管道中调用。(在这种情况下,重定向和管道将产生相同的结果,因为命令根据 stdout 是否绑定到终端来决定它们的行为)

最普遍的例子是 ls:默认情况下,它以交互模式在列中列出文件,在管道模式下每行列出一个文件。使用 ps 检查您的手册页中记录的行为。

您可以模拟管道模式,同时通过管道连接到 cat 来保持输出到标准输出:

ps -a | cat

另一种解释是,如果你在一个足够奇怪的外壳下,它有一个内置的 ps,但不希望在某些上下文中使用它,比如重定向。通过使用完整的/bin/ps调用来检查。time倾向于像这样工作。

于 2013-09-14T08:15:54.493 回答