.bashrc customization

August 28, 2020 - Reading time: 8 minutes

Some customization done to my default .bashrc file. Most of them from DistroTube's .bashrc file on GitLab.

#
# ~/.bashrc
#

[[ $- != i ]] && return

colors() { local fgc bgc vals seq0

printf "Color escapes are %s\n" '\e[${value};...;${value}m'
printf "Values 30..37 are \e[33mforeground colors\e[m\n"
printf "Values 40..47 are \e[43mbackground colors\e[m\n"
printf "Value  1 gives a  \e[1mbold-faced look\e[m\n\n"

# foreground colors
for fgc in {30..37}; do
    # background colors
    for bgc in {40..47}; do
        fgc=${fgc#37} # white
        bgc=${bgc#40} # black

        vals="${fgc:+$fgc;}${bgc}"
        vals=${vals%%;}

        seq0="${vals:+\e[${vals}m}"
        printf "  %-9s" "${seq0:-(default)}"
        printf " ${seq0}TEXT\e[m"
        printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
    done
    echo; echo
done

}

[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion

Change the window title of X terminals

case ${TERM} in xterm|rxvt|Eterm|aterm|kterm|gnome|interix|konsole) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.}:${PWD/#$HOME/~}\007"' ;; screen) PROMPTCOMMAND='echo -ne "\033${USER}@${HOSTNAME%%.}:${PWD/#$HOME/~}\033\"' ;; esac

use_color=true

Set colorful PS1 only on colorful terminals.

dircolors --print-database uses its own built-in database

instead of using /etc/DIR_COLORS. Try to use the external file

first to take advantage of user additions. Use internal bash

globbing instead of external grep binary.

safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM match_lhs="" [[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)" [[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)" [[ -z ${match_lhs} ]] \ && type -P dircolors >/dev/null \ && match_lhs=$(dircolors --print-database) [[ $'\n'${match_lhs} == $'\n'"TERM "${safe_term} ]] && use_color=true

if ${use_color} ; then

Enable colors for ls, etc. Prefer ~/.dir_colors #64489

if type -P dircolors &gt;/dev/null ; then
    if [[ -f ~/.dir_colors ]] ; then
        eval $(dircolors -b ~/.dir_colors)
    elif [[ -f /etc/DIR_COLORS ]] ; then
        eval $(dircolors -b /etc/DIR_COLORS)
    fi
fi

if [[ ${EUID} == 0 ]] ; then
    PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '
else
    PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] '
fi

# alias ls='ls --color=auto'
alias grep='grep --colour=auto'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'

else if [[ ${EUID} == 0 ]] ; then

show root@ when we don't have colors

    PS1='\u@\h \W \$ '
else
    PS1='\u@\h \w \$ '
fi

fi

unset use_color safe_term match_lhs sh

alias np='nano -w PKGBUILD' alias more=less

xhost +local:root > /dev/null 2>&1

complete -cf sudo

Bash won't get SIGWINCH if another process is in the foreground.

Enable checkwinsize so that bash will check the terminal size when

it regains control. #65623

http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)

shopt -s checkwinsize

shopt -s expand_aliases

export QT_SELECT=4

██████  ███  ███  █████  ███  ██  ██████ 

██    ██ ████  ████ ██   ██ ████  ██ ██    ██ 

██  ██ ██ ████ ██ ███████ ██ ██  ██ ██  ██ 

██  ██ ██  ██  ██ ██   ██ ██  ██ ██ ██  ██ 

 ██████  ██      ██ ██  ██ ██   ████  ██████  

                                       

Terminal language

export LANG=C

Enable history appending instead of overwriting. #139609

shopt -s histappend

Do not wait for terminal closing to write to bash history file

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

Ignore upper and lowercase when TAB completion

bind "set completion-ignore-case on"

ARCHIVE EXTRACTION

usage: ex <file>

ex () { if [ -f $1 ] ; then case $1 in .tar.bz2) tar xjf $1 ;; .tar.gz) tar xzf $1 ;; .bz2) bunzip2 $1 ;; .rar) unrar x $1 ;; .gz) gunzip $1 ;; .tar) tar xf $1 ;; .tbz2) tar xjf $1 ;; .tgz) tar xzf $1 ;; .zip) unzip $1 ;; .Z) uncompress $1;; .7z) 7z x $1 ;; .deb) ar x $1 ;; .tar.xz) tar xf $1 ;; .tar.zst) unzstd $1 ;;
*) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi }

Changing "ls" to "exa"

alias ls='exa -al --icons --color=always --group-directories-first' # default ls to exa long format all files and dirs alias la='exa -a --color=always --group-directories-first' # all files and dirs alias ll='exa -l --color=always --group-directories-first' # long format alias lt='exa -aT --color=always --group-directories-first' # tree listing for directory and all subdirectories alias l.='exa -a | egrep "^."' # all dot files

Adding flags

alias df='df -h' # human-readable sizes alias free='free -m' # show sizes in MB

Confirm before overwriting something

alias cp="cp -i" alias mv='mv -i'

youtube-dl

alias yta="youtube-dl --extract-audio --audio-format best " # download best audio alias ytmp3="youtube-dl --extract-audio --audio-format mp3 " # download mp3 audio alias ytwav="youtube-dl --extract-audio --audio-format wav " # download wave audio alias ytdl="youtube-dl -f bestvideo+bestaudio " # download best video and audio

alias spotdl="/home/omano/.local/bin/spotdl " # pip install spotdl alias up="uptime" #

GitHub bare repo https://articles.assembla.com/en/articles/1136998-how-to-add-a-new-remote-to-your-git-repo

alias cfg='/usr/bin/git --git-dir=/home/omano/.cfg/ --work-tree=/home/omano' # git command for the bare repo alias cfgadd='/usr/bin/git --git-dir=/home/omano/.cfg/ --work-tree=/home/omano add' # add a file to the repo alias cfgcommit='/usr/bin/git --git-dir=/home/omano/.cfg/ --work-tree=/home/omano commit -a -m "updating dotFiles"' # create a commit alias cfgpush='/usr/bin/git --git-dir=/home/omano/.cfg/ --work-tree=/home/omano push --repo https://github.com/Zorrototo/dotFiles' # push commit

to /etc/environment

export EDITOR=/usr/bin/nano

export DIFFPROG=/usr/bin/meld

iotop current activity

alias topio="sudo iotop -o"

quick pyhttp web server

alias pyhttp="python -m http.server"

alias ug="sudo update-grub"

cornyjokes https://github.com/kz6fittycent/corny-jokes

alias cornyjokes="~/Scripts/corny-jokes/cornyjokes" cornyjokes