Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Archlinux Ultimate Install - .bashrc
- # by helmuthdu
- ## OVERALL CONDITIONALS {{{
- _islinux=false
- [[ "$(uname -s)" =~ Linux|GNU|GNU/* ]] && _islinux=true
- _isarch=false
- [[ -f /etc/arch-release ]] && _isarch=true
- _isxrunning=false
- [[ -n "$DISPLAY" ]] && _isxrunning=true
- _isroot=false
- [[ $UID -eq 0 ]] && _isroot=true
- # }}}
- ## PS1 CONFIG {{{
- [[ -f $HOME/.dircolors ]] && eval $(dircolors -b $HOME/.dircolors)
- if $_isxrunning; then
- [[ -f $HOME/.dircolors_256 ]] && eval $(dircolors -b $HOME/.dircolors_256)
- export TERM='xterm-256color'
- B='\[\e[1;38;5;33m\]'
- LB='\[\e[1;38;5;81m\]'
- GY='\[\e[1;38;5;242m\]'
- G='\[\e[1;38;5;82m\]'
- P='\[\e[1;38;5;161m\]'
- PP='\[\e[1;38;5;93m\]'
- R='\[\e[1;38;5;196m\]'
- Y='\[\e[1;38;5;214m\]'
- W='\[\e[0m\]'
- get_prompt_symbol() {
- [[ $UID == 0 ]] && echo "#" || echo "\$"
- }
- if [[ $PS1 && -f /usr/share/git/git-prompt.sh ]]; then
- source /usr/share/git/completion/git-completion.bash
- source /usr/share/git/git-prompt.sh
- export GIT_PS1_SHOWDIRTYSTATE=1
- export GIT_PS1_SHOWSTASHSTATE=1
- export GIT_PS1_SHOWUNTRACKEDFILES=0
- export PS1="$GY[$Y\u$GY@$P\h$GY:$B\W\$(__git_ps1 \"$GY|$LB%s\")$GY]$W\$(get_prompt_symbol) "
- else
- export PS1="$GY[$Y\u$GY@$P\h$GY:$B\W$GY]$W\$(get_prompt_symbol) "
- fi
- else
- export TERM='xterm-color'
- fi
- #}}}
- ## BASH OPTIONS {{{
- shopt -s cdspell # Correct cd typos
- shopt -s checkwinsize # Update windows size on command
- shopt -s histappend # Append History instead of overwriting file
- shopt -s cmdhist # Bash attempts to save all lines of a multiple-line command in the same history entry
- shopt -s extglob # Extended pattern
- shopt -s no_empty_cmd_completion # No empty completion
- ## COMPLETION #{{{
- complete -cf sudo
- if [[ -f /etc/bash_completion ]]; then
- . /etc/bash_completion
- fi
- #}}}
- #}}}
- ## EXPORTS {{{
- export PATH=/usr/local/bin:$PATH
- #Ruby support
- if which ruby &>/dev/null; then
- GEM_DIR=$(ruby -rubygems -e 'puts Gem.user_dir')/bin
- if [[ -d "$GEM_DIR" ]]; then
- export PATH=$GEM_DIR:$PATH
- fi
- fi
- if [[ -d "$HOME/bin" ]] ; then
- PATH="$HOME/bin:$PATH"
- fi
- if which chromium &>/dev/null; then
- export CHROME_BIN=/usr/bin/chromium
- fi
- ## EDITOR #{{{
- if which vim &>/dev/null; then
- export EDITOR="vim"
- elif which emacs &>/dev/null; then
- export EDITOR="emacs -nw"
- else
- export EDITOR="nano"
- fi
- #}}}
- ## BASH HISTORY #{{{
- # make multiple shells share the same history file
- export HISTSIZE=1000 # bash history will save N commands
- export HISTFILESIZE=${HISTSIZE} # bash will remember N commands
- export HISTCONTROL=ignoreboth # ingore duplicates and spaces
- export HISTIGNORE='&:ls:ll:la:cd:exit:clear:history'
- #}}}
- ## COLORED MANUAL PAGES #{{{
- # @see http://www.tuxarena.com/?p=508
- # For colourful man pages (CLUG-Wiki style)
- if $_isxrunning; then
- export PAGER=less
- export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
- export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
- export LESS_TERMCAP_me=$'\E[0m' # end mode
- export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
- export LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box
- export LESS_TERMCAP_ue=$'\E[0m' # end underline
- export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
- fi
- #}}}
- #}}}
- ## ALIAS {{{
- alias freemem='sudo /sbin/sysctl -w vm.drop_caches=3'
- alias enter_matrix='echo -e "\e[32m"; while :; do for i in {1..16}; do r="$(($RANDOM % 2))"; if [[ $(($RANDOM % 5)) == 1 ]]; then if [[ $(($RANDOM % 4)) == 1 ]]; then v+="\e[1m $r "; else v+="\e[2m $r "; fi; else v+=" "; fi; done; echo -e "$v"; v=""; done'
- # GIT_OR_HUB {{{
- if which hub &>/dev/null; then
- alias git=hub
- fi
- #}}}
- # AUTOCOLOR {{{
- alias ls='ls --color=auto'
- alias dir='dir --color=auto'
- alias vdir='vdir --color=auto'
- alias grep='grep --color=auto'
- alias fgrep='fgrep --color=auto'
- alias egrep='egrep --color=auto'
- #}}}
- # MODIFIED COMMANDS {{{
- alias ..='cd ..'
- alias df='df -h'
- alias diff='colordiff' # requires colordiff package
- alias du='du -c -h'
- alias free='free -m' # show sizes in MB
- alias grep='grep --color=auto'
- alias grep='grep --color=tty -d skip'
- alias mkdir='mkdir -p -v'
- alias more='less'
- alias nano='sudo nano -w'
- alias ping='ping -c 5'
- #}}}
- # PRIVILEGED ACCESS {{{
- if ! $_isroot; then
- alias sudo='sudo '
- alias scat='sudo cat'
- alias svim='sudo vim'
- alias root='sudo su'
- alias reboot='sudo reboot'
- alias halt='sudo halt'
- fi
- #}}}
- # PACMAN ALIASES {{{
- # we're on ARCH
- if $_isarch; then
- # we're not root
- if ! $_isroot; then
- alias pacman='sudo pacman'
- fi
- alias pacorp='pacman -Rs $(pacman -Qtdq --color never)' # Remove orphans easily
- alias clean-house='pacman -Scc && pacman -Qnq | pacman -S -' #Clean all package cache and reinstall all packages
- fi
- #}}}
- # MULTIMEDIA {{{
- if which get_flash_videos &>/dev/null; then
- alias gfv='get_flash_videos -r 720p --subtitles'
- fi
- #}}}
- # LS {{{
- alias ls='ls -hF --color=auto'
- alias lr='ls -R' # recursive ls
- alias ll='ls -alh'
- alias la='ll -A'
- alias lm='la | less'
- #}}}
- #}}}
- #}}}
- # UP {{{
- # Goes up many dirs as the number passed as argument, if none goes up by 1 by default
- up() {
- local d=""
- limit=$1
- for ((i=1 ; i <= limit ; i++)); do
- d=$d/..
- done
- d=$(echo $d | sed 's/^\///')
- if [[ -z "$d" ]]; then
- d=..
- fi
- cd $d
- }
- #}}}
- # ARCHIVE EXTRACTOR {{{
- extract() {
- clrstart="\033[1;34m" #color codes
- clrend="\033[0m"
- if [[ "$#" -lt 1 ]]; then
- echo -e "${clrstart}Pass a filename. Optionally a destination folder. You can also append a v for verbose output.${clrend}"
- exit 1 #not enough args
- fi
- if [[ ! -e "$1" ]]; then
- echo -e "${clrstart}File does not exist!${clrend}"
- exit 2 #file not found
- fi
- if [[ -z "$2" ]]; then
- DESTDIR="." #set destdir to current dir
- elif [[ ! -d "$2" ]]; then
- echo -e -n "${clrstart}Destination folder doesn't exist or isnt a directory. Create? (y/n): ${clrend}"
- read response
- #echo -e "\n"
- if [[ $response == y || $response == Y ]]; then
- mkdir -p "$2"
- if [ $? -eq 0 ]; then
- DESTDIR="$2"
- else
- exit 6 #Write perms error
- fi
- else
- echo -e "${clrstart}Closing.${clrend}"; exit 3 # n/wrong response
- fi
- else
- DESTDIR="$2"
- fi
- if [[ ! -z "$3" ]]; then
- if [[ "$3" != "v" ]]; then
- echo -e "${clrstart}Wrong argument $3 !${clrend}"
- exit 4 #wrong arg 3
- fi
- fi
- filename=`basename "$1"`
- #echo "${filename##*.}" debug
- case "${filename##*.}" in
- tar)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (uncompressed tar)${clrend}"
- tar x${3}f "$1" -C "$DESTDIR"
- ;;
- gz)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
- tar x${3}fz "$1" -C "$DESTDIR"
- ;;
- tgz)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
- tar x${3}fz "$1" -C "$DESTDIR"
- ;;
- xz)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
- tar x${3}f -J "$1" -C "$DESTDIR"
- ;;
- bz2)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (bzip compressed tar)${clrend}"
- tar x${3}fj "$1" -C "$DESTDIR"
- ;;
- zip)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (zipp compressed file)${clrend}"
- unzip "$1" -d "$DESTDIR"
- ;;
- rar)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (rar compressed file)${clrend}"
- unrar x "$1" "$DESTDIR"
- ;;
- 7z)
- echo -e "${clrstart}Extracting $1 to $DESTDIR: (7zip compressed file)${clrend}"
- 7za e "$1" -o"$DESTDIR"
- ;;
- *)
- echo -e "${clrstart}Unknown archieve format!"
- exit 5
- ;;
- esac
- }
- #}}}
- # ARCHIVE COMPRESS {{{
- compress() {
- if [[ -n "$1" ]]; then
- FILE=$1
- case $FILE in
- *.tar ) shift && tar cf $FILE $* ;;
- *.tar.bz2 ) shift && tar cjf $FILE $* ;;
- *.tar.gz ) shift && tar czf $FILE $* ;;
- *.tgz ) shift && tar czf $FILE $* ;;
- *.zip ) shift && zip $FILE $* ;;
- *.rar ) shift && rar $FILE $* ;;
- esac
- else
- echo "usage: compress <foo.tar.gz> ./foo ./bar"
- fi
- }
- #}}}
- #}}}
- # REMIND ME, ITS IMPORTANT! {{{
- # usage: remindme <time> <text>
- # e.g.: remindme 10m "omg, the pizza"
- remindme() { sleep $1 && zenity --info --text "$2" & }
- #}}}
- # SIMPLE CALCULATOR #{{{
- # usage: calc <equation>
- calc() {
- if which bc &>/dev/null; then
- echo "scale=3; $*" | bc -l
- else
- awk "BEGIN { print $* }"
- fi
- }
- #}}}
- # FILE & STRINGS RELATED FUNCTIONS {{{
- ## FIND A FILE WITH A PATTERN IN NAME {{{
- ff() { find . -type f -iname '*'$*'*' -ls ; }
- #}}}
- ## FIND A FILE WITH PATTERN $1 IN NAME AND EXECUTE $2 ON IT {{{
- fe() { find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ; }
- #}}}
- ## MOVE FILENAMES TO LOWERCASE {{{
- lowercase() {
- for file ; do
- filename=${file##*/}
- case "$filename" in
- */* ) dirname==${file%/*} ;;
- * ) dirname=.;;
- esac
- nf=$(echo $filename | tr A-Z a-z)
- newname="${dirname}/${nf}"
- if [[ "$nf" != "$filename" ]]; then
- mv "$file" "$newname"
- echo "lowercase: $file --> $newname"
- else
- echo "lowercase: $file not changed."
- fi
- done
- }
- #}}}
- ## SWAP 2 FILENAMES AROUND, IF THEY EXIST {{{
- #(from Uzi's bashrc).
- swap() {
- local TMPFILE=tmp.$$
- [[ $# -ne 2 ]] && echo "swap: 2 arguments needed" && return 1
- [[ ! -e $1 ]] && echo "swap: $1 does not exist" && return 1
- [[ ! -e $2 ]] && echo "swap: $2 does not exist" && return 1
- mv "$1" $TMPFILE
- mv "$2" "$1"
- mv $TMPFILE "$2"
- }
- #}}}
- ## FINDS DIRECTORY SIZES AND LISTS THEM FOR THE CURRENT DIRECTORY {{{
- dirsize () {
- du -shx * .[a-zA-Z0-9_]* 2> /dev/null | egrep '^ *[0-9.]*[MG]' | sort -n > /tmp/list
- egrep '^ *[0-9.]*M' /tmp/list
- egrep '^ *[0-9.]*G' /tmp/list
- rm -rf /tmp/list
- }
- #}}}
- ## FIND AND REMOVED EMPTY DIRECTORIES {{{
- fared() {
- read -p "Delete all empty folders recursively [y/N]: " OPT
- [[ $OPT == y ]] && find . -type d -empty -exec rm -fr {} \; &> /dev/null
- }
- #}}}
- #}}}
- # ENTER AND LIST DIRECTORY{{{
- function cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
- #}}}
- # SYSTEMD SUPPORT {{{
- if which systemctl &>/dev/null; then
- start() {
- sudo systemctl start $1.service
- }
- restart() {
- sudo systemctl restart $1.service
- }
- stop() {
- sudo systemctl stop $1.service
- }
- enable() {
- sudo systemctl enable $1.service
- }
- status() {
- sudo systemctl status $1.service
- }
- disable() {
- sudo systemctl disable $1.service
- }
- fi
- #}}}
- #}}}
- fortune -o -s | cowsay
- #screenfetch
- # TLP Alises {{{
- # we're on ARCH
- if $_isarch; then
- # we're not root
- if ! $_isroot; then
- alias tlp='sudo tlp'
- fi
- alias='tlp true'
- alias='tlp bat'
- alias='tlp false'
- alias='tlp usb'
- alias='tlp bayoff'
- alias='tlp discharge'
- alias='tlp setcharge'
- alias='tlp fullcharge'
- alias='tlp recalibrate'
- alias='tlp stat'
- alias='tlp diskid'
- fi
- #}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement