制作显示欢迎信息的脚本程序

终端程序恐怕是Linux用户使用最为频繁的了。我的Debian系统启动后便是直接进入的终端界面。为了在每次登录时或者是在X视窗环境下打开终端程序时显示一些欢迎信息,比如当前的日期、名人警句等,从而可以增加一些生活情趣,就可以创建一个脚本程序,然后在~/.bashrc文件调用它。我自己就写了一个welcome.sh,执行时首先显示当前登录的用户名与主机名,然后打印出当天的日期、当天处于今年的第几个星期——这一数据在项目汇报中常被使用。同时,显示当天是今年的第几天,计算出距离年末还有几天,这样就可以给自己警醒,“又一年即将过去,自己是否珍惜了时光?”。最后,脚本调用fortune程序,随机显示一些警句或有意思的话。将这些综合起来,写成welcome.sh脚本如下:

#!/bin/bash

script_name="welcome.sh"
script_usage=$(cat <<EOF
welcome.sh [OPTIONS]
EOF
)
script_function=$(cat <<EOF
Display a welcome message.
EOF
)
script_doc=$(cat <<EOF
-h     Display this help.
EOF
)
script_examples=$(cat <<EOF
EOF
)
state_prefix="==="
warning_prefix="***"
error_prefix="!!!"

function display_help() {
    if [ -n "$script_usage" ]; then
    echo -e "Usage: $script_usage"
    fi

    if [ -n "$script_function" ]; then
    echo -e "$script_function"
    fi

    if [ -n "$script_doc" ] ; then
    echo -e "\n$script_doc"
    fi

    if [ -n "$script_examples" ]; then
    echo -e "\nExamples"
    echo -e "$script_examples"
    fi
}

# Delete a same character from the beginning of a variable. The source variable is the global variable $src_string
# $1: pattern character
function del_leading_chars() {
    local pat_char
    local prev_src_string_len
    local src_string_len

    declare -i prev_src_string_len
    declare -i src_string_len

    pat_char=$1
    prev_src_string_len=0
    src_string_len=${#src_string}

    while [ $(($prev_src_string_len != $src_string_len)) = 1 ]; do
    prev_src_string_len=$src_string_len
    src_string=${src_string/#${pat_char}/}
    src_string_len=${#src_string}
    done
}

# Process command options
while getopts ":h" opt; do
    case $opt in
    h  )  display_help
        exit 0 ;;
    \? )  display_help
        exit 1 ;;
    esac
done
shift $(($OPTIND - 1))

# Start execute the command

declare -i total_dates=365
year=`date +%Y`

# Test leap year
if [ $(($year % 100 == 0)) = 1 ]; then
    if [ $(($year % 400 == 0)) = 1 ]; then
    total_dates=366
    fi
else
    if [ $(($year % 4 == 0)) = 1 ]; then
    total_dates=366
    fi
fi

src_string=`date +%j`
del_leading_chars ‘0‘
cur_day_no=$src_string
src_string=`date +%V`
del_leading_chars ‘0‘
cur_week_no=$src_string

echo "********************************************************"
echo "Hello "`whoami`"! ""Welcome to "`hostname`"!"
echo "Today is "`date "+%A, %B %d, %Y"`
echo "Week $cur_week_no, day $cur_day_no, remaining days $(($total_dates - $cur_day_no))"
echo "********************************************************"
fortune

welcome.sh放入~/.bashrc后,现在再打开终端程序,就会显示出现面的信息:

时间: 2024-10-01 18:07:46

制作显示欢迎信息的脚本程序的相关文章

异常处理:显示异常信息,程序继续运行

此语句的作用是显示异常信息,便于调试和改进程序. except Exception as err: print(err) #异常处理'''异常处理格式try: 程序except Exception as 异常名称: 异常处理部分'''try: for i in range(0,10): print(i) if(i==4): print(jkj) print("hello")except Exception as err: print(err) #让异常后的程序继续for i in ra

【原创】用JAVA实现大文件上传及显示进度信息

用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框架中使用类似CommonsMultipartFile对象处理表二进制文件信息. 而.NET 中使用HtmlInputFile/ HttpPostedFile对象处理二进制文件信息. 优点:使用框架内置对象可以很方便的

Android APP压力测试(二)之Monkey信息自动收集脚本

Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Find

C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装

原文:C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装 要求: JDK.Mysql.Tomcat三者制作成一个安装包, 不能单独安装,安装过程不显示三者的界面, 安装完成要配置好JDK环境.Mysql服务.Tomcat 服务 目的: 解决客户在安装软件的复杂配置和繁琐 便于管理软件版本 便于系统集成 分析: 由于不能使用软件的原始安装版本,故只能将JDK的安装目录拷贝出来,放在D盘的SoftSource文件夹,由于要管理三者,将这三个放进一个文件夹里面 Mysql.Tom

PHP通过ini_set()来设置显示错误信息和执行时间

PHP的 ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效.不是所有的选项都能被改函数设置的.具体那些值能够设置,可以查看手册中的列表. 就是能够设置php.ini中的选项值比如,display_error选项关闭了,但是你要显示程序中的错误信息,方便你调试程序,那么就可以使用PHP ini_set函数: ini_set("display_errors", "On"); 那么在你这个页面的程序都会显示错误信息了,而且你还可以使用e

Qt通过QToolTip显示浮动信息

QToolTip类的应用十分简单,其QToolTip类中全都是静态方法,如果要显示浮动信息的话使用该函数即可: void QToolTip::showText ( const QPoint & pos, const QString & text, QWidget * w = 0 );    [static] 参看Qt例子,$(QTDIR)\examples\widgets\tooltips可以轻松写出显示浮动信息程序.通过在虚函数 bool event(QEvent *event) 中,验

人人都是 DBA(XV)锁信息收集脚本汇编

什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA". 索引 查看 Session 对应的 Thread 和当前 Command 侦测 Deadlocking 或阻塞问题 查看 Task 执行中哪个 Wait Type 最慢 查看当前 Task 的运行情况 查看 Lock Waits 状态 查看 Latch 等待情况 将所有 wait_type 按照

人人都是 DBA(XIV)存储过程信息收集脚本汇编

什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA". 索引 获取存储过程 SP 执行次数排名 查看哪个 SP 执行的平均时间最长 查看哪个 SP 执行的平均时间最不稳定 查看哪个 SP 耗费了最多的 CPU 时间 查看哪个 SP 执行的逻辑读最多 查看哪个 SP 执行的物理读最多 查看哪个 SP 执行的逻辑写最多 获取存储过程 SP 执行次数排名

人人都是 DBA(XI)I/O 信息收集脚本汇编

原文:人人都是 DBA(XI)I/O 信息收集脚本汇编 什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA". 索引 数据文件和日志文件位置和大小 查看指定数据库文件的大小和可用空间 服务器 Disk 容量和挂载信息 查看 Disk 剩余空间 查询数据库设置的 Recovery Model 查看最近的 Full Backup 信息 获取所有数据库的