Хочу вычурный $PS1
От: Кодт Россия  
Дата: 08.06.15 14:57
Оценка:
Чтобы печатал время до и после выполнения операции.
PS1='\u@\h \w \$'              # myself@computer ~/hello/world $
PS1='\u@\h \w \D{%H:%M:%S} \$' # myself@computer ~/hello/world 12:34:56 $

А вот чтобы он выводил ещё и время предыдущего промпта, или даже время выполнения предыдущей операции?
Перекуём баги на фичи!
Re: Хочу вычурный $PS1
От: Doom100500 Израиль  
Дата: 09.06.15 06:31
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Чтобы печатал время до и после выполнения операции.

К>
К>PS1='\u@\h \w \$'              # myself@computer ~/hello/world $
К>PS1='\u@\h \w \D{%H:%M:%S} \$' # myself@computer ~/hello/world 12:34:56 $
К>

К>А вот чтобы он выводил ещё и время предыдущего промпта, или даже время выполнения предыдущей операции?

Попробуй билдер
Спасибо за внимание
Re[2]: Хочу вычурный $PS1
От: Кодт Россия  
Дата: 09.06.15 09:18
Оценка:
Здравствуйте, Doom100500, Вы писали:

К>>А вот чтобы он выводил ещё и время предыдущего промпта, или даже время выполнения предыдущей операции?

D>Попробуй билдер

Билдер знает только про стандартные макросы — \t всякое.
Вопрос в том, как засекать время до.

Вариант
function my_shift_time()
{
  local  OLD=$NOW
  export NOW=`date +%T`
  echo "$OLD ... $NOW"
}

.....

export PS1='..... $(my_shift_time) .....'

Не прокатывает, потому что вызов функции выполняется в субпроцессе, и переменная NOW тут же теряется — не доживает до следующего запуска подстановки $PS1.

Есть ли в баше какой-то способ отлавливать начало выполнения пользовательской команды? Т.е. по нажатию на ENTER там выполнялось не просто eval $что-там-юзер-ввёл, а on-start / eval ... / on-finish?
Перекуём баги на фичи!
Re[3]: Хочу вычурный $PS1
От: Doom100500 Израиль  
Дата: 09.06.15 09:38
Оценка: 34 (1)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Doom100500, Вы писали:


К>>>А вот чтобы он выводил ещё и время предыдущего промпта, или даже время выполнения предыдущей операции?

D>>Попробуй билдер

К>Билдер знает только про стандартные макросы — \t всякое.

К>Вопрос в том, как засекать время до.

К>Вариант

К>
К>function my_shift_time()
К>{
К>  local  OLD=$NOW
К>  export NOW=`date +%T`
К>  echo "$OLD ... $NOW"
К>}

К>.....

К>export PS1='..... $(my_shift_time) .....'
К>

К>Не прокатывает, потому что вызов функции выполняется в субпроцессе, и переменная NOW тут же теряется — не доживает до следующего запуска подстановки $PS1.

К>Есть ли в баше какой-то способ отлавливать начало выполнения пользовательской команды? Т.е. по нажатию на ENTER там выполнялось не просто eval $что-там-юзер-ввёл, а on-start / eval ... / on-finish?


нарыл какой-то bash-preexec надеюсь поможет.
Спасибо за внимание
Re[4]: Хочу вычурный $PS1
От: VladCore  
Дата: 15.10.15 16:21
Оценка:
Здравствуйте, Doom100500, Вы писали:


К>>Есть ли в баше какой-то способ отлавливать начало выполнения пользовательской команды? Т.е. по нажатию на ENTER там выполнялось не просто eval $что-там-юзер-ввёл, а on-start / eval ... / on-finish?


D>нарыл какой-то bash-preexec надеюсь поможет.


мне тоже интересно, что бы прописать такое в .bashrc что бы bash-preexec выводил real/user/sys затраты к примеру?

я пока научился пользоваться только time (command line)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.