# If not running interactively, don't do anything more [ -z "$PS1" ] && return DEBEMAIL=julien DEBEMAIL=$DEBEMAIL@ DEBEMAIL=${DEBEMAIL}palard.fr DEBFULLNAME="Julien Palard" export DEBEMAIL DEBFULLNAME export PATH="$PATH:~/mbin" export EDITOR=emacs export PYTHONIOENCODING=utf_8 export HISTCONTROL=ignoredups shopt -s checkwinsize shopt -s cdspell shopt -s dirspell 2>/dev/null # Only in bash 4 shopt -s autocd 2>/dev/null # Only in bash 4 shopt -s globstar 2>/dev/null # Only in bash 4 shopt -s nocaseglob # http://nion.modprobe.de/blog/archives/572-less-colors-for-man-pages.html export LESS_TERMCAP_mb=$'\E[01;31m' # debut de blink export LESS_TERMCAP_md=$'\E[01;31m' # debut de gras export LESS_TERMCAP_me=$'\E[0m' # fin export LESS_TERMCAP_so=$'\E[01;44;33m' # début de la ligne d'état export LESS_TERMCAP_se=$'\E[0m' # fin export LESS_TERMCAP_us=$'\E[01;32m' # début de souligné export LESS_TERMCAP_ue=$'\E[0m' # fin set -C upgrade() { rm -f ~/.bashrc.1 echo "Downloading mandark's bashrc..." wget --timeout=1 --quiet http://mandark.fr/bashrc/?42 -O ~/.bashrc.1 if grep -q grep ~/.bashrc.1 then DIFF="$(diff ~/.bashrc ~/.bashrc.1)" if [ -z "$DIFF" ] then echo "Nothing to upgrade" else echo "Here is the applied patch :" printf "%s\n" "$DIFF" mv -f ~/.bashrc.1 ~/.bashrc echo "type . ~/.bashrc to load your new bashrc file !" fi else rm -f ~/.bashrc.1 fi } cleanslashtmp() { find /tmp -type f -atime +6 -delete 2> /dev/null } str_sum() { BC=$(which bc) if [ -z "$1" ] then echo "Usage str_sum STRING" return fi if [ -x "$BC" ] ; then printf "%s" "$1" | hexdump -b | head -n 1 | tr ' ' '+' \ | sed 's/\+*$//g' | bc else echo 0 fi } HOSTNAME_SUM=$(str_sum "$(hostname)") HOSTNAME_BOLD=$(( ($HOSTNAME_SUM + 1) % 2)) HOSTNAME_HUE=$(( ($HOSTNAME_SUM + 3) % 6 + 31)) USERNAME_SUM=$(str_sum "$(whoami)") USERNAME_BOLD=$(( ($USERNAME_SUM + 1) % 2)) USERNAME_HUE=$(( ($USERNAME_SUM + 2) % 6 + 31)) HOSTNAME_COLOR=$'\E'"[$HOSTNAME_BOLD;${HOSTNAME_HUE}m" USERNAME_COLOR=$'\E'"[$USERNAME_BOLD;${USERNAME_HUE}m" if [ $(id -u) -eq 0 ] ; then alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' fi # make less more friendly for non-text input files, see lesspipe(1) [ -x /usr/bin/lesspipe ] && eval "$(lesspipe)" WHITE=$'\E[00m' parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/:\1/' } PS1_trail="" [ -f "$(which git)" ] && PS1_trail="$PS1_trail\$(parse_git_branch)" #DATE="\033[s\033[1;\$((COLUMNS-4))f\$(date +%H:%M)\033[u" [ "$TERM" != 'linux' ] && TITLE="\[\033]0;\u@\H:\w\a\]" || TITLE='' export PS1="$TITLE\[$USERNAME_COLOR\]\u\[$WHITE\]@\[$HOSTNAME_COLOR\]\H\[$WHITE\]$PS1_trail"'\$' umask 022 ..() { for ((j=${1:-1},i=0;iextract<" ;; esac else echo "extract: ERROR: cannot open '$*' (No such file or directory)" fi } export LS_OPTIONS='--color=auto' eval "`dircolors`" alias grep="grep --color" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' alias ...=".. 2" alias ....=".. 3" alias .....=".. 4" alias scr='screen -DURe^Hh -h 424242' alias lintian='lintian --pedantic -v -iI --display-experimental --show-overrides' alias wget='wget --referer="http://www.google.com" --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" --header="Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" --header="Accept-Language: en-us,en;q=0.5" --header="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" --header="Keep-Alive: 300"' alias fingerprint='ssh-keygen -l -f /etc/ssh/*rsa*.pub' alias mysql='mysql --defaults-file=/etc/mysql/debian.cnf' alias mysqldump='mysqldump --defaults-file=/etc/mysql/debian.cnf' unalias e 2>/dev/null function e { if echo "$1" | grep -q ':[0-9]\+$' then file_and_line="$1" shift file="$(echo $file_and_line | cut -d: -f1)" line="$(echo $file_and_line | cut -d: -f2)" emacs +$line "$file" "$@" elif echo "$1" | grep -q '~.\+' then file_and_pattern="$1" shift file="$(echo $file_and_pattern | cut -d~ -f1)" pattern="$(echo $file_and_pattern | cut -d~ -f2)" line=$(/bin/grep -n "$pattern" "$file" | cut -d: -f1 | head -n 1) if [ ${#line} != 0 ] then emacs +"$line" "$file" "$@" else emacs $file fi else emacs "$*" fi } unalias jsonpp 2>/dev/null jsonpp() { json="$([ $# -gt 0 ] && echo $* || cat -)" echo $json | python -mjson.tool || echo $json } knock() { HOST="$1" [ $# -eq 0 ] && echo "Usage : knock HOST [SSH_OPTIONS]" && return shift while read -p "Port (then ^D to connect) " -s PORT do netcat -w 1 "$HOST" $PORT 2> /dev/null echo done echo ssh $HOST $* } clean() { find -maxdepth 3 -name .emacs_backups -prune \ -o \( -type f -a \ \( -name '*~' -o -name '#*#' \) \ \) \ -print0 | xargs -0 rm -f } jpg_comment() { if [ "$#" -lt 2 ] then echo "Usage: jpg_comment FILE COMMENT [COMMENT...]" return fi image="$1" shift exif --ifd=EXIF -t 'User Comment' --set-value="$*" -o "$image" "$image" } if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi if [ -f ~/.my_bashrc ]; then . ~/.my_bashrc fi man_colors() { for j in 0 1 ; do for i in $(seq 31 36) ; do echo "\033[${j};${i}m$j;$i" done done } diagnose_network() { echo "Hostname: " $(hostname) echo "Ip configuration: " ifconfig \ | grep -o "^[^l ][a-zA-Z0-9]*" \ | while read interface do ip addres show $interface if [ -x /sbin/ethtool ] ; then ethtool $interface | grep "Speed\|Duplex" else echo "You should use ethtool $interface to verify that $interface run in Full Duplex, but ethtool isn't installed )o:" fi done echo route -n echo echo "Ping gatewayz :" route -n \ | sed 's/ */ /g' \ | cut -d ' ' -f2 \ | grep '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' \ | grep -v '0\.0\.0\.0' \ | while read gateway do if ping -c 1 $gateway > /dev/null ; then echo "$gateway is up." else echo "/!\ $gateway is down, running traceroute" traceroute $gateway exit 1 fi done echo echo "Ping DNS servers from /etc/resolv.conf" cat /etc/resolv.conf \ | grep "nameserver" \ | sed -r 's/[ \t]+/ /g' \ | cut -d' ' -f2 \ | while read dns_server do if ping -c 1 $dns_server > /dev/null ; then echo "$dns_server is up." else echo "/!\ $dns_server is down." traceroute $dns_server fi done } center() { l="$(cat -)" s=$(echo -e "$l"| wc -L) echo "$l" | while read l do j=$(((s-${#l})/2)) echo "$(while ((--j>=0)); do printf " ";done;)$l" done } note() { [ $# -gt 0 ] && ( echo "$*" | mail -s "Note" ${DEBEMAIL} ) || mail -s "Note" ${DEBEMAIL} } ssh-agent-restore() { select AUTH_SOCK in /tmp/ssh-*/* do export SSH_AUTH_SOCK="$AUTH_SOCK" export SSH_AGENT_PID="${SSH_AUTH_SOCK##/*/*.}" return done }