Customizing and Coloring the Bash Prompt Revision as of Sunday, 20 December 2015 at 19:56 UTC
The Prompt Variable
user@ubuntu:~# echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
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. We’ll get to how to use them in a minute:
| 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\]