I have my Linux prompt slightly tweaked. I use.
PS1="\h:\w>
"
|
This gives me the server name:path then a ">"
at the end.
Last night I saw a snazzier one I liked it looked like this.
(I wish I had taken a photo)
It looks like it uses colors and UTF-8 characters. Let's see if I can replicate what he did.
Testing for UTF-8
First I want to make sure my command line can output
UTF-8. I am pretty sure it can, but I
have never specifically tested it.
I found this post http://serverfault.com/questions/13898/how-to-find-out-if-a-terminal-supports-utf-8
[1], it gives a quick simple test.
Run this command
> echo -e '\xe2\x82\xac'
|
If you get back
€
You are good!
Update PS1 with UTF-8
Run this command as a test, to update PS1 with UTF-8
> export PS1="\h: € > "
|
And it worked
You can enter the UTF hex code rather than €, but it’s a pain look at this site http://unix.stackexchange.com/questions/25903/awesome-symbols-and-characters-in-a-bash-prompt [2]
PS1=$'\\[\e[31m\\]\xe2\x88\xb4\\[\e[0m\\]\n\xe2\x86\x92
\xe2\x98\xbf \\~ \\[\e[31m\\]\xe2\x98\x85 $? \\[\e[0m\\]'
Seems like a pain in the neck, I am just going to paste in
the Unicode character and hope for the best.
Finding Unicode Characters
I need to find which Unicode character he was using. I found a few sites that can help you find a
Unicode character.
I am using Shapecather
Draw a shape, click recognize…
And it finds Unicode characters that are close to what you
drew!
I found this one
❯
\u276f
To use it I ran this command
> export
PS1="\h::\w❯❯❯"
|
Looks pretty close!
I just need to add some color
Colors
I have found a few sites that talk show some very complex
examples
https://wiki.archlinux.org/index.php/Color_Bash_Prompt
[6] ,and http://www.askapache.com/linux/bash-power-prompt.html
[7]
Some more basic sites showing how to set color http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
[8]
I think it's easier to show how to do this by example
> export
PS1="\[\033[34m\]\h::w❯❯❯"
|
Makes it blue
The blue comes from
\[\033[34m\]
|
According to http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
[8]
Non-printing escape sequences have to be enclosed in \[\033[
and \]
In this case 34m is
the color
Some other colors
Color
|
Code
|
Blue
|
34
|
Red
|
31
|
Green
|
32
|
White
|
1;37
|
Yellow
|
1;33
|
Light Gray
|
37
|
Light Red
|
1;31
|
If you want to have more than one color, place the new color
at the point where you want the color to be changed.
For example..
> export
PS1="\[\033[1;31m\]\h::\w\[\033[34m\]❯❯❯"
|
Gives me
Here is what I came up with
> export PS1="\[\033[1;37m\]\[\033[41m\][\h]\[\033[30m\]\[\033[0m\]\w
\[\033[1;32m\]❯\[\033[1;33m\]❯\[\033[1;31m\]❯\[\033[30m\]"
|
And here is the result
That red seems a little harsh how about black
> export PS1="\[\033[1;37m\]\[\033[40m\][\h]\[\033[30m\]\[\033[0m\]\w
\[\033[1;32m\]❯\[\033[1;33m\]❯\[\033[1;31m\]❯\[\033[30m\]"
|
One last tweak
I am almost there but there is one more tweak I would like
to do. I saw this example
> export PS1="\n\[\e[1;30m\][$$:$PPID -
\j:\!\[\e[1;30m\]]\[\e[0;36m\] \T
\[\e[1;30m\][\[\e[1;34m\]\u@\H\[\e[1;30m\]:\[\e[0;37m\]${SSH_TTY:-o}
\[\e[0;32m\]+${SHLVL}\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n\$ "
|
Which results in this
A new line after the bit of information displayed.
I like to display the full path of the location where I am
at, which often results in headaches like this
Making entering commands a pain of course I can use \ at the
end to get back but still it’s a pain.
Why not add the carriage return automatically?
> export PS1="\[\033[1;37m\]\[\033[40m\][\h]\[\033[30m\]\[\033[0m\]\w \n \[\033[1;32m\]❯\[\033[1;33m\]❯\[\033[1;31m\]❯\[\033[30m\]"
|
I think I can live with that! Wait username might be nice to have..
I added \u@ and changed \h to \H. \h is the hostname up the first
"." found in the hostname and \H is the full hostname.
> export PS1="\[\033[1;37m\]\[\033[40m\][\u@\H]\[\033[30m\]\[\033[0m\]\w \n \[\033[1;32m\]❯\[\033[1;33m\]❯\[\033[1;31m\]❯\[\033[30m\]"
|
There we go I think I like that!
Now to update my .profile file to make sure it automatically
loads each time.
Or for my own servers I set it in /etc/bash.bashrc so all
users would get it.
I also updated roots own .bashrc file so now its easier to
see that I am room.
Custom command prompts are very useful and eye catching when
doing a presentation!
One last thing
Grrr stupid windows!
I tend to shift between OS X, Windows, and Linux several
times a day.
Windows is only tolerable because of Cygwin.
When I try to adjust my command line on Cygwin I get the
following.
The font I am using is Lucida Sans Typewriter
This font, on my windows 7 box, does not support this
Unicode character.
Because of the color and black background I tweaked my
command line setup once again. For
Cygwin I came up with this
> export PS1="\[\033[1;30m\]\[\033[42m\][\u@\H]\[\033[30m\]\[\033[0m\]\w \n \[\033[1;32m\]❯\[\033[1;33m\]❯\[\033[1;31m\]❯\[\033[1;37m\]"
|
(You may need to change the ❯ characters to the correct
Unicode one, I am not sure how this post will show up on the web.
That gives me the look I want, but not the right Unicode
characters showing up.
The Font Fix
I need to fix the font to get this working the way I want it
to.
Fixing the font is a pain check out this post I made on how
to do it at http://www.whiteboardcoder.com/2015/02/fontforge.html
Or you can see the video I made at http://youtu.be/eDPC1e546wg
Once you fix the font
Bam it works now!
References
[1] How to find out if a terminal supports UTF-8
Accessed 01/2015
[2] Awesome symbols and characters in a bash prompt
Accessed 01/2015
[3] Welcome to the Unicode Symbol Map
Accessed 01/2015
[4] Shapecatcher
Accessed 01/2015
[5] Unicode Emoticons
Accessed 01/2015
[6] Color Bash Prompt
Accessed 01/2015
[7] Crazy powerful bash prompt
Accessed 01/2015
[8] Colours
Accessed 01/2015
The best windows command font is BY FAR: Consolas. On nix my favorite is Terminus :)
ReplyDelete