16

Кто-нибудь знает способ поставить команду 'time' перед каждой командой в сеансе bash?

4 ответа4

35

Извините за неправильный ответ раньше, я неправильно понял ваш вопрос.

Чтобы добавить время перед каждой командой, которую вы выполняете в оболочке, вы можете сделать что-то вроде этого

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 будет хорошей отправной точкой для дальнейших манипуляций с командами и т.д.

5

Я понимаю, что это выходит за рамки этого вопроса, но ...

В zsh (который, насколько мне известно, это супер набор bash), если вы установите следующую переменную в вашем файле .zshrc :

export REPORTTIME=5

Каждая команда, которая занимает больше 5 секунд (я уверен) будет отображать вывод time . Все команды, которые выполняются быстрее, нет. И в таких случаях это никого не волнует, так что приятно не загромождать вещи. Есть также много других интересных функций в zsh , которые могут вам понравиться.

0

PS1 кажется стандартным способом сделать что-то вроде этого.

0

Включите \t в строку вашего приглашения. Это будет включать время в вашем приглашении в тот момент, когда вы его включите. Смотрите:http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .