当终端打开时,我可以显示当前的日历和时间吗?

Win*_*nix 7 command-line bash bashrc

当按Ctrl+ Alt+T打开终端时,我会看到一个带有简单输入提示的空白屏幕。

是否可以(通过修改~/.bashrc)显示当前日历,突出显示今天和当前时间?

如果时间可以以大量显示(使用 figlet?),那将是一个奖励。

Win*_*nix 9

改良版

你可以在这里看到改进的版本:https : //askubuntu.com/a/1020693/307523

它看起来像这样:

终端启动画面


原版

您可以在使用~/.bashrc脚本打开终端时打印介绍横幅。如果你有 figlet ( sudo apt install figlet) 你可以利用大字母来显示时间:

现在

在第一个实例figlet中用于显示时间,在第二个实例中使用常规字体。

使用其他屏幕示例 toilet

现在 3

此屏幕使用toilet包中的字体。最后一个示例使用future字体并在下面的代码中使用。此外,日历在下面的代码中设置为青色。

toilet包允许在figlet它派生的包上添加额外的字体类型和格式样式。要安装软件包,请sudo apt install toiletfiglet如上所述安装后使用。

编码

这是使其全部工作所需的代码。建议将此脚本放在您的/home/user/bin目录中,因为它会自动添加到您的路径中。此脚本已命名,now但您可以使用任何您喜欢的唯一名称。

#!/bin/bash

# NAME: now
# PATH: $HOME/bin
# DESC: Display current calendar and time
# CALL: Called from terminal or ~/.bashrc
# DATE: Apr 6, 2017. Modified: Apr 10, 2017.

# NOTE: To display all available toilet fonts use this one-liner:
#       for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done

# calendar current month with today higlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
#        36=cyan, 37=white
printf "\033[36m"       # color 36=cyan
echo ""; cal;
printf "\033[00m"       # color bright white (default)
echo ""

tput sc                 # Save cursor position.
# Move up 9 lines
while [ $((++i)) -lt 10 ]; do tput cuu1; done
tput cuf 25             # Move 25 columns right

# Do we have the toilet package?
if hash toilet 2>/dev/null; then
    echo " "$(date +"%I:%M %P")" " | \
        toilet -f future --filter border > /tmp/terminal
# Do we have the figlet package?
elif hash figlet 2>/dev/null; then
    echo $(date +"%I:%M %P") | figlet > /tmp/terminal
# else use standard font
else
    echo $(date +"%I:%M %P") > /tmp/terminal
fi

while IFS= read -r Time; do
    printf "\033[01;32m" # color green
    printf "$Time"
    tput cud1           # Up one line
    tput cuf 25         # Move 25 columns right
done < /tmp/terminal

tput rc                 # Restore saved cursor position.

exit 0
Run Code Online (Sandbox Code Playgroud)

将脚本标记为可执行

将此代码复制到您的编辑器中并将其保存到文件中now。接下来使用以下命令将其标记为可执行文件:

sudo chmod +x now
Run Code Online (Sandbox Code Playgroud)

将脚本添加到 ~./bashrc

完成后,您可以now在终端中输入,您将看到日历和时间。将其全部打包并在每次打开终端时自动显示:

  • 编辑文件 ~/.bashrc
  • 转到末尾并插入一个新行,其中包含 now
  • 保存文件

现在,当打开终端时,您会看到当前月份日历上突出显示的当前日期,然后是当前时间。

剖析代码

在这里,我们将简要介绍代码的工作原理,而不讨论每一行。

figlettoilet包裹

该脚本首先检查是否toilethash命令一起安装。如果是这样,则用于显示时间。如果未figlet安装则使用。如果两者都没有安装,则使用常规字体。

在上面的代码中,可以将注释复制到命令行并执行以在终端上显示可用figlettoilet字体:

for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done
Run Code Online (Sandbox Code Playgroud)

要更改用于时间显示的字体,请搜索此行的代码:

toilet -f future --filter border > /tmp/terminal
Run Code Online (Sandbox Code Playgroud)

并将字体名称更改为future您选择的字体名称。请记住,某些字体太大而无法显示。

选择颜色

分别设置日历和时间所需的颜色。在上面的代码中,注意命令:

printf "\033[36m"       # color 36=cyan
Run Code Online (Sandbox Code Playgroud)

将最后两位数字更改为您要使用的颜色代码。通过修改代码,我发现了这些值:

00 = 亮白色,31 = 红色,32 = 绿色,33 = 黄色,34 = 蓝色,35 = 紫色,36 = 青色,37 = 白色

如果您发现其他颜色代码,请在下面发表评论或更新此答案。