Bash脚本中tar+lz4命令输出重定向至/dev/null失效的解决方法
问题解决:将tar归档的verbose输出重定向到/dev/null
你的问题出在tar的v参数产生的输出是发送到标准错误(stderr),而你原命令里的> /dev/null只重定向了标准输出(stdout),所以那些路径信息依然会打印出来。以下是两种正确实现方式:
方式一:仅重定向tar的verbose输出
只把tar的标准错误扔到/dev/null,不影响后续命令的输出(如果lz4有需要保留的输出的话):
tar cvf - -C / "$SOURCE_DIR" 2>/dev/null | lz4 --best - "$ARCHIVE"
方式二:重定向整个管道的所有输出
如果不需要保留任何命令的输出,直接把所有标准输出和标准错误都重定向到/dev/null:
tar cvf - -C / "$SOURCE_DIR" | lz4 --best - "$ARCHIVE" >/dev/null 2>&1 # 或者更简洁的写法 tar cvf - -C / "$SOURCE_DIR" | lz4 --best - "$ARCHIVE" &>/dev/null
额外提醒
记得给变量$SOURCE_DIR和$ARCHIVE加上双引号,避免当路径包含空格、特殊字符时出现命令解析错误。
内容的提问来源于stack exchange,提问作者Trevor Philip
相关产品推荐
相关产品推荐

