توقيت تلقائيا كل أمر تنفيذ وإظهار في مطالبة باش؟ [مكرر

StackOverflow https://stackoverflow.com/questions/1176386

  •  19-09-2019
  •  | 
  •  

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

غالبا ما يحدث أن ننسى عمليات إعدام البادئة بشكل صريح مع الأمر "الوقت"، من الناحية المثالية، أود أن أرى في SHELT SHELT موجه مقدار الوقت الحقيقي الذي استغرق الأمر الأخير (على كل أمر).

لقد تممنا بالفعل من خلال وثائق باش، لكن لم أتمكن من العثور على أي شيء متعلق.

هل كانت مفيدة؟

المحلول

يمكنك القيام بذلك:

$ bind '"\C-j": "\C-atime \C-m"'

أو ضع هذا في ~/.inputrc:

"\C-j": "\C-atime \C-m"

ثم عندما تريد أن تفعل time sleep 1 تريد أن تكتب sleep 1 و اضغط كنترول+ج بدلا من يدخل.

لن أوصي تبديل j و m في الأمر BIND (أو في ملف .inputrc). في كل مرة كنت تضغط يدخل كنت تحصل على time إضافة والتي يمكن أن تكون مزعجة جدا وتسبب أخطاء عند كتابة أمر متعدد الخطوط.

يمكنك إضافة هذا إلى ~/.bashrc لجعل إخراج time أكثر إحكاما:

export TIMEFORMAT='r: %R, u: %U, s: %S'

(يشبه إجابتي هنا.)

نصائح أخرى

خيط stackoverflow آخر يغطي أساسا نفس السؤال. إجابتي في هذا الموضوع يمكن تلخيصها على النحو التالي:

trap 'SECONDS=0' DEBUG
export PS1='your_normal_prompt_here ($SECONDS) # '

... لعرض عدد الثواني كعدد صحيح، أو:

seconds2days() { # convert integer seconds to Ddays,HH:MM:SS
    printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \
    $(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) |
    sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; }
trap 'SECONDS=0' DEBUG
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # '

.. للحصول على "Ddays، HH: MM: SS" مع إزالة القيم الفارغة الرائدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top