Командная строка перезаписывает себя, когда команды становятся слишком длинными - PullRequest
31 голосов
/ 08 января 2010

Я использую PuTTY для входа на сервер Debian. У меня есть странная проблема: когда набираемая команда становится слишком длинной, она не оборачивается и не начинает новую строку. Вместо этого он начинается с начала той же строки и начинает перезаписывать приглашение, а затем начало команды.

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

Ответы [ 7 ]

65 голосов
/ 28 февраля 2012

Я только что решил это сам.

В командной строке PS1 были только некоторые побеги цвета:

LTGREEN="\033[40;1;32m"
LTBLUE="\033[40;1;34m"
CLEAR="\033[0m"
LIGHT_GRAY="\033[40;1;33m"
export PS1="$LTGREEN\u$LTBLUE@\h:$LIGHT_GRAY\w$CLEAR ❯ "

Проблема в том, что литералы цвета не заключены в скобки. Размещение экранированных скобок вокруг них полностью решает проблему:

LTGREEN="\[\033[40;1;32m\]"
LTBLUE="\[\033[40;1;34m\]"
CLEAR="\[\033[0m\]"
LIGHT_GRAY="\[\033[40;1;33m\]"
export PS1="$LTGREEN\u$LTBLUE@\h:$LIGHT_GRAY\w$CLEAR ❯ "

Надеюсь, это поможет.

12 голосов
/ 08 января 2010

Я видел такое поведение, когда вы изменяете размер окна Putty во время выполнения другой команды, поскольку bash не получает сигнал, сообщающий, что размер окна изменился.

Если это проблема добавления:

shopt -s checkwinsize

должно заставить его уйти.

9 голосов
/ 08 января 2010

Попробуйте:

eval $(resize)

1004 *

7 голосов
/ 08 января 2010

Попробуйте нажать Ctrl + L . (Или, может быть, Alt + L - что-то + L в любом случае.) Если я правильно помню, это повторно запускает код для определения вашего терминала размер и регулируется соответственно.

2 голосов
/ 15 января 2014
Ctrl-l

Ctrl-l работает. Я полагаю, что замазка, необходимая для

1 голос
/ 09 августа 2016

Это решение работает для меня: Добавьте следующий фрагмент к вашему .bashrc:

if [ $(tty) == '/dev/ttyS0' ]; then
  trap resize DEBUG
fi
0 голосов
/ 08 января 2010

Ничего общего с замазкой - это "bash" ism.

Это довольно полезно, когда вы привыкнете к нему, но, если это вас беспокоит, вы можете переключиться на «ksh», который делает что-то другое с длинными командными строками (не уверен, что в Debian!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...