改良版

改良版

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

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

如果时间可以以大数字显示(使用 figlet?)那将是一个好处。

答案1

改良版

您可以在此处看到改进的版本:https://askubuntu.com/a/1020693/307523

它看起来像这样:

终端启动画面


原始版本

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

现在

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

使用的其他屏幕示例toilet

现在 3

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

此软件包允许在其衍生的软件包toilet上添加其他字体类型和格式样式。要安装此软件包,请在按照上述说明进行安装后使用。figletsudo 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

将脚本标记为可执行

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

sudo chmod +x now

添加脚本~./bashrc

完成后,您可以now在终端中输入,然后您将看到日历和时间。总结一下,让它每次打开终端时自动显示:

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

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

剖析代码

这里我们将简单看一下代码的工作原理,而不讨论每一行。

figlettoilet包裹

脚本首先toilet使用命令检查是否安装了hash。如果安装了,则使用该字体显示时间。如果没有figlet安装,则使用已安装的字体。如果两者都未安装,则使用常规字体。

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

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

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

toilet -f future --filter border > /tmp/terminal

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

选择颜色

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

printf "\033[36m"       # color 36=cyan

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

00=亮白色,31=红色,三十二=绿色,33=黄色,三十四=蓝色,三十五=紫色,三十六=青色,三十七=白色

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

答案2

如果您只想要简单的时间和日期,您可以将这些添加到 .bashrc 的末尾:

echo -e "Welcome to [$(hostname)] You are logged in as user [$USER]"
echo -e "Local time: [$(date)]"

登录后将显示以下内容:

Welcome to [deathstar] You are logged in as user [skywalker]
[Local time]: Sun Apr 9 10:18:11 CDT 2017.

我有一条蟒蛇脚本我写道,这将把本地天气以及您的 WAN 和 LAN IP 也添加到您的 .bashrc 文件中。设置一个 cronjob 来更新天气。它还附带一个示例 .bashrc

它将显示:

Welcome to [deathstar] You are logged in as user [skywalker]
[Local time]: Sun Apr  9 10:18:11 CDT 2017.
[Local weather]: 68.68 F with few clouds
[Your public IP is]: 1.2.3.4 [Local IP]: 192.168.2.6

如果你想更进一步,你可以添加额外的颜色和格式使你的价值观与你的个人资料相匹配

相关内容