EDIT
EDIT : создать ярлык автозаполнения в .inputrc и функцию в .bashrc. Запустите команду, как обычно, введите, но вместо ENTER нажмите комбинацию клавиш, указанную вами в .inputrc
. Человек, который разместил щедрость по этому вопросу, сказал:
«Все существующие ответы требуют ввода дополнительной команды после команды. Мне нужен ответ, который делает это автоматически ».При исследовании решений этой проблемы я наткнулся на этот вопрос из stackexchange, что позволяет привязать ENTER J к последовательности команд: Ctrla (переход к началу строки) , поместите строку «mesure» перед введенной командой, Ctrlm (выполнить)
Таким образом, вы получаете функциональность автозаполнения и отдельную команду J для измерения времени, в то время как сохранение первоначальное назначение второй функции, которую я написал ниже.
На данный момент вот содержимое моего файла ~/.inputrc:
"\C-j": "\C-a measure \C-m"
И вот содержимое .bashrc (примечание , Я не использовал bash навсегда - я использую mksh как свою оболочку, следовательно, это то, что вы видите в исходном сообщении. Функциональность все та же)
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
}
Оригинальная запись
Вот моя идея - используйте функцию в .bashrc. Основной принцип - используйте /usr/bin/time для измерения времени, которое требуется для завершения команды, и если оно более 15 секунд, отправьте уведомление.
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Здесь я перенаправляю вывод на /dev/null, но для просмотра вывода также можно перенаправить файл.
Гораздо лучший подход, IMHO, заключается в отправке вывода времени в какой-либо файл в вашей домашней папке (просто чтобы вы не загрязняли свою систему таймифами и всегда знали, где искать). Вот вторая версия
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" $@
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
И вот скриншоты первой и второй версий, в этом порядке
Первая версия, нет выхода
Вторая версия, с выход