使用普通的 bash 提示符echo -e 'hello\tworld'
会产生真正的制表符。然而,在 GNU screen 中运行相同的命令会在两个单词之间添加空格。
我已经在 Ubuntu 10.04 上测试过此操作,该操作系统的 Screen 版本为 4.00.03jw4 (FAU) 2-May-06,在 RHEL 5.5 上测试过此操作,该操作系统的 Screen 版本为 4.00.03 (FAU) 23-Oct-06
有没有办法让屏幕输出制表符而不是将其转换为空格?
答案1
不,没有办法,除非编写代码。请查看“BUGS:”下的手册页
- 屏幕不使用硬件标签。
对我来说,硬件是软件“gnome-terminal”。
答案2
这个简单的实验,在 GNU Screen 中,向我展示了“\t”正在输出一个 TAB 字符(笔记:您的 echo 命令缺少“-e”标志):
skx@birthday:~$ echo -e "Hello\tWorld" | od -c
0000000 H e l l o \t W o r l d \n
0000014
现在我重复该命令并将输出保存到文件,验证是否仍然存在 TAB 字符:
skx@birthday:~$ echo -e "Hello\tWorld" > x
skx@birthday:~$ od -c < x
0000000 H e l l o \t W o r l d \n
0000014
但如果我 cat 该文件,然后通过鼠标复制并粘贴到 emacs 中,TAB 就会丢失。因此,似乎父级 gnome-terminal 做了一些奇怪的事情,或者在粘贴到我的新窗口时选项卡被转换了。无论哪种情况,我怀疑 GNU Screen 不是罪魁祸首。