BIÊN TẬP
TL; DR : tạo lối tắt tự động hoàn thành trong .inputrc
và hoạt động trong .bashrc
. Chạy lệnh như bình thường, nhập, nhưng thay vì ENTER, nhấn phím tắt mà bạn đã chỉ định trong.inputrc
Người đặt tiền thưởng cho câu hỏi này cho biết:
"Tất cả các câu trả lời hiện tại yêu cầu nhập một lệnh bổ sung sau lệnh. Tôi muốn một câu trả lời tự động thực hiện điều này."
Trong khi nghiên cứu các giải pháp cho vấn đề này, tôi đã vấp phải câu hỏi này từ stackexchange, cho phép liên kết CtrlJvới một chuỗi các lệnh: Ctrla(di chuyển đến đầu dòng), đặt chuỗi "mesure" trước lệnh bạn đã nhập, Ctrlm(thực thi)
Do đó, bạn có được chức năng tự động hoàn thành và ENTERlệnh riêng biệt để đo thời gian, trong khi vẫn duy trì mục đích ban đầu của chức năng thứ hai tôi đã đăng dưới đây.
Đến bây giờ, đây là nội dung của ~/.inputrc
tập tin của tôi :
"\C-j": "\C-a measure \C-m"
Và đây là nội dung của .bashrc
(lưu ý, tôi đã không sử dụng bash mãi mãi - tôi sử dụng mksh làm vỏ của mình, do đó đó là những gì bạn thấy trong bài viết gốc. Chức năng vẫn giống nhau)
PS1=' serg@ubuntu [$(pwd)]
================================
$ '
function measure ()
{
/usr/bin/time --output="/home/xieerqi/.timefile" -f "%e" $@
if [ $( cat ~/.timefile| cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Bài gốc
Đây là ý tưởng của tôi - sử dụng một chức năng trong .bashrc
. Nguyên tắc cơ bản - sử dụng /usr/bin/time
để đo thời gian cần thiết để hoàn thành lệnh và nếu quá 15 giây, hãy gửi thông báo.
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Ở đây tôi đang chuyển hướng đầu ra /dev/null
nhưng để xem đầu ra, chuyển hướng đến tập tin cũng có thể được thực hiện.
Một cách tiếp cận tốt hơn nhiều, IMHO, là gửi đầu ra thời gian đến một số tệp trong thư mục nhà của bạn (chỉ để bạn không làm ô nhiễm hệ thống của mình bằng các khung thời gian và luôn biết phải tìm ở đâu). Đây là phiên bản thứ hai
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" $@
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Và đây là ảnh chụp màn hình của phiên bản thứ nhất và thứ hai, theo thứ tự đó
Phiên bản đầu tiên, không có đầu ra
Phiên bản thứ hai, với đầu ra