xterm中的换行问题

时间:2012-10-29 23:30:42

标签: php bash ansi xterm

我正在编写一个打印彩色线条的程序,我用它做的越多,我发现自己就越能解决出现的换行问题。

这是一种用php编写的终端,这里有提示符:

$return = readline("\033[44m\033[1;37m{$this->text}>>\033[0m ");

并滚动浏览历史记录,非打印字符会对所有内容造成严重破坏。

如果我尝试添加转义

$return = readline("\[\033[44m\033[1;37m\]{$this->text}>>\[\033[0m\] ");

然后打印括号......即使我添加了双反斜杠。

\[\][timer]>>\[\] 

我发现echo -e也是一样,我真的不确定它是怎么回事。

最后,如果我修改PS1,它可以正常工作。

[mike@crest ~]$ export PS1="\[\033[44m\033[1;37m\][timer]>>\[\033[0m\] "
[timer]>>

我在这里缺少什么?

编辑:着色/显示不是问题。问题是,当打印不可见字符而没有转义时,bash会出现换行问题...当我添加转义时,它们在所有情况下都以纯文本打印,但PS1,我不知道有什么区别,如何让它在PHP中运行。

1 个答案:

答案 0 :(得分:0)

php 1.php

[TIMER]>>

<?php

$return = readline("\033[44m\033[1;37m[TIMER]>>\033[0m ");

?>

这是添加的对话框示例

dialog --title "Welcome" --msgbox "\nMY TEST DIALOG \n\nPress <Enter> to continue or <Esc> to cancel." 10 50