我希望能够简单地保存 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
答案1
我将依次讨论这些问题:
$ sudo apt-get install package 1> apt.out 2> apt.err
apt-get
如果决定问您问题,这可能会给您带来一些问题。提示将发送到标准输出,并重定向到文件中,并且不会显示给您。如果您想以这种方式使用 apt-get,请使用它的其他选项来抢先回答任何问题 ( apt-get --assume-yes install package 1> apt.out 2> apt.err
)。但请注意,预设“是”可能会导致意想不到的后果。
$ sudo apt-get install package | tee 1> apt.out 2> apt.err
这稍微好一点,但首先让我们修复您的调用tee
:
$ sudo apt-get package 2> apt.err | tee apt.out
您的初始调用未正确调用tee
,然后将标准错误tee
而不是 of重定向apt-get
到错误日志中。
这会工作得更好,但您不会在屏幕上看到任何可能有帮助的信息,这些信息已发送到标准错误,这些信息可能会建议您在apt-get
询问您任何问题时的反应。
$ ./configure 1>output1.txt 2>errors1.err
$ make 1>output2.txt 2>errors2.err
$ make install 1>output3.txt 2>errors3.err
这将完全符合您的期望;您最终将得到六个文件,其中包含三个命令的所有标准错误和标准输出。我建议使用稍微不那么深奥的文件名,例如:
$ ./configure 1> configure.out 2> configure.err
$ make 1> make.out 2> make.err
$ make install 1> install.out 2> install.err
但我更倾向于将它们放入两个文件中:
$ ( ./configure && make && make install ) 1> build.out 2> build.err
这会做两件不同的事情:首先,它将所有构建命令放入一个子 shell 中,并神奇地将输出流收集在一起。其次,它使用 shell 的&&
运算符来仅有的如果上一个命令成功,则运行下一个命令。
笔记:我还修复了您对apt-get
整个过程的调用。