40

我正在使用 PuTTY 登录到 Debian 服务器。我有一个奇怪的问题,当我输入的命令太长时,它不会环绕并开始一个新行。相反,它从同一行的开头开始并开始覆盖提示符,然后是命令的开头。

该命令将运行得很好,但它真的很烦人,我假设有一些设置可以为我解决这个问题?

4

8 回答 8

82

我自己刚刚解决了这个问题。

这只是 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 ❯ "

希望这可以帮助。

于 2012-02-28T17:02:35.817 回答
16

当您在另一个命令运行时调整 Putty 窗口的大小时,我已经看到了这种行为,因为 bash 没有收到告诉它窗口已调整大小的信号。

如果这是添加的问题:

shopt -s checkwinsize

应该让它消失。

于 2010-01-08T01:52:47.893 回答
11

尝试:

eval $(resize)

ََََََََََ

于 2010-01-08T01:58:19.410 回答
8

尝试按Ctrl+ L。(或者也许Alt+ L- something+L无论如何。)如果我没记错的话,这会重新运行代码来计算你的终端大小并相应地调整。

于 2010-01-08T03:08:52.080 回答
2
Ctrl-l

Ctrl-l 有效。我想腻子需要

于 2014-01-14T20:16:58.677 回答
1

解决方案对我有用:将以下代码段添加到您的.bashrc

if [ $(tty) == '/dev/ttyS0' ]; then
  trap resize DEBUG
fi
于 2016-08-09T08:46:51.217 回答
1

这个帮助我在搜索了很多地方后解决了这个问题。

PS1='\[\e[0;31m\]\t\[\e[m\]-\[\e[0;32m\]\u\[\e[m\]@\[\e[0;36m\]\h\[\e[m\]:\[\e[0;23m\]\w\[\e[m\e[0;32m\]\$\[\e[m\]'

将每个颜色转义序列括在转义方括号中。

于 2020-09-01T10:31:18.630 回答
-3

与腻子无关,它是一种“bash”主义。

一旦你习惯了它就非常有用,但是,如果它困扰你,你可以切换到“ksh”,它对长命令行有不同的作用(不确定在 Debian 上是什么!)

于 2010-01-08T01:33:30.587 回答