在Linux shell控制台中显示漂亮的字符表

时间:2013-10-25 06:01:27

标签: linux shell formatting echo

我想显示一个文本菜单,并让用户选择,例如类似下面的表格:

┏━━━━━━━━━━━━━┓
┃     WIFI Tools Menu      ┃
┣━━━━━━━━━━━━━┫
┃ 1. Create virtual WLAN   ┃
┃ 2. Start virtual WLAN    ┃
┃ 3. Stop virtual WLAN     ┃
┃ 4. View WLAN connections ┃
┃ 5. Change WLAN password  ┃
┃ 6. Share Connection(ICS) ┃
┃ 7. Exit                  ┃
┗━━━━━━━━━━━━━┛

该表显示Windows批处理非常好,即使Linux shell控制台使用等宽字体,但输出仍然很难看。

我之前在shell脚本中使用过“select”,但看起来很难看,对话框+菜单也是另一种解决方案,但是对于最终用户来说它并没有保持相同的体验,我的脚本需要做很多任务,我不想弹出一个对话框。

如何使用漂亮的格式显示上表?

Windows菜单:

Windows Result

Linux菜单:

Linux Result

1 个答案:

答案 0 :(得分:3)

从你的截图中可以清楚地知道你的问题出现在windows上,而不是linux上:你的水平线实际上并没有连接,而且间隙也没有映射到文本中的字母分割。你已经设法找到一个“等宽”字体,其中水平线是两个字符宽(为什么我甚至感到惊讶,清晰的线条绘图需要框绘制unicode块和windows + console + utf-8绝对是一个邪恶的混合)

在Linux上,monospace实际上意味着等宽,你的水平线是结果的两倍。

如果你想要一个正确的应用程序,你需要以Linux为参考,找到你在Windows上遇到的任何错误,而不是解决windows bug,并期望Linux的行为相同。