How do I only display the base dir in my Ubuntu Terminal?

4

3

In Ubuntu 10.04 Terminal when I traverse into some long directory structure the entire path gets displayed, this leads to lot of space wastage on my terminal, where the cursor comes way over to the right. It's causing lot of Irritation. Any way to just display the base dir.

Currently - ops@ops:/media/Main320/final_code/code/office/c/practice/parsers/proj1$

Need - ops@ops:~/proj1$

I am sure it's some config change or some profile preferences change. Any one...

Srikar Appalaraju

Posted 2010-09-09T19:19:25.207

Reputation: 173

Please ask this here where you will likely get more specific help than you would on SuperUser.

– Nathan Osman – 2010-09-09T19:25:38.710

@george donno such a thing existed! Will do so. Thanks... – None – 2010-09-09T19:47:51.530

possible duplicate of Code challenge: Bash prompt path shortener

– Paused until further notice. – 2010-09-09T20:57:20.963

Answers

6

Changing the Bash the prompt is easy. Just assign a new value to PS1:

PS1="myprompt : "

Now the new prompt will look like

myprompt :

Bash allows prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:

* \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

As an example lets create a prompt string that displays today's date and hostname:

PS1="\d \h $ "

Output is like

Sun Sep 04 ubuntu $

When you are happy with your prompt string you can make it the default prompt, even after rebooting by setting the PS1 var in .bashrc

nkr1pt

Posted 2010-09-09T19:19:25.207

Reputation: 346

You can even embed commands/scripts via backticks or $(): PS1='\fortune` $'. I have mine set up so that when I'm in a git controlled directory it parsesgit branch` to tell me which branch I'm currently in. – None – 2010-09-09T19:34:43.537

1

As @nkr1pt said, you want to set PS1

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

Also check out setting the env variable PROMPT_COMMAND, which is a command which is run every time bash prints out a prompt. I have mine set to:

PROMPT_COMMAND='echo -ne "\e]0;$USER@${HOSTNAME%%.*}: $(pwd -P)\a"'

Obviously with USER and HOSTNAME set elsewhere. This puts a full path in your term title.

Rich Homolka

Posted 2010-09-09T19:19:25.207

Reputation: 27 121

1

Bash 4 has a variable called PROMPT_DIRTRIM

user@host:~$ echo $PS1
\u@\h:\w\$
user@host:~$ cd /usr/share/doc/bash/examples
dennis@emperor:/usr/share/doc/bash/examples$ PROMPT_DIRTRIM=2
dennis@emperor:.../bash/examples$

which sets the minimum number of directory elements to display.

Paused until further notice.

Posted 2010-09-09T19:19:25.207

Reputation: 86 075

0

You can use symbolic link

ln -s /media/Main320/final_code/code/office/c/practice/parsers/proj1 ~/proj1
cd ~/proj1

jcubic

Posted 2010-09-09T19:19:25.207

Reputation: 1 533