Мені було цікаво, чи можна додати часові позначки до підказки терміналів, і якщо так, то як я можу цього досягти?
Мені було цікаво, чи можна додати часові позначки до підказки терміналів, і якщо так, то як я можу цього досягти?
Відповіді:
Додайте цей рядок у ~/.bashrc
файл:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Тож вихід буде чимось на кшталт:
[07:00:31] user@name:~$
date
команди можна замінити +%H:%M:%S
на +%T
.
Моє рішення полягало у використанні http://bashrcgenerator.com/ для створення цієї лінії PS1 для розміщення .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Який буде схожий
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
Використання PROMPT_COMMAND зіпсує історію для мене. Коли довгий рядок з'являється під час руху по історії, він відрізає кінець підказки на таку ж кількість символів, що і часова мітка, додана на передню частину. напр
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
І цей рядок не можна редагувати, оскільки він не відображає символів у потрібному місці, як і ви не вводите, де це виглядає, як ви набираєте текст.
Я здогадуюсь, що це можна зробити за допомогою PROMPT_COMMAND, можливо, використовуючи цю частину [$ (tput sgr0)], але PS1 працює.
Замість того, щоб додавати дату до самого підказки, ви можете додати дату безпосередньо перед підказкою, розмістивши наступний рядок у верхній частині свого .bashrc
. Для його роботи вам також потрібно буде встановити cowsay
. Це цікавий спосіб відображення дати, зберігаючи коротке підказку:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
У своєму теперішньому вигляді він буде працювати в будь-якій системі без поправок під час читання $USER
та date
змінної з поточного середовища.
Оскільки мені не вистачає репутаційних балів, щоб додати коментар до відповіді, щоб покращити його. Здавалося б, єдиний спосіб я додати інформацію - це створити другу відповідь. Отже, я повторю сказане як відповідь і будую на цьому.
Відредагуйте .bashrc файл для користувача, для якого потрібно змінити штамп дати.
Якщо ви бачите "user @ host: ~ $", ви знаходитесь у домашньому каталозі вашого поточного користувача. Файл .bashrc - це прихований файл, оскільки він є префіксом крапки ".". Щоб побачити його у списку, вам потрібно буде скористатися довгим списком.
Ви можете використовувати "ls -a", і тоді ви повинні побачити файл ".bashrc".
Відредагуйте файл за допомогою текстового редактора. Для прикладу "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" або будь-який редактор, який ви хочете використовувати.
Якщо ви хочете скопіювати це сценарій і плануєте додавати його до багатьох оболонок для багатьох користувачів, можливо, вигідно використовувати команду "echo" спільно з оператором ">>", що додає. Наприклад,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Якщо ви використовуєте цей метод, будьте впевнені, що ви перебуваєте в поточній робочій директорії користувача, для якого ви хочете змінити його. Щоб перевірити це, ви можете скористатися командою "pwd" або надрукувати робочий каталог.
Якщо вам не подобається додатковий пробіл між кінцевою дужкою "]" та ім'ям користувача, просто використовуйте цей злегка змінений регулярний вираз:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Використовуйте це, якщо ви безпосередньо редагуєте файл.
Відкрийте свій .bashrc
via
vim ~/.bashrc
а потім додайте наступне до .bashrc
:
#PS1="[\A \u@\h \W\a]$"
де \A
час ( \W
лише для кінця шляху, видаліть, якщо потрібно весь поточний шлях робочого каталогу). Потім введіть
source ~/.bashrc
Ви побачите щось подібне:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
взагалі не покаже шляху. \w
дасть повний шлях.
Просто для додання відповіді @ devav2:
Простішою для читання командою ехо для новачків буде:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Замість
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Оскільки команда echo не передбачається оцінювати під час експорту, має більше сенсу використовувати одиничні лапки для прямого цитування, а не подвійні лапки. Використання одинарних лапок для цитування всієї команди дозволяє потім використовувати подвійні лапки, щоб цитувати аргументацію команди echo, усуваючи необхідність уникнути спеціальних символів, таких як ,
[
і$
Я думаю, що правильний спосіб продовжувати - знаходити $HOME/.bashrc
коди, які встановлює PS1
, коментувати їх та додавати особисті. Наприклад, це мій блок:
PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"
if [ "$color_prompt" = yes ]; then
PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Вихід:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
Найпростішим синтаксисом для відображення часової позначки в командному рядку, мабуть, буде:
PS1='\D{%F} \t $...'
де
\D{format}
форматується дата (див. man bash
розділ ПЕРЕДАЧА) як
%F
повна дата; те саме, що% Y-% m-% d (див. man date
розділ FORMAT) та
\t
- це поточний час у 24-годинній HH: MM: SS-форматі (див. man bash
розділ PROMPTING)
nano ~/.bashrc
внести зміни до змінних PS1, як показано вище
source ~/.bashrc
Мій час схожий на cowsay
відповідь вище. Вам потрібно поставити now
свій, ~/.bashrc
але ви можете також зателефонувати йому з терміналу, набравши now
.
Ось скріншот:
Код bash розміщений у цій дуже детальній відповіді:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
принаймні виглядає для мене зручно.