Как я могу автоматически синхронизировать команды в bash?

В tcsh есть переменная time:

   The time shell variable can be set to execute the time builtin command
   after the completion of any process that takes more than a given number
   of CPU seconds.

Как мне сделать это в bash?

14
задан 7 February 2017 в 04:06

1 ответ

Я не думаю, что можно достигнуть точно того же эффекта, не изменяя источник удара. Но можно быть рядом, надо надеяться, достаточно близко для Вас.

Можно объединить рычаг hacky удара перед командой и SECONDS переменная для показа стены показывает время ненавязчивым способом. Вот простая реализация из-за Ville Laurikari. Функции timer_start и timer_stop выполняются сразу прежде, чем запустить команду и сразу прежде, чем отобразить следующую подсказку.

function timer_start {
  timer=${timer:-$SECONDS}
}
function timer_stop {
  timer_show=$(($SECONDS - $timer))
  unset timer
}
trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop
PS1='[last: ${timer_show}s][\w]$ '

Получить полное time информация для каждой команды, вот путь из-за Dennis Williamson:

bind '"\C-j": "\C-atime {\C-e;}\C-m"'

При нажатии Ctrl+J instead of Enter для запуска команды, Вы получите информацию времени. Повторное переплетение Входит (т.е. Ctrl+M) не рекомендуется, потому что измененная команда иногда будет синтаксически неправильной.

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

14
ответ дан 7 February 2017 в 04:06

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

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