Как получить время перед запуском команды каждый раз в терминале?

Я хотел бы, чтобы каждый раз, когда я запускаю команду в терминале, у меня есть время, отображаемое в моем терминах, тогда команда выполнена.

2
задан 12 August 2017 в 06:21

9 ответов

Вы можете просто запустить

 PROMPT_COMMAND="date"

на вашем терминале, и каждый раз, когда на вашем терминале запускается команда, текущая дата и время будут распечатаны на вашем терминале. Как было предложено @ pa4080, чтобы сделать его постоянным, добавьте PROMPT_COMMAND="date" в ваш файл ~ / .bashrc.

From man bash:

PROMPT_COMMAND Если установлено, значение выполняется как команда перед выдачей каждого первичного приглашения.

Я думаю, вы можете использовать ту же команду PROMPT_COMMAND=, чтобы запускать почти «что угодно», которое вы хотите запустить, когда команда запускается на терминале.

Если вы используете tmux, также отображать время на углу:

tmux

8
ответ дан 22 May 2018 в 19:57
  • 1
    Чтобы сделать его постоянным, включите PROMPT_COMMAND="date" в ~/.bashrc. – pa4080 1 August 2017 в 16:04
  • 2
    Но не показывает ли дата / время , когда программа завершила и вернулась в приглашение CLI? – RonJohn 1 August 2017 в 16:53
  • 3
    Как указывалось ранее, это отображает время отображения приглашения, а не время выполнения команды. Если вы действительно хотите увидеть, когда время начато, вы можете сделать " date; yourcommand " (Альбиет, не очень удобно). – Brad 1 August 2017 в 20:08

Вы можете просто запустить

PROMPT_COMMAND="date"

на вашем терминале, и каждый раз, когда на вашем терминале запускается команда, текущая дата и время будут распечатаны на вашем терминале. Как было предложено @ pa4080, чтобы сделать его постоянным, добавьте PROMPT_COMMAND="date" в ваш файл ~ / .bashrc.

From man bash:

PROMPT_COMMAND Если установлено, значение выполняется как команда перед выдачей каждого первичного приглашения.

Я думаю, вы можете использовать ту же команду PROMPT_COMMAND=, чтобы запустить почти «что угодно», которое вы хотите запустить, когда команда запускается на терминале.

Если вы используете tmux, также отображать время на углу:

tmux

8
ответ дан 18 July 2018 в 09:16

Вы можете просто запустить

PROMPT_COMMAND="date"

на вашем терминале, и каждый раз, когда на вашем терминале запускается команда, текущая дата и время будут распечатаны на вашем терминале. Как было предложено @ pa4080, чтобы сделать его постоянным, добавьте PROMPT_COMMAND="date" в ваш файл ~ / .bashrc.

From man bash:

PROMPT_COMMAND Если установлено, значение выполняется как команда перед выдачей каждого первичного приглашения.

Я думаю, вы можете использовать ту же команду PROMPT_COMMAND=, чтобы запускать почти «что угодно», которое вы хотите запустить, когда команда запускается на терминале.

Если вы используете tmux, также отображать время на углу:

tmux

8
ответ дан 24 July 2018 в 19:17

Предполагая, что вы используете Bash, вы можете установить PROMPT_COMMAND на команду, которая выполняется при распечатке приглашения. Аналогично, вы можете запустить произвольную команду, включив подмену команды в приглашении:

$ PS1='[$(date +"%T")] \u@\h \w\$ '
[22:17:54] user@somehost /tmp$ 

Но это достаточно распространено, что Bash поддерживает его с полки

\D{format} формат передается в strftime(3), и результат вставляется в строку приглашения; пустой формат приводит к представлению времени, специфичному для локали. Требуются скобки.

Итак, аналогично предыдущему

$ PS1='[\D{%T}] \u@\h \w\$ '

Но те печатают время, в которое было напечатано приглашение. Это может произойти довольно долго, пока не будет выполнена следующая команда. Чтобы получить время запуска команды, мы можем использовать ловушку DEBUG, которая выполняется один раз для каждой выполняемой командной строки.

