用户终端操作历史记录文件格式转换

  • 生产实践:

     用户终端操作历史记录文件格式转换

  • 学习技巧:

    if语句、for循环及sed、awk使用

  • 脚本内容:

#/bin/bash
############################################################
# $Name:         conv_hist
# $Version:      v1.0
# $Function:     convert history file
# $Author:       Zhihe An
# $Copyright (c) https://chegva.com
# $Create Date:  2017-07-24
############################################################
RED='\e[1;31m' 
redb='\e[5;41m' # 红底闪烁  
NC='\e[0m' # 没有颜色
LOGNAME=$1
#BASEPATH=$(cd `dirname $0`; pwd)
BASEPATH=$(basename `pwd`)
if [ "$1" == "" -o "$#" -gt 1 ]
then
    echo -e "${RED}  🙂 ${NC} Usage: ./`basename $0` [HISTFILE name]";
 exit;
elif [ ! -f "$LOGNAME" ];then
    echo -e "${RED} 🙁 ${NC} ${redb} ${LOGNAME} ${NC} does not exist,please check it!";
 exit;
else
    echo "================== chegva.com `date +%F\ %T` ====================";
fi
#elif [ ! -f "${LOGNAME}" ]
#    echo "${LOGNAME} does not exist,please check it!";
#         exit;
#LOGFILE=${LOGNAME}.his
#if [ ! -f "$LOGFILE" ]; then
#    touch ${LOGFILE}
#else
#    >${LOGFILE}
#fi
#
for line in $(<$LOGNAME)
do
if [[ `echo ${line:0:1}` == "#" ]]
then
#echo $line
LOGTIME=`echo ${line:1}`
#echo $LOGTIME
LOGLINE=`date -s @${LOGTIME} +'%F %T'`
#echo $LOGLINE
sed -i "s/$line/$LOGLINE/" ${LOGNAME}
fi
done
awk -v count=1 '{ if (NR%2==1) { print count" '"$BASEPATH"' "$0;count++;} 
else {print "\033[1;31m" "  " $0 "\033[0m"}}' ${LOGNAME} 
echo "===================" "历史命令记录格式已转换:)" "========================="
exit 0

查看效果

用户终端操作历史记录文件格式转换

◎记录所有登录用户终端操作命令:https://chegva.com/2332.html

anzhihe安志合个人博客,版权所有丨 如未注明,均为原创 丨转载请注明转自:https://chegva.com/2333.html | ☆★★每天进步一点点,加油!★★☆

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注