我希望能够在安装软件时简单地保存 stdout 和 stderr
我想解决 3 个场景:
- 使用 apt-get 时
- 使用 apt-get 和 tee 时
- 使用 make install 时
1.使用apt-get时
在软件安装的上下文中,我无法“可视化”stdout 和 stderr 之间的区别。实际上,在安装软件时,您经常会在终端上获得大量输出,其中一些经常会出现警告。所以在这种情况下"
- 如果您的安装成功,stderr 会完全为空吗?
- 或者如果它有警告,标准输出中的“剩余”是什么?
- 或者您会建议在这种情况下将 stdout 和 stderr 一起保存吗?
无论如何,这行得通吗?
sudo apt-get package 1>output.txt 2>errors.err
2. 使用 apt-get 和 tee 时
在实践中,不仅可以将 stdout 和 sterr 保存到文件中,还可以在我的终端中查看它们。那么使用 tee,这会是最好的工作吗?
sudo apt-get package | tee 1>output.txt 2>errors.err
3.使用make install时
我猜这里的事情变得复杂了..会不会很简单:
./configure 1>output1.txt 2>errors1.err
make 1>output2.txt 2>errors2.err
make install 1>output3.txt 2>errors3.err
我将依次解决这些问题:
如果
apt-get
决定向您提问,这可能会给您带来一些问题。提示将被发送到标准输出,并重定向到文件中并且不显示给您。如果您想以这种方式使用 apt-get,请使用它的其他选项抢先回答任何问题 (apt-get --assume-yes install package 1> apt.out 2> apt.err
)。但请注意,假设“是”可能会导致意想不到的后果。这稍微好一些,但首先让我们修复您的调用
tee
:您的初始调用没有正确调用
tee
,然后将标准错误tee
而不是 of重定向apt-get
到错误日志中。这会更好,但您不会在屏幕上看到任何可能有用的信息,这些信息已发送到标准错误,如果
apt-get
要问您任何问题,这些信息可能会告诉您您的反应。这将完全符合您的期望;您最终将得到六个文件,其中包含三个命令的所有标准错误和标准输出。我建议使用稍微不那么深奥的文件名,例如:
但我更倾向于将它们放入两个文件中:
这有两件不同的事情:首先,它将所有构建命令放入一个子shell,然后神奇地将输出流收集在一起。其次,它使用 shell 的
&&
操作符仅在前一个命令成功的情况下运行下一个命令。注意:我还修复了您对
apt-get
整个的调用。