Мне было интересно, можно ли добавить временные метки к подсказкам терминала, и если да, то как я могу этого добиться?
Мне было интересно, можно ли добавить временные метки к подсказкам терминала, и если да, то как я могу этого добиться?
Ответы:
Добавьте эту строку в ~/.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» или print рабочей директории.
Если вам не нравится лишний пробел между конечной скобкой "]" и именем пользователя, просто используйте это очень немного измененное регулярное выражение:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Используйте это, если вы непосредственно редактируете файл.
Открой свой .bashrc
через
vim ~/.bashrc
и затем добавьте следующее к .bashrc
:
#PS1="[\A \u@\h \W\a]$"
где \A
время ( \W
только для конца пути, удалите, если вы хотите полный путь к текущему рабочему каталогу). Затем введите
source ~/.bashrc
Вы увидите что-то вроде этого:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
не покажет пути вообще. \w
даст полный путь.
Просто чтобы добавить к ответу @ devav2:
Более простая для чтения команда echo для новичков будет выглядеть так:
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-часовом формате ЧЧ: ММ: СС (см. man bash
раздел «ЗАДАНИЕ»)
nano ~/.bashrc
внести изменения в переменные PS1, как показано выше
source ~/.bashrc
Мое время похоже на cowsay
ответ выше. Вы должны поставить now
свой, ~/.bashrc
но вы также можете позвонить из терминала, набрав now
.
Вот скриншот:
Код bash размещен в этом очень подробном ответе:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
по крайней мере, выглядит удобно для меня.