【Linux下自定义Shell终端提示符】

目录

  • 基本转义符
  • 字体颜色
  • 背景颜色
  • 移动光标

@

Linux系统终端提示符的特征由系统环境变量 PS1(Prompt String One)定义。

我们可以通过命令echo $PS1来查看当前设置,如下图:

同样,我们可以通过修改PS1的值来改变终端提示信息:

但这只是临时的修改了,当我们打开新的终端窗口时,提示符又恢复到默认的了。

.

如果希望修改永久生效,我们可以通过更改~/.bashrc文件,如下图:

保存退出后在终端执行. .bashrc刷新,便可看到永久版的终端提示符。

好了,打开新的终端窗去看看吧。

***

基本转义符

Shells提示符中用到的转义字符

序列 显示值
\a 以ASCII格式编码的铃声,当遇到这个转移序列时,计算机会发出嗡嗡的响声
\d 以日,月,天格式来表示当前日期。例如,"Mon May 26"
\h 本地机的主机名,但不带末尾的域名
\H 完整的主机名
\j 运行在当前shell会话中的工作数
\l 当前终端设备名
\n 一个换行符
\r 一个回车符
\s shell程序名
\t 以24小时制,hours:minutes:seconds的格式表示当前时间
\T 以12小时制表示当前时间
\@ 以12小时制,AM/PM格式来表示当前时间,例如"10:51 PM"
\A 以24小时制,hours:minutes 格式表示当前时间
\u 当前用户名
\v shell 程序的版本号,例如4.3
\V shell 程序的详细版本号,例如4.3.11
\w 当前工作目录名
\W 当前工作目录名的最后部分
\! 当前命令的历史号
\# 当前 shell 会话中的命令数
\$ 这会显示一个"$"字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个"#"字符
\[ 标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色
\] 标志着非打印字符序列结束

示例

使用转移符\A,将终端提示符修改为显示当前时间,如下图:

***

字体颜色

字体颜色是由ANSI转义编码来控制的,该控制编码会嵌入字符流中并发送给终端仿真器。

但是,该控制编码不会被"打印"到终端上,而是会被终端解释为一个指令。正如我们上面看到的字符序列最下面的两个\[\],就是用来封装这些非打印字符的。

一个ANSI转义编码以一个八进制033(这个编码是由退出按键产生的)开头,其后跟着一个可选的字符属性(0:正常1:黑体4:下划线5:闪烁7:反向(前景色和背景色反转)),再之后是一个指令。

序列 文本颜色 序列 文本颜色
\033[0;30m 黑色 \033[1;30m 黑体黑色
\033[0;31m 红色 \033[1;31m 黑体红色
\033[0;32m 绿色 \033[1;32m 黑体绿色
\033[0;33m 棕色 \033[1;33m 黑体棕色
\033[0;34m 蓝色 \033[1;34m 黑体蓝色
\033[0;35m 粉红 \033[1;35m 黑体粉色
\033[0;36m 青色 \033[1;36m 黑体青色
\033[0;37m 浅灰色 \033[1;37m 黑体浅灰色

示例

更改终端提示符颜色为黑体蓝色,如下图:

后面的\033[00m是用于将后续的字符颜色还原回原来的颜色。

如果没有写这个转义码,将会导致输入的命令颜色也会改变。

所以,我们还可以这样玩:

看到了吧,命令和输出信息的颜色也一同改变了。

***

背景颜色

除了字体颜色,我们还可以设置字体的背景颜色。同样是通过转义的控制编码来实现,下表是背景颜色的控制编码。

序列 背景颜色 序列 背景颜色
\033[0;40m 黑色 \033[1;44m 蓝色
\033[0;41m 红色 \033[1;45m 粉红
\033[0;42m 绿色 \033[1;46m 青色
\033[0;43m 棕色 \033[1;47m 浅灰色

移动光标

转义编码也可以用来定位光标。这些编码通常被用于:每当提示符出现的时候(会在屏幕的不同位置,比如说上面一个角落),显示一个时钟或者其它一些信息。下表是一系列用来定位光标的转义编码。

转义码 行动
\033[l;cH 把光标移到第 l 行,第 c 列
\033[nA 把光标向上移动 n 行
\033[nB 把光标向下移动 n 行
\033[nC 把光标向前移动 n 个字符
\033[nD 把光标向后移动 n 个字符
\033[2 清空屏幕,把光标移到左上角(第零行,第零列)
\033[K 清空从光标位置到当前行末的内容
\033[s 存储当前光标位置
\033[u 唤醒之前存储的光标位置



写在哈佛墙上的七句话

  1. 我颓废的今日,正是昨天殒身之人祈求的明天;
  2. 请享受无法回避的痛苦;
  3. 觉得自己为时已晚的时候,恰恰是最早的时候;
  4. 谁也不可能轻易成功,它来自彻底的自我管理能力和毅力;
  5. 现在流的口水,将成为明天的眼泪;
  6. 今天不走,明天要跑;
  7. 即使此刻,对手也在不停的翻动书页。

原文地址:https://www.cnblogs.com/zyk01/p/10176519.html

时间: 2024-08-28 17:34:36

【Linux下自定义Shell终端提示符】的相关文章

Ubuntu 下自定义shell

Ubuntu下自定义shell一般包括主机名和文件目录,当打开的文件过多时,整个shell就变得很长从而影响视觉. 在终端中输入 $ echo $SP1 可以知道shell的默认样式如:\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ 具体每个字符代表的含义此网站有详细介绍 http://billie66.github.io/TLCL/book/chap14

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

Linux下的shell编程入门

通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者shell脚本来实现. 一.简介 Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂.Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令. 下面我们来看一个简单的shell程序: 1.首先建立一个

Linux下添加shell脚本使得nginx日志每天定时切割压缩

Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志,还是使用"GoAccess"等工具对日志进行分析都将会变得非常麻烦.因此,每天定时对nginx日志进行切割压缩就非常有必要了 二 实现 我的实现思路是每天晚上接近12点时定时执行脚本.其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的ngi

linux下的shell和脚本

1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/sh).Bourne Again Shell(/bin/bash).C Shell(/usr/bin/csh).K Shell(/usr/bin/ksh).Shell for Root(/sbin/sh),等等 第一个Unix shell是由肯·汤普逊,仿效Multic上的shell所实现出来,称为s

[转] 关于linux下通过shell命令(自动)修改用户密码

关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码:1.交互配置本地用户:以root用户: passwd <username>Changing password for user dewang.New UNIX password: BAD

编程实现linux下的shell

/************************************************************************* > File Name: Kris_shell.c > Author: KrisChou > Mail:[email protected] > Created Time: Thu 21 Aug 2014 04:31:55 PM CST **************************************************

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句 一:实验环境 1):虚拟机 2):linux系统 二:实验目标 1): shell 基本语法 2):变量 3):表达式 4):判断语句 5): if表达式 三:实验脚本 第一块 一个简单的shell脚本程序 [[email protected] ~]# mkdir test [[email protected] test]# vim example1.sh #!/bin/bash #This is to show wha

2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccccccccccccccc eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ggggggggggggggggggggggggggggggggggggggg wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww zzzzzzzzzzzzzzzzz