Додавання часових позначок до підказки терміналу?


53

Мені було цікаво, чи можна додати часові позначки до підказки терміналів, і якщо так, то як я можу цього досягти?


перевірте це посилання, щоб синхронізувати робочий годинник
Mana

Відповіді:


60

Додайте цей рядок у ~/.bashrcфайл:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

Тож вихід буде чимось на кшталт:

[07:00:31] user@name:~$

Іноді я переживаю, що час не правильний і він старший, начебто якась затримка. Я хоч міг би скористатися ним, щоб побачити, скільки часу займають певні команди (бурчання ..). Як це може бути?
Кевін Сімпер

2
@ devav2: Чи є спосіб вказати часовий пояс?
Бегемот

Чи є спосіб ви також можете додати позначку часу до терміналу, коли ви використовуєте root? У мене є лише штамп часу, коли я звичайний користувач. Спасибі
Юфенюй Вейдер Дідер

4
Для dateкоманди можна замінити +%H:%M:%Sна +%T.
snapfractalpop

5
Це затягнуто з моєї термінальній упаковкою, тому я використав підхід детально тут замість цього. Просто додайте "\ D {% T}" до свого PS1
rbennett485

25

Моє рішення полягало у використанні 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 працює.


Посилання тут чудово підходить для подальшої настройки штампів.
cellepo

16

Замість того, щоб додавати дату до самого підказки, ви можете додати дату безпосередньо перед підказкою, розмістивши наступний рядок у верхній частині свого .bashrc. Для його роботи вам також потрібно буде встановити cowsay. Це цікавий спосіб відображення дати, зберігаючи коротке підказку:

cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"

У своєму теперішньому вигляді він буде працювати в будь-якій системі без поправок під час читання $USERта dateзмінної з поточного середовища.

введіть тут опис зображення


8
Сенс введення його в підказку - знати, коли ви востаннє виконували певну команду.
Джеймс Олтманс

6

Оскільки мені не вистачає репутаційних балів, щоб додати коментар до відповіді, щоб покращити його. Здавалося б, єдиний спосіб я додати інформацію - це створити другу відповідь. Отже, я повторю сказане як відповідь і будую на цьому.

Відредагуйте .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)\]\\"

Використовуйте це, якщо ви безпосередньо редагуєте файл.


1
Ви можете запропонувати зміни.
муру

4
export PROMPT_COMMAND=date

друкує дату перед видачею кожного запиту.


1

Відкрийте свій .bashrcvia

vim ~/.bashrc

а потім додайте наступне до .bashrc:

#PS1="[\A \u@\h \W\a]$" 

де \Aчас ( \Wлише для кінця шляху, видаліть, якщо потрібно весь поточний шлях робочого каталогу). Потім введіть

source ~/.bashrc

Ви побачите щось подібне:

[16:04 trwood@cobalt04 ~/MCEq_dev]$

1
вилучення \Wвзагалі не покаже шляху. \wдасть повний шлях.
Zanna

0

Просто для додання відповіді @ devav2:

Простішою для читання командою ехо для новачків буде:

export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'

Замість

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

Оскільки команда echo не передбачається оцінювати під час експорту, має більше сенсу використовувати одиничні лапки для прямого цитування, а не подвійні лапки. Використання одинарних лапок для цитування всієї команди дозволяє потім використовувати подвійні лапки, щоб цитувати аргументацію команди echo, усуваючи необхідність уникнути спеціальних символів, таких як , [і$


1
Екрани використовуються для форматування (дужки). Я не бачу, що це додає до прийнятої відповіді.
Старійшина Гік

Ви можете додати їх до 'echo -n' $ (дата +% H:% M:% S) "'також:' echo -n" [$ (дата +% H:% M:% S)] "" без потрібно втекти від них. Перевагою використання рядка як аргументації команди echo є те, що тепер вам не потрібно уникати того, що в іншому випадку може бути оцінено bash, полегшуючи його читання.
qwertyzw

@ElderGeek Я додав додаткових роз'яснень. Я сподіваюся, що це допомагає.
qwertyzw

0

Я думаю, що правильний спосіб продовжувати - знаходити $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!"

0

Найпростішим синтаксисом для відображення часової позначки в командному рядку, мабуть, буде:

    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

0

Мій час схожий на cowsayвідповідь вище. Вам потрібно поставити nowсвій, ~/.bashrcале ви можете також зателефонувати йому з терміналу, набравши now.

Ось скріншот:

now.png

Код bash розміщений у цій дуже детальній відповіді:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.