This basically reloads any config changes that you made in ~/.bashrc.
1. Colourise your terminal
If your terminal is all monotonic black and white consider adding/uncommenting this line in terminal
force_color_prompt=yes
2. Enable tab completion by adding following lines in .bashrc
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
3. Change colour of Linux prompt username with respect to last exit value.
#CHANGE BASH USER NAME BASED ON EXIT CODE ##
color_exit_code(){
if [ $? -eq 0 ]; then
echo -e "\033[01;32m" #green
else
echo -e "\033[01;31m" #red
fi
}
After adding this function , you have called it. Discussed later in this post.
4. Git info on terminal prompt
Display git branch in terminal and show the status of repository by changing the branch colour name
#GIT COLORING FUNCTION ########################################################
git_set_color(){
UNTRACKED="$( git status --short 2> /dev/null | awk '{ print $1 }'| grep "??" | wc -l )"
MODIFIED="$( git status --short 2> /dev/null | awk '{ print $1 }'| grep "M" | wc -l )"
DELETED="$( git status --short 2> /dev/null | awk '{ print $1 }'| grep "D" | wc -l )"
RENAMED="$( git status --short 2> /dev/null | awk '{ print $1 }'| grep "R" | wc -l )"
ADDED="$( git status --short 2> /dev/null | awk '{ print $1 }'| grep "A" | wc -l )"
REMOTE="$( git status 2> /dev/null | grep "ahead"| wc -l )"
if [[ "$UNTRACKED" -eq 0 && "$DELETED" -eq 0 ]]; then
if [[ "$MODIFIED" -eq 0 && "$RENAMED" -eq 0 && "$ADDED" -eq 0 && "$REMOTE" -eq 0 ]]; then
echo -e "\033[00;32m" #green
elif [[ "$MODIFIED" -eq 0 && "$RENAMED" -eq 0 && "$ADDED" -eq 0 ]]; then
echo -e "\033[01;34m" #blue
else
echo -e "\033[00;33m" #yellow
fi
else
echo -e "\033[00;31m" #red
fi
}
Now call both of these git_set_color and color_exit_code in PS1 variable
Like
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}$(color_exit_code)\u\[\033[00m\]:\[\033[01;34m\]\w$(git_set_color)$(parse_git_branch)\n\[\033[0;37m\]\$\[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Here' s how Linux prompt will look like after changes.
 |
Green colour show clean git repository |
 |
Yellow colour show modified files |
 |
Red colour show presence of untracked files in repository |
 |
Blue colour show commit has not been pushed to remote repository |
 |
Changes colour of username based on exit code |
5. Create alias for useful long commands
Let's create alias for long and frequently used commands like "sudo openconnect grid1.abc.com" , Now by just executing "vpn" corresponding command get executed.
alias vpn="sudo openconnect grid1.abc.com"
6. Try different terminal emulator personally I prefer terminator.
Terminator provides features like splitting screen, creating tabs, also broadcast feature. Broadcast feature is really useful if you have to do same task in multiple terminal i.e if you want to execute same set of commands by logging in multiple computers.
7. Know better alternative to navigate quickly in between directory location
For jumping in between directory location use shortcut like
cd Jump directly to home directory
cd - Jump to previous directory location
cd .. Jump to parent directory
8. Enable Vi or Emacs mode in terminal.
If you are vim command junky set this in your ~/.bashrc
set -o vi
Else by default you use emacs shortcut
set -o emacs
which generally start which Ctrl . Here are some sample emacs mode shortcut.
C-a move cursor to (at) beginning-of-line
C-e move cursor to end-of-line
C-f move cursor forward one character
C-b move cursor backward one character
C-n move cursor to next line
C-p move cursor to previous line
C-v scroll file forward by one screenful
ESC v scroll file backward by one screenful
ESC < go to beginning-of-buffer
ESC > go to end-of-buffer
ESC f move cursor forward one word
ESC b move cursor backward one word
Go more detail go to
source .
9. Start using Screen or Tmux.
If you work on the remote server considers using multiplexer like screen or tmux. So that you work without worry about network disconnection or if you want to access running process after some time.
10. git diff vs diff-so-fancy
If you git version control you project, which you must should, you'll find
diff-so-fancy a better alternative to plain git diff.
11. Ctrl + R enhanced with fzf
Bash command Ctrl+R is used to browse through earlier command used in terminal,
fzf combines it which fuzzy matching. A must try.