假设我运行了一个命令或 shell 脚本,它给了我输出。在不知道此命令或 shell 脚本的内部结构的情况下,如何确定输出是来自stderr还是stdout?
例如,
$ ls -ld /
drwxrwxr-t 35 root admin 1258 Dec 11 19:16 /
Run Code Online (Sandbox Code Playgroud)
对比
ls -ld /test
ls: /test: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我如何确定第一个命令打印到stdout了第二个stderr(做了吗?)?
我如何使用 BASH 魔法来实现这一目标?
我只想在屏幕上看到 stderr 输出,
但我希望将 stdout 和 stderr 都写入文件。
澄清:我希望 stdout 和 stderr 最终出现在同一个文件中。按照它们发生的顺序。
不幸的是,下面的答案都没有做到这一点。
我经常使用find或locate来查找路径。
(~) locate foobar.mmpz
/home/progo/lmms/projects/foobar.mmpz
Run Code Online (Sandbox Code Playgroud)
下一步通常是打开或以其他方式操作文件。在像上面这样的快乐情况下,我可以这样做:
(~) ls `!!`
ls `locate foobar.mmpz`
/home/progo/lmms/projects/foobar.mmpz
Run Code Online (Sandbox Code Playgroud)
但是当有很多输出行时,没有人会太高兴,其中一些可能不是路径或其他类似的东西。此外,重新运行可能浪费的命令也不是那么优雅。
有没有办法连接 zsh 以将标准输出存储到数组中以供以后操作?毕竟,将流重定向到用户是 shell 的工作。我认为它可以将前 N 行和最后 N 行存储在变量中以供以后立即使用,例如$?和其他。
好的,这很酷:https : //unix.stackexchange.com/a/59704/5674。我现在询问 zsh 专有技术(并将代码移植到 zsh)以在每个运行行之后装配这种捕获。
这个问题类似于 Can I configure my shell to print STDERR and STDOUT in different color?
但我正在寻找一种解决方案,可以让我将STDOUT 和 STDERR 都更改为一种颜色。我不想为 STDOUT 和 STDERR 设置不同的颜色,因为这有问题并且可能会产生问题,在上面链接的答案中提到。
我很抱歉,因为我对 Unix 和 Linux 不太了解。我要寻找一个解决方案,可以让我加几行我.bashrc还是.bash_profile和永久改变输出和错误的颜色。