如何通过脚本创建简单的日志文件

时间:2019-04-09 16:59:16

标签: linux

我正在尝试创建一个名为“ users.txt”的简单日志文件,其中包含用户名,全名和输入的用户名的主目录。我还想包括脚本最初运行的时间。

有什么建议吗?

脚本名称称为catbash.sh

我尝试了诸如 catbash.sh> user.txt

但是我不知道如何获取特定信息等。

clear
LOGFILE=/home/student/gg193/FileTypes/TextFiles/ShellScripts/user.txt

read -p "What is your username?" username
read -p "May I know your name please? " name surname

echo "$(date) $username $name $surname $LOGFILE" >> $LOGFILE

TIME=$(date "+%H")

if [ $TIME -ge 0 -a $TIME -lt 12 ]
then
        echo "\nGood Morning, $surname"
elif [ $TIME -ge 12 -a $TIME -lt 18 ] 
then
        echo "\nGood afternoon $surname"
else 
        echo "\nGood evening $surname"
fi

echo "1. nonblank\n2. number\n3. ends\n4. nends\n"

while : 
do
    read INPUT_STRING
    case $INPUT_STRING in

        nonblank)
            NonEmptyLine=$(cat catbash.sh | sed '/^\s*$/d' | wc -l)
            echo "\nNumber of Non-Empty Lines are:" $NonEmptyLine
            break
            ;;
        number)
            EmptyLine=$(grep -cvP '\S' catbash.sh)
            echo "\nNumber of Empty Lines are:" $EmptyLine
            break
            ;;
        ends)
            echo "================================================================================="
            sed 's/$/$/' catbash.sh
            echo "================================================================================="
            break
            ;;
        nends)
            NonEmptyLine=$(cat catbash.sh | sed '/^\s*$/d' | wc -l)
                        echo "\nNumber of Non-Empty Lines are:" $NonEmptyLine
            EmptyLine=$(grep -cvP '\S' catbash.sh)
                        echo "\nNumber of Empty Lines are:" $EmptyLine
            echo "================================================================================="
            sed 's/$/$/' catbash.sh
            echo "================================================================================="
            break
            ;;
        *)
            echo "\nSorry, I don't understand"
            ;;
    esac
done

DURATION=$(ps -o etime= -p "$$")
echo "\nAmount of time that has passed since the script was initially executed:" $DURATION

echo "\nThanks for using catbash.sh!"

1 个答案:

答案 0 :(得分:0)

您必须从sh脚本内部进行日志记录。例如,您可以echo在终端上想要的信息(您已经在做),然后附加| tee -a $LOGFILE(在顶部定义LOGFILE,这样,如果您需要不同的文件名/位置)。

作为进一步的改进,您可以查看定义自己的记录器功能,甚至探索现有功能。例如,更简单的记录器功能可能需要2个args-消息,文件名。消息本身可以根据需要由用户名,日期/时间戳等组成。

根据您当前问题中的信息,这是我能提供的最佳建议。