当我跑步时
echo "invalid crt" | openssl x509 -noout -modulus | openssl md5 &>> error.log
这显示以下错误
unable to load certificate
139903857870496:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
并且 error.log 中的内容为“(stdin)= d41d8cd98f00b204e9800998ecf8427e”
我想保存带有错误的标准输入(如何将终端错误文本保存到 error.log 中)
我怎样才能做到这一点 ?
答案1
当你这样做
echo "invalid crt" | openssl x509 -noout -modulus | openssl md5 &>> error.log
只有第二个 openssl 命令的 stderr 才会写入 error.log。使用以下命令:
echo "invalid crt" | (openssl x509 -noout -modulus | openssl md5) &>> error.log
这样两个 openssl 进程都在子 shell 中运行,并且子 shell 的 stderr 与 stdout 一起重定向到 error.log。
答案2
使用cmd &> file.log
:
$ blahblah &> /tmp/blah.log
$ echo $?
127
$ cat /tmp/blah.log
bash: blahblah: command not found
要附加,请使用cmd >>file.log 2>&1
$ wrongcmd >>/tmp/blah.log 2>&1
$ cat /tmp/blah.log
bash: blahblah: command not found
bash: wrongcmd: command not found