shell 生成日志的几种方法

一、tee

## test_log.sh

set -x
echo $0
s=`dirname $0`
echo $s

# 在脚本路径执行脚本
bash -x test_log.sh 
+ set -x
+ echo test_log.sh
test_log.sh
++ dirname test_log.sh
+ s=.
+ echo .
.

# 在脚本上一层目录执行脚本
bash -x test_dir/test_log.sh 
+ set -x
+ echo test_dir/test_log.sh
test_dir/test_log.sh
++ dirname test_dir/test_log.sh
+ s=test_dir
+ echo test_dir
test_dir

# 从根目录处执行此文件
bash -x /home/xxx/test_dir/test_log.sh 
+ set -x
+ echo /home/xxx/test_dir/test_log.sh
/home/xxx/test_dir/test_log.sh
++ dirname /home/xxx/test_dir/test_log.sh
+ s=/home/xxx/test_dir
+ echo /home/xxx/test_dir
/home/xxx/test_dir

## 以上明白 $0指当前文件且带有与当前位置相对的路径;dirname可以获得当前文件的父路径也是相对当前位置。

bash -x test_dir/test_log.sh | tee test_dir/log.log
+ set -x
+ echo test_dir/test_log.sh
test_dir/test_log.sh
++ dirname test_dir/test_log.sh
+ s=test_dir
+ echo test_dir
test_dir

cat test_dir/log.log 
test_dir/test_log.sh
test_dir

二、>>

bash -x test_dir/test_log.sh >> test_dir/log1.log
+ set -x
+ echo test_dir/test_log.sh
++ dirname test_dir/test_log.sh
+ s=test_dir
+ echo test_dir

cat test_dir/log1.log 
test_dir/test_log.sh
test_dir


### 注意>> 与 >的区别
bash -x test_dir/test_log.sh >> test_dir/log1.log
+ set -x
+ echo test_dir/test_log.sh
++ dirname test_dir/test_log.sh
+ s=test_dir
+ echo test_dir

cat test_dir/log1.log 
test_dir/test_log.sh
test_dir
test_dir/test_log.sh
test_dir

bash -x test_dir/test_log.sh > test_dir/log1.log
+ set -x
+ echo test_dir/test_log.sh
++ dirname test_dir/test_log.sh
+ s=test_dir
+ echo test_dir

cat test_dir/log1.log 
test_dir/test_log.sh
test_dir

# 很明显
>写入,覆盖掉原有的;
>>继续添加,原来的还存在

三、实例:

#!/bin/bash
#文件名:test.sh
name="test-date-log"
echo $name

echo "BACKUP DATE:" $(date +"%Y-%m-%d %H:%M:%S")

DATE=`date '+%Y%m%d-%H%M%S'`
echo $DATE

LogNameDATE=`date '+%Y%m%d'`

echo " " >> log$LogNameDATE.log
echo "———————————————–" >> log$LogNameDATE.log
echo "BACKUP DATE:" $(date +"%Y-%m-%d %H:%M:%S") >> log$LogNameDATE.log
echo "———————————————– " >> log$LogNameDATE.log
#将当前时间和包含换行符的文本内容输出到文件
echo -e $(date) "\nHello World !" >> test.txt

#将当前时间(格式化)和包含换行符的文本内容输出到文件
echo -e `date '+%Y-%m-%d %H:%M:%S %A'` "\nHello World !" >> test.txt
#同上,简化版。
echo -e `date '+%F %T %A'` "\nHello World !" >> test.txt

#输出到以日期格式文件名
echo -e $(date) "\nHello World !" >> test`date +'%Y-%m-%d'`.txt

四、参考文档

1、https://www.cnblogs.com/smbx-ztbz/p/4607007.html

2、https://www.jb51.net/article/108720.htm

3、https://www.cnblogs.com/xiongzaiqiren/p/11413242.html

4、https://www.jb51.net/article/108725.htm

5、https://www.cnblogs.com/clnchanpin/p/6896178.html

你可能感兴趣的:(linux,&,shell,linux,shell,日志)