Page 1 of 1
Forum

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.

Please note that switching to another language when reading a post will not bring you to the same post, in Dutch, as there is no translation for that post!



macOS - How to make...
 
Share:
Notifications
Clear all

[Solved] macOS - How to make your Bash prompt standout in Terminal

2 Posts
1 Users
0 Likes
1,473 Views
 Hans
(@hans)
Noble Member Admin
Joined: 11 years ago
Posts: 1065
Topic starter  

Sometime I run one or the other command in Terminal that generates a huge output - I may even do it a few times - to then have to scroll back and see what the original command was. For this purpose I wanted to have the Bash prompt bold.

So for example instead of this:

MAC_PRO:~ hans$ ls
Applications Downloads MountPoints Pictures tmp
Desktop Dropbox Movies Public
Documents Library Music

I'd like to see this:

MAC_PRO:~ hans$ ls
Applications Downloads MountPoints Pictures tmp
Desktop Dropbox Movies Public
Documents Library Music

To accomplish this, I would have to need to change the "PS1" environment variable, which by default is:

"\h:\W \u\$ "

(below you'll find a comprehensive list of codes you can use in your prompt, for example time stamp etc)

To make the prompt bold you'd need to change the value of PS1 as follows:

export PS1="\[\033[1m\]\h:\W \u\$\[\033[m\] "

Here \[\033[1m\] starts bold and \[\033[m\] ends bold.
\h = hostname, \W = basename directory, \u = username and a space to keep it what ever you type separated.

Now this will disappear when closing Terminal and you'd have to set this each time - quite annoying of course.
To make it permanent, you'll need to create (or edit) the file ~/.bash_profile and add the export line there (at the end or beginning - it doesn't seem to matter where).

See the effect in action in the attached screenshot.

Note: Some more options to add to your bash prompt;

\a         # an ASCII bell character (07)
\d # the date in "Weekday Month Date" format (e.g., "Tue May 26")
\D{format} # the format is passed to strftime(3) and the result
           # is inserted into the prompt string an empty format
           # results in a locale-specific time representation.
           # The braces are required
\e # an ASCII escape character (033)
\h # the hostname up to the first '.'
\H # the hostname
\j # the number of jobs currently managed by the shell
\l # the basename of the shell's terminal device name
\n # newline
\r # carriage return
\s # the name of the shell, the basename of $0 (the portion following
           # the final slash)
\t # the current time in 24-hour HH:MM:SS format
\T # the current time in 12-hour HH:MM:SS format
\@ # the current time in 12-hour am/pm format
\A # the current time in 24-hour HH:MM format
\u # the username of the current user
\v # the version of bash (e.g., 2.00)
\V # the release of bash, version + patch level (e.g., 2.00.0)
\w # the current working directory, with $HOME abbreviated with a tilde
\W # the basename of the current working directory, with $HOME
           # abbreviated with a tilde
\! # the history number of this command
\# # the command number of this command
\$ # if the effective UID is 0, a #, otherwise a $
\nnn # the character corresponding to the octal number nnn
\\ # a backslash
\[ # begin a sequence of non-printing characters, which could be used
           # to embed a terminal control sequence into the prompt
\] # end a sequence of non-printing characters

   
ReplyQuote
 Hans
(@hans)
Noble Member Admin
Joined: 11 years ago
Posts: 1065
Topic starter  

Tip: to make this permanent ...

With a plain text editor (BBEdit, or nano in Terminal) open or create the file ~/.bash_profile.
Add your export line (for example export PS1="\[\033[1m\]\h:\W \u\$\[\033[m\] ") to this file and save the file.

After this, each time you start Terminal, the new prompt will appear.


   
ReplyQuote
Share: