how do I change the way directories are shown in the terminal [duplicate]

Currently it is:

michael@Castle2012-Ubuntu-laptop01:~/Dropnot/webs/rails_v3/linker/spec/controllers$

Outside of renaming my machine and directory structure...

How could I make it be something more like:

michael:controllers$

Solution 1:

To change it for the current terminal instance only

Just enter PS1='\u:\W\$ ' and press enter.


To change it "permanently"

In your ~/.bashrc, find the following section:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Remove the @\h, and replace the \w with an uppercase \W, so that it becomes:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u:\W\$ '
fi

Save, exit, close terminal and start another to see the result.


Tons more options!

  • See here for a more extensive howto, with many more options
  • See this answer for using up a tiny Python script to set the prompt so that the shortening only occurs when you are deep in a directory structure.

Solution 2:

Run this code in the current terminal

PROMPT_DIRTRIM=3

Now the bash prompt will show only the last 3 directory names. You can choose 1 to show only current directory. More information is available in the GNU documentation.

The effect:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

If you want to make it permanently, add the following line to ~/.bashrc in the beginning:

PROMPT_DIRTRIM=3

or another number greater than zero.

Solution 3:

This is my preferred prompt setting:

added in ~/.bashrc

PS1='[\u@\h \W]\$ '    

it looks like this:

[user@hostname dirname]$

(with a space after the $ sign)

Solution 4:

Personally I prefer to see only current folder in the bash prompt. I can do this with the following command:

PS1='\W\$ '

If you want it to take effect after each start then add the above command into your ~/.bashrc.

Solution 5:

I realize this is super old but since nobody suggested creating an alias I figured I'd post. Using Bash Prompt Escape Sequences I made an alias shorten

In ~/.bash_aliases here you will notice the $Blue var to set the prompt colour which you can omit or change based on preference I also clear the terminal when calling shorten.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

To achieve the OP's desired prompt string:

alias shorten='PS1="$USER:\W$ "'

I have colours defined in ~/.bashrccopy and pasted from https://wiki.archlinux.org/index.php/Color_Bash_Prompt. On a side note what's with ansi code colours? I'm confused just looking at it.

Blue='\e[0;34m'         # Blue