mul*_*sen 5 linux debian bash xterm bashrc
我正在配置我的 gnome-terminal 和 xterm 列(我还没有选择我将使用其中的哪一个),我有几个问题要解决:
(我已经用 PS1 设置了一个自定义的 bash 提示,以防万一)
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.1 (wheezy)
Release: 7.1
Codename: wheezy
$ echo $TERM
xterm
$ stty -a
[peter@mine ~] $ stty -a
speed 38400 baud; rows 52; columns 126; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
$[peter@mine ~] $ # the column width only goes up to here ------------------------------------------------>
Run Code Online (Sandbox Code Playgroud)
结果在 xterm 和 gnome-terminal 3.4.1.1 中是相同的
正如你所看到的,stty -a
命令的输出一直到屏幕的边缘,而打字没有那么远。
我发现可以通过将列设置为非常大的数字来获得所需的结果,例如:
$ stty cols 1800
Run Code Online (Sandbox Code Playgroud)
这解决了这两个问题。这是解决这个问题的正确方法吗?这会“破坏”程序的任何输出吗?到目前为止,我已经尝试top
与stty -a
这些看起来OK。
评论中要求的更多信息
我发现,如果我将cat
一些输入输入到文件中,那么列实际上会拉伸终端窗口的整个宽度:
[peter@mine applications] $ cat > /tmp/asd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssqqqqqqqqqqqqqqqq
qqqq
Run Code Online (Sandbox Code Playgroud)
这是否意味着实际上是 bash 限制了列数而不是终端?如果是这样,那么如何更改 bash 中的列数?
小智 9
您的提示定义中可能没有正确转义 ANSI 代码 ~/.bashrc
例如,PS1
类似于:
PS1='\033[1;33m>\033[0m '
Run Code Online (Sandbox Code Playgroud)
... 会在外壳本身的宽度之前包裹得很糟糕。
在 ascii 转义字符之前和定义终止符之后放置方括号将解决此问题,从而导致预期的换行:
PS1='\[\033[1;33m\]>\[\033[0m\] '
Run Code Online (Sandbox Code Playgroud)
即\033
成为\[\033
和m
成为m\]
归档时间: |
|
查看次数: |
5211 次 |
最近记录: |