ฉันจะจับเวลาโดยอัตโนมัติในคำสั่งทุบตีได้อย่างไร


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 source แต่คุณสามารถเข้าใกล้ได้โดยหวังว่าจะใกล้พอสำหรับคุณ

คุณสามารถรวมคำสั่งแฮ็กคำสั่งแฮ็ชของ bashและSECONDSตัวแปรเพื่อแสดงเวลานาฬิกาแขวนในลักษณะที่ไม่ล่วงล้ำ นี่คือใช้งานง่ายเนื่องจากวิลล์ 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แทนที่จะEnterเริ่มคำสั่งคุณจะได้รับข้อมูลเวลา ไม่แนะนำให้Rebinding Enter(เช่นCtrl+ M) เนื่องจากบางครั้งคำสั่งที่แก้ไขจะไม่ถูกต้องทางวากยสัมพันธ์

ดูเวลาของคำสั่งวอลล์สุดท้ายสามารถใส่ใน Bash prompt ได้อย่างไร และกำหนดเวลาโดยอัตโนมัติทุกคำสั่งดำเนินการและแสดงในพรอมต์ Bash? บนStack Overflowสำหรับวิธีอื่น ๆ (โปรดทราบว่าส่วนใหญ่ให้เวลาจริงผ่านไปเท่านั้นไม่ใช่เวลา CPU)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.