Bagaimana saya bisa secara otomatis mengatur waktu perintah di bash?

14

Di tcsh, ada variabel 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.

Bagaimana saya melakukan ini bash?

Eyal
sumber

Jawaban:

14

Saya tidak berpikir Anda dapat mencapai efek yang persis sama tanpa memodifikasi sumber bash. Tapi Anda bisa dekat, semoga cukup dekat untuk Anda.

Anda dapat menggabungkan kait prasyarat hack bash dan SECONDSvariabel untuk menunjukkan waktu jam dinding dengan cara yang tidak mengganggu. Berikut ini adalah implementasi sederhana dari Ville Laurikari . Fungsi timer_startdan timer_stopdieksekusi segera sebelum memulai perintah dan segera sebelum menampilkan prompt berikutnya.

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]$ '

Untuk mendapatkan timeinformasi lengkap untuk setiap perintah, berikut cara yang bisa dilakukan Dennis Williamson :

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

Ketika Anda menekan Ctrl+ Jalih-alih Entermemulai perintah, Anda akan mendapatkan informasi waktu. Rebinding Enter(yaitu Ctrl+ M) tidak disarankan karena perintah yang dimodifikasi terkadang secara sintaksis salah.

Lihat Bagaimana cara waktu dinding perintah terakhir dimasukkan ke Bash prompt? dan Secara otomatis menghitung waktu setiap perintah yang dieksekusi dan ditampilkan di Bash prompt? pada Stack Overflow untuk metode lain (namun perhatikan bahwa sebagian besar hanya memberikan waktu nyata berlalu, bukan waktu CPU).

Gilles 'SANGAT berhenti menjadi jahat'
sumber