OpenWrt shell 终端命令行前缀添加颜色

OpenWrt 通过 SSH 连到终端后,默认文字都是白色,内容多起来之后不便于定位和区分命令位置。本文介绍如何为命令行界面的前缀部分设置颜色。

命令行前缀,即提示字符串 (Prompt String),由 shell 下的变量PS1定义。PS1在 GNU 官网的介绍可在此查看。我们要做的,实际上就是给PS1加颜色。

OpenWrt 使用的是 ash shell,在文件/etc/profile中定义了PS1的默认值:
在这里插入图片描述
在终端中输入echo $PS1,也可以得到PS1的默认值:
在这里插入图片描述
上面的\[\e]0;\u@\h: \w\a\]部分先忽略(\[\]包围的部分都是在终端不会显示的,至于为什么有这一串字符串没有深究),关键部分在后面的\u@\h:\w\$。这几个特殊控制符定义了当前提示字符串的格式:

  • \u代表 username
  • \h是 hostname
  • \w是当前路径,且用户$HOME目录简化为~
  • \$输出一个 # 字符(root 用户)或 $ 字符(普通用户)

合起来之后,上面的控制符组合渲染到命令行即可显示为:root@OpenWrt:~#

其它所有的特殊控制符可以参阅 GNU 官方介绍这个教程,这里简单贴个图:
在这里插入图片描述
了解了提示字符串的本质,接下来要做的就是给它加上颜色。而这是通过ANSI 转义序列实现的。设置颜色的语法为:

\e[nm    # 注意 n 和 m 是两个部分

其中n是一个或多个数字,若包含多个数字,相互之间用;隔开;m是由 ANSI 规定的一个固定的字符。具体的颜色设置以及一些字体的变化,都是通过这里的n来规定的。n的具体选值有三部分:字体、前景色和背景色。

字体:
在这里插入图片描述
注意上面有一些控制代码并不是广泛支持的,在不同终端可能效果会有差异,需要实际测试一下。

前景色和背景色:
在这里插入图片描述
由上表可见,同一个颜色在不同终端下的具体色彩取值可能不同,另外同一个颜色的前景色代码和背景色代码也是不一样的。

正由于字体、前景色和背景色分别拥有独立的代码,它们之间可以自由地产生不同的组合,如:\e[1;32;40m,代表绿色粗体。

此外需要注意的点:

  • 三个数字顺序可以互换,不影响解析
  • 保持默认的选项可以缺省不写,如只想把字体变为绿色,可输入\e[32m
  • 全部缺省,效果与 0 相同,即\e[0m\e[m,代表重置所有属性

这篇教程中作者测试了在某终端中 0 到 50 的实际效果,可以参考:
在这里插入图片描述
有些教程会在颜色控制符前后加上一对方括号\[\],实测可加可不加,效果一样。

下面具体介绍一个例子

export PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'

在终端直接输入上面的代码即可变色,但是退出后效果消失(永久改变设置的方式在后面讲),效果如下:
在这里插入图片描述
这段代码中:

  • 基础部分是\u@\h \w\$
  • \[\e[33;1m\]将后面部分的颜色改为黄色加粗
  • \[\e[32;1m\]将后面部分的颜色改为绿色加粗
  • \[\e[36;1m\]将后面部分的颜色改为青色加粗
  • \[\e[34;1m\]将后面部分的颜色改为蓝色加粗
  • 最后\[\e[0m\]恢复默认设置,若无这一部分,则后面输入的具体命令将带同样的颜色

最后记录一下我的配色:

export PS1='\[\e[32;1m\]\u@\h \[\e[36;1m\]\w\[\e[m\]\$ \[\e[m\]'

要永久改变配色,将这行命令追加写入前面提到的配置文件/etc/profile即可:

echo "export PS1='\[\e[32;1m\]\u@\h \[\e[36;1m\]\w\[\e[m\]\$ \[\e[m\]'" >> /etc/profile

最后的效果:
在这里插入图片描述
这一修改提示字符串配色的方式不局限于 OpenWrt,其它 Linux 系统原理均相同,具体的配置文件地址略有区别而已。

参考阅读:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenWrt是一个基于Linux的嵌入式操作系统,用于路由器和嵌入式设备。它提供了一个命令行界面,可以通过命令行进行设置和配置。 要开始使用OpenWrt命令行设置,首先需要登录到路由器的终端界面。可以使用SSH或Telnet等工具连接到路由器。默认情况下,用户名为root,密码为空。 一旦成功登录,就可以开始使用各种命令进行设置了。以下是一些常用的OpenWrt命令行设置: 1. 配置网络接口:使用`uci`命令进行网络接口的配置。例如,要设置LAN接口的IP地址和子网掩码,可以运行以下命令: ``` uci set network.lan.ipaddr=192.168.1.1 uci set network.lan.netmask=255.255.255.0 uci commit network /etc/init.d/network restart ``` 2. 设置无线网络:使用`uci`命令进行无线网络的配置。例如,要设置无线网络的SSID和密码,可以运行以下命令: ``` uci set wireless.@wifi-device[0].ssid=YourSSID uci set wireless.@wifi-device[0].encryption=psk2 uci set wireless.@wifi-device[0].key=YourPassword uci commit wireless /etc/init.d/network restart ``` 3. 安装软件包:使用`opkg`命令进行软件包的安装。例如,要安装一个名为“example”的软件包,可以运行以下命令: ``` opkg update opkg install example ``` 4. 配置防火墙:使用`uci`命令进行防火墙的配置。例如,要设置防火墙允许某个端口的访问,可以运行以下命令: ``` uci set firewall.@rule[0].src=wan uci set firewall.@rule[0].proto=tcp uci set firewall.@rule[0].dest_port=80 uci set firewall.@rule[0].target=ACCEPT uci commit firewall /etc/init.d/firewall restart ``` 这些只是OpenWrt命令行设置的一些例子。你可以根据需要使用更多的命令进行路由器的设置和配置。但要注意,对于不熟悉命令行操作的用户来说,使用Web界面进行设置可能更为简便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值