Customizing and Coloring the Bash Prompt
The Prompt Variable
user@ubuntu:~# echo $PS1
${debian_chroot:+($debian_chroot)}\\[\033[01;32m\\]\u@\h\\[\033[00m\\]:\\[\033[01;34m\\]\w\\[\03300m\\]\$
Making Sense of the Above
Flags
| Flag | What it shows |
|---|---|
\a |
ASCII bell character (07) |
\d |
date in “Weekday Month Date” format (e.g., “Tue May 26”) |
\e |
ASCII escape character (033) |
\h |
hostname up to the first `.’ |
\H |
hostname |
\n |
newline |
\r |
return |
\s |
name of the shell, the basename of $0 (the portion following the final slash) |
\t |
current time in 24-hour HH:MM:SS format |
\T |
current time in 12-hour HH:MM:SS format |
\@ |
current time in 12-hour am/pm format |
\u |
username of the current user |
\v |
version of bash (e.g., 2.00) |
\V |
release of bash, version + patchlevel (e.g., 2.00.0) |
\w |
current working directory |
\W |
basename of the current working direc-tory |
\! |
history number of this command |
\# |
command number of this command |
\$ |
the effective UID is 0, a #, otherwise a $ |
\nnn |
character corresponding to the octal number nnn |
\\ |
backslash |
\[ |
a sequence of non-printing characters, which could be used to embed a terminal con-trol sequence into the prompt |
\] |
a sequence of non-printing characters |
Colors
Here’s a color table.
| Color | Code |
|---|---|
| Black | 0;30 |
| Dark Gray | 1;30 |
| Blue | 0;34 |
| Light Blue | 1;34 |
| Green | 0;32 |
| Light Green | 1;32 |
| Cyan | 0;36 |
| Light Cyan | 1;36 |
| Red | 0;31 |
| Light Red | 1;31 |
| Purple | 0;35 |
| Light Purple | 1;35 |
| Brown | 0;33 |
| Yellow | 1;33 |
| Light Gray | 0;37 |
| White | 1;37 |
To color anything,
- Prefix with
[33[<Color>m\] - Suffix with
\[33[00m\]
For example, to color the directory’s basename (\W) yellow (1;33),
you’d have this:
# Exploded to illustrate
[33[01;33m\] \W \\[33[00m\\]
# Together
[33[01;33m\]\W\\[33[00m\\]