如何将shell脚本的所有输出写入单个新文件而无需逐行追加?
Shell 批量命令输出统一写入文件的实现方法
方法1:命令组统一重定向(仅作用于指定命令范围)
将需要统一输出的命令用大括号包裹,在末尾统一加重定向规则即可,示例如下:
{ date ls echo $USER } >> newfile
注意:大括号与首尾命令之间需要保留空格,最后一条命令末尾需要加换行或分号,语法才能正常识别。
若需要覆盖写入而非追加,将>>替换为>即可。
方法2:全局重定向(作用于整段脚本后续所有命令)
如果脚本后续所有输出都需要写入目标文件,可直接在脚本开头通过exec设置全局重定向:
# 全局配置所有标准输出追加到newfile exec >> newfile # 后续命令无需单独加追加重定向,输出会自动写入文件 date ls echo $USER
附加需求:同时输出到屏幕和文件
如果需要输出到文件的同时,也在终端屏幕显示内容,结合tee命令即可实现:
# 命令组输出同时写入屏幕和文件(追加模式) { date ls echo $USER } | tee -a newfile
去掉
tee后的-a参数会改为覆盖写入模式。
内容的提问来源于stack exchange,提问作者Radmox
相关产品推荐
相关产品推荐

