dotfiles/bashrc
Frank Villaro-Dixon a40fe28476 im a snail
2014-04-02 23:43:21 +02:00

592 lines
12 KiB
Bash

shopt -s checkwinsize #Pour pas s'écrire dessus
shopt -s histappend
##shopt -s autocd #Like zsh
PROMPT_COMMAND='history -a'
alias dvorak='setxkbmap dvorak'
dvorak
alias qwertz='setxkbmap ch,fr'
#For autocompletions
#function have() { return 1; } #Some files use have: suppress warnings (yeah: 2>.. )
#function _completion_loader() { return 1; }
#cd /usr/share/bash-completion/completions
#for i in *; do source ./$i; done
#unset have
#unset _completion_loader
complete -cf sudo
complete -cf man
#####ON DEFINIT LES COULEURS
red='\033[31m'
RED='\033[31m\033[01m'
YELLOW='\033[33m'
GREEN='\033[32m'
blue='\033[34m'
BLUE='\033[34m'
cyan='\033[36m'
CYAN='\033[36m'
magenta='\033[35m'
DFT='\033[0m'
white='\033[37m'
#####ON DÉFINIT LE TITRE DE LA FENETRE PAR LE REP EN COURS
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
#####LA COULEUR DU SHELL
#PS1="$RED\u$DFT$white@$magenta\h $DFT>>$CYAN\w $DFT"
#PS1="\u@\h >>\w "
#PS1="\[$RED\u$DFT$white@$magenta\h $DFT>>$CYAN\w $DFT\]"
#PS1="\[$RED\]\u\[$DFT$white\]@\[$magenta\]\h \[$DFT\]>>\[$CYAN\]\w \[$DFT\]"
#PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( `sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo`/1024))"\033[38;5;22m/"$((`sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo`/1024 ))MB"\t\033[m\033[38;5;55m$(< /proc/loadavg)\033[m"'
if [ "$HOSTNAME" == "chuck" ]; then
MY_HOST_COL='[31m' #ugly !
else
MY_HOST_COL='[34m'
fi
#PS1='\[\e[0;36m\]\t \[\e[1;30m\][\[\e$MY_HOST_COL\]\u@\H\[\e[1;30m\]\[\e[0;32m\]\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n$ '
source ~/.bash_ps1
#PS1='\[\e[0;36m\] \T \[\e[1;30m\][\[\e$MY_HOST_COL\]\u@\H\[\e[1;30m\]\[\e[0;32m\]\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n$ '
###############
#### ALIAS ####
###############
# {{{
alias ..='cd ..'
alias vf='cd'
alias xs='cd'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vm='mv -i'
alias df='dfc'
alias free='freec'
alias shred='shred -n 35 -z -u -v -f'
if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
fi
alias sl='ls'
alias la='ls -lah'
alias sudp='sudo' #fuck tpyos :p
alias sudpo='sudo'
alias halt='sudo poweroff'
#alias pacman='pacman-color'
alias pacmacn='pacman'
# '[r]emove [o]rphans' - recursively remove ALL orphaned packages
alias pacro="/usr/bin/pacman -Qtdq > /dev/null && sudo /usr/bin/pacman -Rns \$(/usr/bin/pacman -Qtdq | sed -e ':a;N;\$!ba;s/\n/ /g')"
alias grep='grep --color'
alias b+='xbacklight -inc 10% -steps 1 -time 0'
alias b-='xbacklight -dec 10% -steps 1 -time 0'
alias svim='sudo vim'
alias bim='vim'
alias vi='vim'
alias VIM='vim'
alias ivm='vim'
alias gl='git log --graph --abbrev-commit --pretty=oneline --decorate'
alias gitst='git status'
alias git_mail='git send-email --annotate --compose origin'
alias poule='git pull'
alias makew='make'
alias mkae='make'
alias amek='make'
alias BSI2='cd ~/Documents/Studies/BSI2*/'
BSI3_PATH='/home/frank/Documents/Studies/BSI3 - 2013-2014/'
alias BSI3='cd "$BSI3_PATH"'
OCTOPUS=~/.my_utils/octopus.sh
alias dual='$OCTOPUS monitor dual'
alias laptop='$OCTOPUS monitor laptop'
alias programming='$OCTOPUS monitor programming'
alias extern='$OCTOPUS monitor extern'
alias clone='$OCTOPUS monitor clone'
alias volup='$OCTOPUS volume up'
alias voldown='$OCTOPUS volume down'
alias volmute='$OCTOPUS volume mute'
alias suspend='$OCTOPUS suspend'
alias mfilms='cd /dev/shm && mkdir films && sshfs frank@vi-di.fr:/media/ films/'
alias muni='cd /dev/shm && mkdir uni && sshfs villaro0@pc69240:/user/l1/2011/villaro0/ uni/'
alias upgrub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
alias upkey='gpg --keyserver subkeys.pgp.net --send-key 6F36914A'
alias shm='cd /dev/shm'
alias ip6='ip -6'
alias disk-usage-analyser='baobab'
alias o='octave'
alias R='R --quiet'
alias cdu='cdu -idh'
alias dus='du -sh * | sort -h'
alias im='profanity'
alias eclipseJEE='/home/frank/Programmation/J2EE/eclipse/eclipse'
# }}}
###############
## FONCTIONS ##
###############
# {{{
function fuck {
shift;
killall -9 "$1"
echo "fucking $1" killed
}
function cd #{{{
{
if [ $# -eq 0 ]; then
builtin cd ~ && cons_set > /dev/null && ls
else
builtin cd "$*" && cons_set > /dev/null && ls
fi
}
#}}}
function pdfsearch #{{{
{
for pdf in `find ./ -name "*.pdf"`; do
pdftotext $pdf - | grep --color --with-filename --label="$pdf" "$1";
done
}
#}}}
function man { #{{{
env LESS_TERMCAP_mb=$'\E[01;31m' \
LESS_TERMCAP_md=$'\E[01;38;5;74m' \
LESS_TERMCAP_me=$'\E[0m' \
LESS_TERMCAP_se=$'\E[0m' \
LESS_TERMCAP_so=$'\E[38;5;246m' \
LESS_TERMCAP_ue=$'\E[0m' \
LESS_TERMCAP_us=$'\E[04;38;5;146m' \
man "$@"
} #}}}
alias ssh='my_ssh'
function my_ssh #{{{
{
ssh-add -l | grep id_rsa.auth > /dev/null
if [ $? -eq 1 ]; then
echo -e "$RED Please enter ssh passphrase ;) $DFT"
ssh-add ~/.ssh/id_rsa.auth
fi;
/usr/bin/ssh "$@"
}
# }}}
alias scp='my_scp'
function my_scp #{{{
{
ssh-add -l | grep id_rsa.auth > /dev/null
if [ $? -eq 1 ]; then
echo -e "$RED Please enter ssh passphrase ;) $DFT"
ssh-add ~/.ssh/id_rsa.auth
fi;
/usr/bin/scp "$@"
}
# }}}
function logs #{{{
{
tail -f $1 | ccze -A
} # }}}
function mkcd #{{{
{
mkdir -p "$@"
cd "$@"
}
# }}}
function extract #{{{
{
local e=0 i c
for i; do
if [ -f $i && -r $i ]; then
c=
case $i in
*.tar.bz2) c='tar xjf' ;;
*.tar.gz) c='tar xzf' ;;
*.bz2) c='bunzip2' ;;
*.gz) c='gunzip' ;;
*.tar) c='tar xf' ;;
*.tbz2) c='tar xjf' ;;
*.tgz) c='tar xzf' ;;
*.7z) c='7z x' ;;
*.Z) c='uncompress' ;;
*.exe) c='cabextract' ;;
*.rar) c='unrar x' ;;
*.xz) c='unxz' ;;
*.zip) c='unzip' ;;
*) echo "$0: cannot extract \`$i': Unrecognized file extension" >&2; e=1 ;;
esac
[ $c ] && command $c "$i"
else
echo "$0: cannot extract \`$i': File is unreadable" >&2; e=2
fi
done
return $e
}
# }}}
function study #{{{
{
if [ -z $1 ]; then
STUDY_PATH=''
else
if [ -d "$BSI3_PATH$1" ]; then
STUDY_PATH="$1"
else
STUDY_PATH=''
fi
fi
builtin cd "$BSI3_PATH$STUDY_PATH"
if [ -e calendar ]; then
echo -e "$RED WORK TO DO SOON:$BLUE"
calendar -A10
echo -e "$DFT"
fi
ls
} #}}}
_StudyCompletion()
{ # {{{
local cur # Pointer to current completion word.
COMPREPLY=() # Array variable storing the possible completions.
cur=${COMP_WORDS[COMP_CWORD]}
_STUDY_ACTUAL_DIR=`pwd`
builtin cd "$BSI3_PATH"
ALL_POSSIBLE_WORDS=(*)
builtin cd "$_STUDY_ACTUAL_DIR"
for i in ${ALL_POSSIBLE_WORDS[@]}; do
# echo ">>>$i"
WORD=$(echo $i | grep "^$cur" | tr -d ' ') #ugly
if [ $WORD ]; then
COMPREPLY+=("$WORD");
fi;
done
return 0
} # }}}
complete -F _StudyCompletion -o filenames study
RO_ROOT_DIRECTORY=/dev/shm/ro_$USER
ro()
{ # {{{
if [ ! -d $RO_ROOT_DIRECTORY ]; then
mkdir $RO_ROOT_DIRECTORY
fi
if [ -z $1 ]; then
my_root_set=`cat $RO_ROOT_DIRECTORY/default 2>/dev/null`
else
my_root_set=`cat $RO_ROOT_DIRECTORY/$1 2>/dev/null`
fi;
if [ -n "$my_root_set" ]; then
cd $my_root_set;
else
if [ -z $1 ]; then
echo -e "root for flag $1 not set.\nSet-it with roset $1"
else
echo "root not set ! set it with roset !";
fi
fi;
} # }}}
roset()
{ # {{{
if [ ! -d $RO_ROOT_DIRECTORY ]; then
mkdir $RO_ROOT_DIRECTORY
fi
if [ -z $1 ]; then
pwd > $RO_ROOT_DIRECTORY/default
else
pwd > $RO_ROOT_DIRECTORY/$1
fi
} # }}}
_RoRosetCompletion()
{ # {{{
local cur # Pointer to current completion word.
COMPREPLY=() # Array variable storing the possible completions.
cur=${COMP_WORDS[COMP_CWORD]}
_ROSET_ACTUAL_DIR=`pwd`
builtin cd $RO_ROOT_DIRECTORY
ALL_POSSIBLE_WORDS=(*)
builtin cd $_ROSET_ACTUAL_DIR
# echo "Cur: >>$cur<<"
for i in ${ALL_POSSIBLE_WORDS[@]}; do
# echo ">>>$i"
WORD=$(echo $i | grep "^$cur" | tr -d ' ') #ugly
if [ $WORD ]; then
# echo "blah!: >>$WORD<<"
COMPREPLY+=("$WORD");
fi;
done
return 0
} # }}}
complete -F _RoRosetCompletion -o filenames ro roset
function calc #{{{
{
echo "scale=3;$@" | bc -l
} #}}}
function xournal { #{{{
if [ -e "$1".xoj ]; then
/usr/bin/xournal "$1".xoj
else
/usr/bin/xournal "$1"
fi
} #}}}
function mutt { #{{{
if [ $# -eq 0 ]; then
if [ "$(pidof mutt)" ]; then
/usr/bin/mutt -R
else
/usr/bin/mutt
fi;
else
/usr/bin/mutt $@
fi;
} #}}}
function up2frank
{ #{{{
if [ ! $# -eq 1 ]; then
echo "usage: up2frank FILE"
return
else
file=$(echo $1 | sed 's/ /_/g')
scp "$1" "frank@vi-di.fr:public_html/upload/$file" > /dev/null
echo "https://frank.villaro-dixon.eu/upload/$file"
fi;
} #}}}
function rfc
{ #{{{
firefox http://www.ietf.org/rfc/rfc$1.txt
} #}}}
function tobed
{ #{{{
if [ $? -eq 0 ]; then #want to sleep now
tstmp=`date +%s`
tstmp=$(($tstmp+1000)) #16 min to fall asleep
tomorrow=$(($tstmp + 82800))
cycles=0;
one_cycle=5580 #93 min
while true; do
tstmp=$(($tstmp + $one_cycle))
((cycles++))
hour=`echo $tstmp | date --date=@$tstmp +%-H`
if [[ $hour -gt 4 && $hour -lt 12 ]]; then
min=`echo $tstmp | date --date=@$tstmp +%M`
stime=`echo "scale=1; $one_cycle * $cycles / 3600" | bc`
if [ $cycles -lt 5 ]; then #Not quite right: btw 7 and 9 hours -> 5/6 cycles
echo -ne $RED
elif [ $cycles -lt 6 ]; then
echo -ne $YELLOW
else
echo -ne $GREEN
fi
echo -e "$cycles cycles ($stime h)\t\tGet up: [$hour:$min]"
echo -ne $DFT
fi
if [[ $tstmp -gt $tomorrow && $cycles -gt 6 ]]; then
break;
fi
done;
fi
} #}}}
function bpm
{
read n
start=`date +%s`
beats=0
while true; do
read n
((beats++))
actual=`date +%s`
diff=`echo "scale=1; $beats / (($actual - $start) / 60)" | bc`
echo $diff bpm
done
}
function op
{
file="$1"
ext=${file##*\.}
echo file is "$ext"
case $ext in
"pdf")
echo "toto"
evince "$1"
;;
"zip")
file-roller "$1"
;;
"latex"|"tex")
vim "$1"
;;
"java")
vim "$1"
;;
"uxf")
umlet "$1"
;;
*)
xdg-open "$1"
;;
esac
}
function vim
{
#Pour Ctrl-S sur vim
local STTYOPTS="$(stty --save)"
stty stop '' -ixoff
command vim "$@"
stty "$STTYOPTS"
}
#CONS(OLE) function, a pretty useful functions that keeps track of
# the lasts whereabouts (in terms of folders) of the terminal
CONS_ROOT_DIRECTORY=/dev/shm/cons_$USER
function cons
{
if [ ! -d $CONS_ROOT_DIRECTORY ]; then
mkdir $CONS_ROOT_DIRECTORY
fi;
if [ $# -eq 0 ]; then
for f in $CONS_ROOT_DIRECTORY/*; do
echo -e "`echo $f|rev|cut -d/ -f1|rev` >>\n\t`cat $f`"
#XXX basename
done
elif [ $# -eq 1 ]; then
if [ -e $CONS_ROOT_DIRECTORY/$1 ]; then
cd $(cat $CONS_ROOT_DIRECTORY/$1)
else
echo $1 does not exist
fi;
fi;
}
function cons_set
{
TTY=$(tty)
if [ ! -d $CONS_ROOT_DIRECTORY ]; then
mkdir $CONS_ROOT_DIRECTORY
fi;
TTYNO=`echo $TTY | cut -d/ -f 4`
pwd > $CONS_ROOT_DIRECTORY/$TTYNO
}
#cttc: Copy To my Tty Cwd
# cttc TTY_NO FILE
function cttc
{
if [ $# -eq 2 ]; then
cwd=`cat $CONS_ROOT_DIRECTORY/$1`
cp -r "$2" "$cwd"
else
echo "cons to see terminals"
fi
}
# }}}
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
###############
### EXPORTS ###
###############
# {{{
export EDITOR="vim"
GPG_TTY=`tty`
export GPG_TTY
export GPGKEY=016106A6AF223DBE
export PYTHONPATH=/usr/local/lib/python2.7/dist-packages
export CC=clang
#export OMPI_MPICC=clang++
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=$DEVKITPRO/devkitARM
export PATH=$PATH:$DEVKITARM/bin
export MANPATH=$MANPATH:$DEVKITARM/man
export PATH=$PATH:~/Programmation/dotfiles/Utils
export HISTCONTROL=erasedups
# }}}
export PATH="$HOME/opt/cross/bin:$PATH"
export PATH="/home/frank/.gem/ruby/2.0.0/bin/:$PATH"
#Launch startx when login
[[ -z $DISPLAY && $XDG_VTNR -le 4 && -z $SSH_CLIENT ]] && exec startx
calendar -f ~/calendar