Q. How do I change the color of my shell prompt under Linux ?
A. You can change the color of your shell prompt to impress your friend or to make your own life quite easy while working at command prompt.
In the Linux default shell is BASH.
Your current prompt setting is stored in PS1 shell variable. There are other variables too, like PS2, PS3 and PS4.
Bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters.
Task: Display current BASH prompt (PS1)
Use echo command to display current BASH prompt:
$ echo $PS1
Output:
[\u@h \W]\$
By default the command prompt is set to: [\u@\h \W]\$. Backslash-escaped special characters are decoded as follows:
-
\u: Display the current username
-
\h: Display the hostname
-
\W: Print the current working directory
Task: Modify current BASH prompt
Use export command to setup a new shell prompt:$ export PS1="[\\u@\\H \\W \\@]\\$"
Where,
-
\H: Display FQDN hostname
-
\@: Display current time in 12-hour am/pm format
Task: Add colors to the prompt
To add colors to the shell prompt use the following export command syntax:
‘\e[x;ym $PS1 \e[m’
Where,
- \e[ Start color scheme
- x;y Color pair to use (x;y)
- $PS1 is your shell prompt
- \e[m Stop color scheme
To set a red color prompt, type the command:
$ export PS1="\e[0;31m[\u@\h \W]\$ \e[m "
List of Color code
Color |
Code |
Black |
0;30 |
Blue |
0;34 |
Green |
0;32 |
Cyan |
0;36 |
Red |
0;31 |
Purple |
0;35 |
Brown |
0;33 |
Blue |
0;34 |
Green |
0;32 |
Cyan |
0;36 |
Red |
0;31 |
Purple |
0;35 |
Brown |
0;33 |
Replace digit 0 with 1 to get light color version.
Task: How to make the prompt setting permanent
Your new shell prompt setting is temporary i.e. when you logout setting will be lost. To have it set everytime you login to your workstation add above export command to your .bash_profile file or .bashrc file.
$ cd
$ vi .bash_profile
OR
$ vi .bashrc
Append export line:
export PS1="\e[0;31m[\u@\h \W]\$ \e[m"
Save and close the file.
tput command
You can also use tput command. For example display RED prompt use tput as follows:
export PS1="\[$(tput setaf 1)\]\u@\h:\w $ \[$(tput sgr0)\]"
handy tput commands
- tput bold - Bold effect
- tput rev - Display inverse colors
- tput sgr0 - Reset everything
- tput setaf {CODE}- Set foreground color, see color {CODE} below
- tput setab {CODE}- Set background color, see color {CODE} below
Colors {code} code for tput command
Color {code} |
Color |
0 |
Black |
1 |
Red |
2 |
Green |
3 |
Yellow |
4 |
Blue |
5 |
Magenta |
6 |
Cyan |
7 |
White |
Read the man page of bash and tput command for more information.
ANSI控制码的说明
例如:
echo -ne "\33[32m" 可以将字符的显示颜色改为绿色
echo -ne "\33[3;1H" 可以将光标移到第3行第1列处
具体的摘抄一些如下:
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
所有的转移字符表:
\a |
ASCII 响铃字符(也可以键入 \007) |
\d |
"Wed Sep 06" 格式的日期 |
\e |
ASCII 转义字符(也可以键入 \033) |
\h |
主机名的第一部分(如 "mybox") |
\H |
主机的全称(如 "mybox.mydomain.com") |
\j |
在此 shell 中通过按 ^Z 挂起的进程数 |
\l |
此 shell 的终端设备名(如 "ttyp4") |
\n |
换行符 |
\r |
回车符 |
\s |
shell 的名称(如 "bash") |
\t |
24 小时制时间(如 "23:01:01") |
\T |
12 小时制时间(如 "11:01:01") |
\@ |
带有 am/pm 的 12 小时制时间 |
\u |
用户名 |
\v |
bash 的版本(如 2.04) |
\V |
Bash 版本(包括补丁级别) ?/td> |
\w |
当前工作目录(如 "/home/drobbins") |
\W |
当前工作目录的“基名 (basename)”(如 "drobbins") |
\! |
当前命令在历史缓冲区中的位置 |
\# |
命令编号(只要您键入内容,它就会在每次提示时累加) |
\$ |
如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#" |
\xxx |
插入一个用三位数 xxx(用零代替未使用的数字,如 "\007")表示的 ASCII 字符 |
\\ |
反斜杠 |
\[ |
这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。 |
\] |
这个序列应该出现在非打印字符序列之后。 |
这样,您已经知道了 bash 中用反斜杠转义的全部专用序列。请稍微演练一下这些序列,以对它们的工作方式获得一些感性认识。在您做了一些测试之后,下面开始添加颜色。
========================================
附上一个例子:
#!/bin/sh
############################################################
# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
# Last change: Mon Feb 16 16:24:41 CET 2004
############################################################
for attr in 0 1 4 5 7 ; do
echo "----------------------------------------------------------------"
printf "ESC[%s;Foreground;Background - \n" $attr
for fore in 30 31 32 33 34 35 36 37; do
for back in 40 41 42 43 44 45 46 47; do
printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
done
printf '\n'
done
printf '\033[0m'
done
相关推荐
通过上述介绍,我们可以看到,无论是在shell脚本还是在C语言等编程环境中,都可以轻松地实现终端输出的颜色控制。这对于提高输出信息的可读性和美观度具有重要意义。希望本文的内容能对您的学习和工作有所帮助。如果...
"sh代码-shell颜色大全"这个主题涵盖的是如何在Bash shell脚本中使用ANSI转义序列来实现彩色输出。 首先,我们需要了解ANSI转义序列。这些是特殊的控制字符,它们告诉终端如何改变文本的显示方式,如字体颜色、背景...
此外,使用颜色控制序列可以使输出更加美观,提高用户体验。 这个脚本对于初学者来说是一个很好的学习案例,它展示了如何用Shell编写交互式程序,如何处理用户输入,以及如何组织和设计简单的命令流程。通过实践和...
这部分内容展示了如何在Shell脚本中定义和处理游戏元素,如颜色、位置、大小以及控制信号等。尽管如此,我们仍然可以从这部分内容中提取一些与Shell编程和游戏开发相关的知识点: 1. **颜色定义:** ```bash cRed...
你可以通过Shell的流程控制结构(如`if`、`for`循环)和文件操作命令(如`cat`、`grep`)来实现这些功能。 压缩包中的"Shell实现二维码生成"文件可能是这个脚本的源代码,你可以查看其内容以了解更多细节。通过学习...
8. **Shell编程**:Shell提供了丰富的控制结构,如条件语句(if...else)、循环(for、while)和函数,使得用户能够编写复杂的自动化任务。 9. **历史记录和别名**:Shell会保存用户输入的命令历史,方便用户通过...
Korn、Bash、Z Shell和C Shell都支持更多的格式化选项和颜色编码。例如,你可以使用ANSI转义码来实现彩色提示符,使命令行更具可读性。例如,红色的用户名,绿色的路径,以及蓝色的提示符号。 懒人快速更改提示符的...
另外,echo命令中可以使用控制字符来改变输出格式,比如使用八进制或十六进制ASCII码来显示特定字符,使用特定的转义字符来控制光标移动、颜色输出或背景色等效果。这使得Shell脚本不仅能够执行命令,还能够格式化...
1. **语法高亮**:在编写Shell脚本时,它会自动识别并为关键字、变量、函数等元素赋予不同的颜色,使得代码更易于阅读和理解。 2. **代码完成**:提供自动补全功能,帮助用户快速输入命令、参数和变量名,提高编码...
Private Shell是一款专为Windows操作系统设计的安全远程访问工具,它提供了SSH(Secure Shell)协议的支持,让用户能够通过加密的连接安全地进行远程控制、文件传输等操作。免安装版的Private Shell意味着用户不需要...
ANSI转义序列是一种特殊字符序列,能够控制终端的文本属性,如颜色、光标位置等。 在`color.sh`和`tesh.sh`这两个文件中,我们可能会看到类似以下的代码片段: ```bash #!/bin/bash # 定义进度条颜色的ANSI转义...
Shell不仅是一种交互式的命令语言,也是一种程序设计语言,允许用户定义变量、参数,并使用控制结构如循环和分支。Shell脚本则是通过利用Shell的这些功能编写的纯文本文件,使得自动化任务处理成为可能。 交互式...
### 控制输出颜色的Shell脚本知识点解析 #### 一、引言 在日常的脚本开发工作中,我们经常会遇到需要让终端输出的信息更加醒目、易于区分的情况。这时候,通过Shell脚本控制输出颜色就显得尤为重要。本文将详细介绍...
可能使用了ansi转义序列来控制终端的光标位置和颜色。 4. **方块生成和移动**: - `generate_block.sh`:随机生成新的方块,并将其放在合适的位置。 - `move_block.sh`:根据游戏规则处理方块的垂直移动,可能还...
初学shell 入门好书!!!! 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...
### Linux Shell 运算类型与控制语句详解 #### 一、Shell 数据处理与字符串操作 **1.1 字符串定义与变量** - **双引号与单引号的区别**: - 双引号 (`"..."`):支持变量替换和转义字符。 - 单引号 (`'...'`):不...
通过以上介绍,我们可以看到InstallShell是一款强大的安装程序生成工具,它集成了分模块打包、自定义界面和向导、脚本控制等功能,旨在帮助开发者打造专业且用户友好的安装体验。熟练掌握InstallShell的使用,无疑会...
第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号...
理解如何格式化输出,控制颜色和输出位置,对于创建用户友好的脚本界面很重要。 9. **第22章 创建屏幕输入**: 屏幕输入涉及读取用户输入或从文件中获取数据。`read`命令是获取用户输入的主要方式,而与键盘交互则...