Як я можу автоматично керувати командами в bash?


14

В 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

Я не думаю, що ви можете досягти точно такого ж ефекту, не змінюючи джерело bash. Але ти можеш наблизитися, сподіваємось, досить близько для тебе.

Ви можете комбінувати бакі гайморовий гачок башми та SECONDSзмінну, щоб показувати час настінного годинника ненав'язливим способом. Ось проста реалізація завдяки Віль Лорікарі . Функції 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інформацію для кожної команди, ось Деніс Вільямсон :

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

Якщо ви натиснете Ctrl+ Jзамість, Enterщоб запустити команду, ви отримаєте інформацію про час. Перезавантаження Enter(тобто Ctrl+ M) не рекомендується, оскільки змінена команда іноді буде синтаксично неправильною.

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

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