【Linux学习】shell环境的熟悉与应用

本文介绍了如何利用Linux shell脚本获取并显示用户登录次数、上次登录时长、天气信息、诗句以及定制化的问候。内容包括读取和解析系统日志,抓取天气数据,以及通过shell命令实现输出的美化。
摘要由CSDN通过智能技术生成

问题

一、 在每次通过远程连接进入系统时,告知用户如下信息:

  1. 最近一段时间,当前用户,也就是你,登录了多少次
  2. 上一次登录系统,停留了多少时间
  3. 给用户推荐一句名人名言,唐诗三百首之类的
  4. 最好还能告知一下当地当日天气预报
  5. 一个温馨的问候

二、要求显示美观,有一定的颜色

代码

#!/bin/bash
​
User=`whoami` # 获取当前用户
​
times=`last | grep ${User} | cut -d " " -f 1 | uniq -c | cut -d " " -f 6` # 获取当前用户登录次数
​
Time=$(cat a.log) # 读取上次登录时间
​
hour=$[ ${Time} / 3600 ] # 计算小时
minute=$[ ${Time} % 3600 / 60 ] # 计算分钟
second=$[ ${Time} % 3600 % 60 ] # 计算秒数
​
echo
echo -e "==============\033[44;37;5;1m欢迎登录\033[0m=============="
echo
echo -e "\033[34;1m${User}\033[0m 先森!欢迎回来!"
echo -e "您总共登录了 \033[33;1m${times}\033[0m 次"
echo -e "您上次在线时长:\033[34;1m${hour}\033[0m 小时 \033[35;1m${minute}\033[0m 分钟 \033[36;1m${second}\033[0m 秒"
echo 
​
Place=xian
echo -e "==============\033[46;33;4;1m天气预报\033[0m=============="
echo
curl -o ./weather.log wttr.in/${Place} 2>/dev/null # 获取天气保存到weather.log文件中
cat ./weather.log | head -n 7 | sed 's/Weather report/所在地区/' | sed "s/${Place}/西安/" # 打印日期
echo
​
echo -e "==============\033[43;31;2;1m今日诗句\033[0m=============="
echo 
fortune-zh # 打印诗句
echo
​
Sentence=`shuf -n1 ./sentence.log`
echo -e "\033[45;35;1mHi! 又是爱你的一天! ${Sentence}\033[0m"
echo

操作流程

获取当前用户登录多少次:

  • 当前用户:使用whoami命令保存在User

  • 登录次数:

times=`last | grep ${User} | cut -d " " -f 1 | uniq -c | cut -d " " -f 6`
# 使用last命令获取登录信息,经过grep筛选出当前用户登录信息,经过cut剪切出用户,经过uniq计算登录了多少次,再用cut剪切出来,即可获取

获取上次登录时长

  • 记录登录时间:

/etc/zsh/zprofile文件中记录登录时间

LoginTime=`date +"%s"` # 记录登录时间戳
  • 记录登出时间:

/etc/zsh/zlogout文件中记录登出时间

LogoutTime=`date +"%s"` # 记录登出时间戳
  • 计算登录时长并记录到文件中:

/etc/zsh/zlogout文件中登录时长并记录到文件中

PassTime=$[ ${LogoutTime} - ${LoginTime} ]
sudo echo ${PassTime} > a.log
  • 读取a.log里面的数,并计算时分秒

Time=$(cat a.log) # 读取上次登录保存的时长
​
hour=$[ ${Time} / 3600 ] # 计算小时
minute=$[ ${Time} % 3600 / 60 ] # 计算分钟
second=$[ ${Time} % 3600 % 60 ] # 计算秒数

获取当地天气

  • curl命令爬取天气信息存储到weather.log使用txt文件会有列号

curl -o ./weather.log wttr.in/${Place} 2>/dev/null # 获取天气保存到weather.log文件中,将进度信息重定向到/dev/null
  • 读取weather.log文件信息,只读取头7行,使用sed命令将里面的一些关键词替换,显得美观

cat ./weather.log | head -n 7 | sed 's/Weather report/所在地区/' | sed "s/${Place}/西安/" # 打印日期

获取诗句

  • 安装fortune软件

sudo apt install fortune
  • 使用fortune-zh命令获取诗句

温馨的问候

  • 写一些温馨的句子放在sentence.log

vim sentence.log
  • 随机读取一句

Sentence=`shuf -n1 ./sentence.log`
echo -e "\033[45;35;1mHi! 又是爱你的一天! ${Sentence}\033[0m"

调整格式,显示美观

显示效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值