Команда перед каждой командой bash
Кто-нибудь знает способ поставить команду 'time' перед каждой командой в сеансе bash?
4 ответа
Извините за неправильный ответ раньше, я неправильно понял ваш вопрос.
Чтобы добавить время перед каждой командой, которую вы выполняете в оболочке, вы можете сделать что-то вроде этого
bind 'RETURN: "\e[1~time \e[4~\n"'
Это повторно свяжет ключ возврата. Теперь каждый раз, когда вы нажимаете клавишу возврата вместо ввода новой строки \ n, она будет переходить к началу строки, вводить текст "время" и пробел, переходить к концу строки и вводить новую строку \ n, создавая тем самым желаемую эффект.
Если вы не хотите жертвовать своим ключом ввода, вы можете создать "второй" ключ ввода-ввода, например, F12, связав команду следующим образом.
bind '"\e[24~": "\e[1~time \e[4~\n"'
Теперь вместо замены ключа возврата вы привязали F12.
Предпосылкой всего этого является то, что bash использует GNU readline для чтения команд. Так что readline будет хорошей отправной точкой для дальнейших манипуляций с командами и т. Д.
Я понимаю, что это выходит за рамки этого вопроса, но...
В zsh
(что, насколько мне известно, супер набор Bash), если вы установите следующую переменную в вашем .zshrc
файл:
export REPORTTIME=5
Каждая команда, которая занимает более 5 секунд (я уверен) будет отображать вывод time
, Все команды, которые выполняются быстрее, нет. И в таких случаях это никого не волнует, так что приятно не загромождать вещи. Есть также много других интересных функций в zsh
что вы можете наслаждаться, пока вы на это.
Включите \ t в строку вашего приглашения. В вашем приглашении будет указано время, в которое вы его включили. Смотрите: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/