$ starttime() { date +"Command started at %T"; }
$ trap starttime DEBUG
$ ls -l /dev/null
Command started at 22:25:07
crw-rw-rw- 1 root root 1, 3 Jul 18 21:46 /dev/null

Ловушка DEBUG также может использовать переменную $BASH_COMMAND который содержит исполняемую команду, но это, вероятно, не очень полезно, поскольку в командной строке все равно видится в командной строке.

3
ответ дан 22 May 2018 в 19:57

использовать zsh-терминал, этот терминал может отображать команду запуска времени по времени

https://github.com/robbyrussell/oh-my-zsh/wiki/themes#xiong -chiamiov

1
ответ дан 22 May 2018 в 19:57

использовать zsh-терминал, этот терминал может отображать команду запуска времени по времени

https://github.com/robbyrussell/oh-my-zsh/wiki/themes#xiong -chiamiov

1
ответ дан 18 July 2018 в 09:16

Предполагая, что вы используете Bash, вы можете установить PROMPT_COMMAND на команду, которая выполняется при распечатке приглашения. Аналогично, вы можете запустить произвольную команду, включив подмену команды в приглашении:

$ PS1='[$(date +"%T")] \u@\h \w\$ ' [22:17:54] user@somehost /tmp$

Но это достаточно распространено, что Bash поддерживает его с полки

\D{format} формат передается в strftime(3), и результат вставляется в строку приглашения; пустой формат приводит к представлению времени, специфичному для локали. Требуются скобки.

Итак, аналогично предыдущему

$ PS1='[\D{%T}] \u@\h \w\$ '

Но те печатают время, в которое было напечатано приглашение. Это может произойти довольно долго, пока не будет выполнена следующая команда. Чтобы получить время запуска команды, мы можем использовать ловушку DEBUG, которая выполняется один раз для каждой выполняемой командной строки.

$ starttime() { date +"Command started at %T"; } $ trap starttime DEBUG $ ls -l /dev/null Command started at 22:25:07 crw-rw-rw- 1 root root 1, 3 Jul 18 21:46 /dev/null

Ловушка DEBUG также может использовать переменную $BASH_COMMAND который содержит исполняемую команду, но это, вероятно, не очень полезно, поскольку в командной строке все равно видится в командной строке.

3
ответ дан 18 July 2018 в 09:16

использовать zsh-терминал, этот терминал может отображать команду запуска времени по времени

https://github.com/robbyrussell/oh-my-zsh/wiki/themes#xiong -chiamiov

1
ответ дан 24 July 2018 в 19:17

Предполагая, что вы используете Bash, вы можете установить PROMPT_COMMAND на команду, которая выполняется при распечатке приглашения. Аналогично, вы можете запустить произвольную команду, включив подмену команды в приглашении:

$ PS1='[$(date +"%T")] \u@\h \w\$ ' [22:17:54] user@somehost /tmp$

Но это достаточно распространено, что Bash поддерживает его с полки

\D{format} формат передается в strftime(3), и результат вставляется в строку приглашения; пустой формат приводит к представлению времени, специфичному для локали. Требуются скобки.

Итак, аналогично предыдущему

$ PS1='[\D{%T}] \u@\h \w\$ '

Но те печатают время, в которое было напечатано приглашение. Это может произойти довольно долго, пока не будет выполнена следующая команда. Чтобы получить время запуска команды, мы можем использовать ловушку DEBUG, которая выполняется один раз для каждой выполняемой командной строки.

$ starttime() { date +"Command started at %T"; } $ trap starttime DEBUG $ ls -l /dev/null Command started at 22:25:07 crw-rw-rw- 1 root root 1, 3 Jul 18 21:46 /dev/null

Ловушка DEBUG также может использовать переменную $BASH_COMMAND который содержит исполняемую команду, но это, вероятно, не очень полезно, поскольку в командной строке все равно видится в командной строке.

3
ответ дан 24 July 2018 в 19:17

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

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