虽然通过 SSH(即 rsync copy
)输入了一个很好的长命令,但当我点击屏幕的右边缘时,该行不会换行,只是与当前行重叠.关于为什么会发生这种情况以及如何解决的任何建议?
设置如下(和示例命令)。
Debian6 64 位 - 它是一个 DOMU VM (XEN)
/test/test-srv 发布]$ rsync -avzh --dry-run/test/long/source/path/blah/blah/blah//test/long/target/path/etc/etc/etc/etc/etc/etc/test
粗体部分是重叠的部分,它应该只是将 cmd 提示推到一行。
图片示例:
最佳答案
这是因为您的彩色提示。您忽略了将 ANSI 转义码标记为不可见。
Bash 不知道您的终端在做什么,因此它依赖于您告诉它提示符的哪些部分是非打印的,哪些不是。您可以通过在它们周围添加 \[\]
来做到这一点。
# Example bad prompt which wraps lines incorrectly like you describe
PS1='\033[01;34m\w \$ \033[00m'
这里,\033[01;34m
和\033[00m
不会出现在终端上(也就是说,它们不会移动光标) , 他们只是改变了下面文本的颜色。为了展示这一点,我们将它们包装在 \[\]
中:
# Prompt from above that wraps correctly
PS1='\[\033[01;34m\]\w \$ \[\033[00m\]'
关于linux - 输入 SSH 命令不会换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799013/