我有一个简单的问题。这是一个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>
有谁可以解释原因是什么?
答案 0 :(得分:1)
这完全取决于您使用的软件的操作系统和版本,但它可能归结为:许多常见命令的设计工作略有不同,具体取决于它们是否以交互方式调用或在管道中。 (在这种情况下,重定向和管道将具有相同的结果,因为命令根据stdout是否绑定到终端来决定它们的行为)
最普遍的例子是ls:默认情况下,它以交互模式列出列中的文件,管道模式中每行列出一个文件。使用ps检查手册页中是否有记录的行为。
您可以模拟管道模式,同时通过管道连接到cat来保持输出到stdout:
ps -a | cat
另一种解释,如果你在一个奇怪的shell下面,它有一个内置的ps,但不希望在某些上下文中使用它,比如重定向。通过使用完整的/bin/ps
调用来检查它。 time
往往会像这样工作。