Мне было интересно, можно ли добавить временные метки к терминальным приглашениям, и если да, то как мне этого добиться?
Мое решение состояло в том, чтобы использовать http://bashrcgenerator.com/ , чтобы сгенерировать эту строку PS1 для вставки .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
, которая будет выглядеть как
[ 111]Использование 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» или print рабочей директории.
Если вам не нравится лишний пробел между конечной скобкой "]" и именем пользователя, просто используйте это очень немного измененное регулярное выражение:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Используйте это, если вы непосредственно редактируете файл.
export PROMPT_COMMAND=date
печатает дату перед отправкой каждого приглашения.
Откройте Ваш .bashrc
через
vim ~/.bashrc
и затем добавьте в следующем к .bashrc
:
#PS1="[\A \u@\h \W\a]$"
где \A
в течение времени (\W
только для конца пути удалите, если Вы хотите весь текущий рабочий путь к каталогу). Затем введите
source ~/.bashrc
Вы будете видеть что-то вроде этого:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
Добавьте эту строку в файл ~/.bashrc
:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Таким образом, результат будет примерно таким:
[07:00:31] user@name:~$
Просто добавьте к ответу @ devav2:
Более простая для чтения команда эха для новичков будет:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Вместо [ 118]
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Так как команда echo не предназначена для оценки во время экспорта, имеет смысл использовать одинарные кавычки для буквальных кавычек, а не двойные кавычки. Использование одинарных кавычек для цитирования всей команды позволяет затем использовать двойные кавычки для цитирования аргумента команды echo, исключая необходимость экранирования специальных символов, таких как ,
[
и $
Самый легкий синтаксис для показа метки времени в командной строке, вероятно, был бы:
PS1='\D{%F} \t $...'
где
\D{format}
отформатированная дата (см. man bash
, Раздел PROMPTING) как
%F
полная дата; то же как %Y-% m-% d (см. man date
, Раздел FORMAT), и
\t
текущее время в 24-часовом формате HH:MM:SS (см. man bash
, Раздел PROMPTING)
nano ~/.bashrc
внесите изменения в переменные PS1 как показано выше
source ~/.bashrc
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
, по крайней мере, взгляды, удобные для меня.
Мое время подобно эти cowsay
ответ выше. Необходимо поместить now
Ваш ~/.bashrc
, но можно также назвать его от терминала путем ввода now
.
Вот снимок экрана:
код удара отправляется в этом очень подробном ответе:
Я думаю, что корректный способ продолжиться состоит в том, чтобы расположиться в $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!"