当按下Ctrl+ Alt+T打开终端时,我得到一个带有简单输入提示的空白屏幕。
是否可以(通过修改~/.bashrc
)显示当前日历,突出显示今天和当前时间?
如果时间可以以大数字显示(使用 figlet?)那将是一个好处。
答案1
改良版
您可以在此处看到改进的版本:https://askubuntu.com/a/1020693/307523
它看起来像这样:
原始版本
您可以使用脚本在打开终端时打印介绍横幅~/.bashrc
。如果您有 figlet ( sudo apt install figlet
),您可以利用大字母显示时间:
在第一个实例中figlet
用于显示时间,在第二个实例中,使用常规字体。
使用的其他屏幕示例toilet
此屏幕使用toilet
包中的字体。最后一个例子使用future
字体,并在下面的代码中使用。此外,日历在下面的代码中设置为青色。
此软件包允许在其衍生的软件包toilet
上添加其他字体类型和格式样式。要安装此软件包,请在按照上述说明进行安装后使用。figlet
sudo apt install toilet
figlet
代码
这是使一切正常运行所需的代码。建议将此脚本放在您的/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
- 保存文件
现在,当打开终端时,您将看到当前月份日历上突出显示的当前日期,然后是当前时间。
剖析代码
这里我们将简单看一下代码的工作原理,而不讨论每一行。
figlet
和toilet
包裹
脚本首先toilet
使用命令检查是否安装了hash
。如果安装了,则使用该字体显示时间。如果没有figlet
安装,则使用已安装的字体。如果两者都未安装,则使用常规字体。
在上面的代码中,可以将注释复制到您的命令行并执行以在您的终端上显示可用字体figlet
:toilet
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
如果你想更进一步,你可以添加额外的颜色和格式使你的价值观与你的个人资料相匹配