В ударе, для отображения названия текущей программы в Экране GNU hardstatus строка берет только две строки конфигурации. Во-первых, скажите экран, на что обычно похож конец Вашей подсказки, и предоставьте заголовок по умолчанию для окна, когда Вы сидите в в оболочке:
shelltitle "$ |bash"
Затем, поместите эту escape-последовательность в переменную PS1 перед символами, которые обычно завершают подсказку '$ '
в этом случае: \033k\033\\
Эта техника работы, к точке. hardstatus заголовок окна обновляется к названию в настоящее время запускающей программы и затем переключается назад на заголовок по умолчанию вскоре после того, как выполнение будет закончено. Одна основная проблема, однако, состоит в том, что этой строки Escape не оставляют самой, вызывая переносящие строку проблемы с командами дольше, чем начальная строка.
Это было раздражающим, таким образом, я изложил поиск решения. Оказывается, просто выход из предыдущей escape-последовательности исправляет обертывание строки: \[\033k\]\[\033\\\]
Отлично! Мой hardstatus заголовок окна все еще обновляет к названию в настоящее время запускающей программы, и теперь мои более длительные команды переносятся к второй строке правильно. Однако с этой новой escape-последовательностью в моем PS1, экран обновляет заголовок окна к фактической команде, которую я ввожу, не просто название текущей программы, после того как это выполняется.
Я задаюсь вопросом, кто-либо получил эту работу правильно - т.е. обертывание строки и надлежащее обновление hardstatus заголовка окна?
Я не думаю, что экран является правильным местом для обновления той копии. Действительно легко сделать от Ваших конфигураций оболочки. Можно определить a preexec()
функционируйте в своем shellrc файле, который отсылает детали того, что он собирается выполнить, прежде чем он сделает это. Можно распечатать оттуда, чтобы сказать экрану изменять текущий заголовок окна. Я использую zsh, не колотят, таким образом, Ваш пробег будет варьироваться, но я знаю, что то же самое возможно там также. Для ссылки в моем zshrc файле у меня есть что-то вроде этого:
# If running in screen, set the window title to the command about to be executed
preexec() {
[ -n "$WINDOW" ] && print -Pn "^[k$2^[\\"
}
# If in screen, blank the window title when displaying the prompt
premd() {
[ -n "$WINDOW" ] && print -Pn "^[k ^[\\"
}
В действительности я делаю некоторую очистку команды прежде, чем отобразить его как заголовок. Например, Вы могли использовать print -Pn "^[k`echo $2|perl -pne 's!\s.*/! !g'|cut -c1-16`^[\\"
в предварительном должностном лице () выше для проявления намного более чистой информации, о какой собирается быть выполненным. Это снимает изоляцию с путей только к последнему компоненту и нескольких приемов ниндзя.