Когда терминал открыт, я могу получить текущий календарь и отображенное время?

Чтобы нажатие Ctrl+Alt+T открыло терминал, я получаю пустой экран с упрощенной входной подсказкой.

Действительно ли это возможно (путем изменения ~/.bashrc возможно) для отображения текущего календаря с сегодня выделенным и текущее время?

Если время может быть отображено в больших количествах (использующий figlet?), который был бы премией.

7
задан 12 April 2017 в 14:53

2 ответа

Улучшенная версия

Вы видите улучшенную версию здесь: https://askubuntu.com/a/1020693/307523

Это похоже на это:

Terminal Splash Screen


Исходная версия

Можно распечатать вводный баннер, когда терминал открыт с помощью ~/.bashrc сценарий. Если у Вас есть figlet (sudo apt install figlet) можно использовать в своих интересах большие буквы для отображения времени:

now

Прежде всего figlet используется для отображения времени, и во втором используется регулярный шрифт.

Дополнительное экранное использование в качестве примера toilet

now 3

Этот экран использует шрифты от 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

Сценарий Mark как исполняемый файл

Скопируйте этот код в своего редактора и сохраните его в файл 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=bright, 31=red, 32=green, 33=yellow, 34=blue, 35=purple, 36=cyan, 37=white

При нахождении дополнительных цветовых кодов, добавьте комментарий ниже или обновите этот ответ.

9
ответ дан 23 November 2019 в 06:26

Если Вы просто хотите простое время и дату, можно добавить их в конец .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.

У меня есть сценарий Python, я записал, что это добавит локальную погоду и Вашу WAN и дюйм/с LAN в Ваш .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

Если Вы хотите взять его шаг вперед, можно добавить дополнительные цвета и форматирующий, чтобы заставить значения соответствовать профилю

1
ответ дан 23 November 2019 в 06:26

Другие вопросы по тегам:

Похожие вопросы: