Shell脚本教程——使用exec实现日志永久重定向

TangLu 未命名 2023-05-26 340 0

一、永久重定向的作用
在Linux系统中可以通过操作符>、>>来实现输出重定向,但是它们都属于临时重定向,只对当前命令有效,后续所有命令都无效。但是在一些脚本中可能需要反反复复去输出一些文本内容作为日志,这样的话就需要使用大量的>>操作符来不断的追加内容。这样做的话不光写起来非常麻烦,后续如果想修改重定向的路径也是一项巨大的工作量。要解决这个问题的话就可以通过exec命令让重定向对当前 Shell 进程中的所有命令生效


二、使用exec进行永久重定向

#将当前 Shell 进程的所有标准输出重定向到 log.txt 文件,它等价于exec 1 > log.txt
exec > log.txt  

#下面的输出将不会输出到前台,而是log.txt文件
echo "c c++"
echo "123456"

#查看文件进行验证
cat log.txt 
c c++
123456


三、恢复永久重定向

对于已经设置好了重定向的进程,如果想进行还原的话有两种方式

#还原重定向,让标准输出重新回到显示器。因为 2 是标准错误输出,在之前的定义中并没有修改它,所以用2来覆盖1就能修复1。如果文件描述符 2 也被重定向了,该方法无效
exec 1>&2

#/dev/tty 用于前端显示,所以将标准输出重定向到 /dev/tty 即可恢复
exec >/dev/tty


评论