找不到任何相关信息,但我试图仅将 stderr 的特定部分记录到文件中。例如
运行tar -xzf file 2>> log.txt
并出现错误
tar: Child returned status 1
我只想记录 Child 返回的状态 1 部分,而不包括命令名称。
答案1
tar -xzf file 3>&1 1>&2 2>&3 | grep -oP '^app: \K.*$' | tee logfile
答案2
使用zsh
,您可以执行以下操作:
tar -xzf file 2> >(sed 's/^tar: //' >> file.log)
这允许保留tar
的退出状态。
你可以做类似的事情ksh
,bash
或者yash
虽然sed
如果该命令使用了file.log
。
其他选项bash
是使用:
{ tar -xzf file 2>&1 >&3 3>&- | sed 's/^tar: //' >> file.log 3>&-; } 3>&1
tar_exit_status=${PIPESTATUS[0]}
请注意,对于多个 shell,您还可以tar
使用空 argv[0] 进行调用:
(exec -a '' tar -xzf file)
在这种情况下,错误消息将如下所示:
: Child returned status 1