# .bashrc # 28-feb-2006 # # Shell is non-interactive? [[ $- != *i* ]] && return red='\e[0;31m' RED='\e[1;31m' blue='\e[0;34m' BLUE='\e[1;34m' cyan='\e[0;36m' CYAN='\e[1;36m' NC='\e[0m' # Personal aliases alias path='echo -e ${PATH//:/\\n}' alias df='df -kTh' alias du='du -kh' alias ls="ls -F -h --color=auto" alias cp='cp -v' alias mv='mv -v' alias vi='vim' alias xterm="xterm -bg black -fg gray -fs 11 -fa vera -geometry 80x50" # enable color grep if color is supported ( echo chk | grep --color=auto chk &> /dev/null ) && export GREP_OPTIONS="--color=auto" # uncomment for single line prompt #export PS1="\\u@\\H:\\w\\076" export PS1=$'\\[\\033m\\033[32m\\]\\u@\\h \\[\\033[33m\\w\\033[0m\\]\n$ ' # Make root prompt to be red [ "$HOME" == "/root" ] && export PS1=$'\\[\\033m\\033[31m\\]\\u@\\h \\[\\033[33m\\w\\033[0m\\]\n# ' export PS2='> ' # Source CD history code source acd_func.sh # Arrow-up/-down search history based on a mask, one entry at a time bind '"\e[A"':history-search-backward bind '"\e[B"':history-search-forward bind Space:magic-space # alt+r -- search history based on a mask (augments Arrow up): # method 1 #cmd_mhist="\"\C-k\C-ahistory | grep '^ *[0-9]* *\C-e.'\C-m\"" # method 2 cmd_mhist="\"\C-k\C-uhistory | grep \\\"^ *[0-9]* *\C-y\\\" \C-m\"" bind '"\M-r"':"$cmd_mhist" # alt+k -- paste current command line into history and begin new line cmd_hist="\"\C-ahistory -s '\C-e'\C-m\"" bind '"\M-k"':"$cmd_hist" # ctrl+xPgUp: show last 25 entries of the history # (erase the line first) bind '"\C-x\e[5~"':"\"\C-k\C-uhistory | tail -25\C-m\"" # ctrl+t -- new terminal bind '"\C-t"':"\"\C-a\C-kxterm&\C-m\"" # Now map xterm's alternative keybindings to existing functionality # Some are simple translations to correspontend M- combinations # ctrl+left/right arrows: bind '"\e\x5b\x31\x3b\x35\x44"':backward-word bind '"\e\x5b\x31\x3b\x35\x43"':forward-word # alt+b/f: the usual word navigation but in xterm terms bind '"\xe2"':backward-word bind '"\xe6"':forward-word # atl+backspace: bind '"\xff"':backward-kill-word # alt+'.': bind '"\xae"':yank-last-arg # alt+k: bind '"\xeb"':"$cmd_hist" # alt+r: bind '"\xf2"':"$cmd_mhist" unset cmd_hist cmd_mhist # Don't use ^D to exit set -o ignoreeof # Don't put duplicate lines in the history. export HISTCONTROL=ignoredups # Don't put 'history' commands themselves in the history export HISTIGNORE='history*' # Kepp no more than 1000 lines export HISTFILESIZE=1000 export HISTSIZE=1000 # Append, don't overwrite history shopt -s histappend # Check window size after each command to avoid annoying effects of resizing shopt -s checkwinsize # Write history before accepting a new command # Then read back the merged list export PROMPT_COMMAND='_xtitle; history -a; history -c; history -r' # Show directories bold, everything else is normal export LS_COLORS="no=00:fi=00:di=01:ln=00:pi=00:so=00:bd=00:cd=00:or=00:ex=00" # disable XON/XOFF flow control (^s/^q) stty -ixon # This is more objective than the builtin $SHLVL if [[ -z $BASH_NEST ]]; then export BASH_NEST=0 else (( BASH_NEST++ )) fi # print echo -e "${cyan}This is BASH ${red}${BASH_VERSION%.*}${cyan}"\ "- DISPLAY on ${red}$DISPLAY${cyan} - nest level ${red}${BASH_NEST}${NC}" # Activate bash_completions if appropriate bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.} if [ "$PS1" ] && [ $bmajor -eq 2 ] && [ $bminor '>' 04 ] \ && [ -f /etc/bash_completion ]; then # interactive shell # Source completion code . /etc/bash_completion fi unset bash bmajor bminor # _xtitle: sets title # no arguments (and no $MANUAL_TITLE) sets the title to current dir function _xtitle () { a="$1" if [[ -n $MANUAL_TITLE ]]; then a="$MANUAL_TITLE" else # auto is current directory, replace $HOME with ~ [[ -z $a ]] && a="${PWD/$HOME/~}" fi case "$TERM" in *term | rxvt | cygwin) echo -n -e "\033]0;$a\007" ;; screen) # add [screen] to the window title & change term name in screen's list echo -n -e "\033]0;$a[screen]\007" echo -n -e "\033k$a\033\134" ;; *) ;; esac } # by default no manual title block unset MANUAL_TITLE # xtitle: for manual set of title, this block _xtitle from # doing auto set # call with no parameters to reset to auto function xtitle() { a="$1" if [[ -z "$a" ]]; then unset MANUAL_TITLE else MANUAL_TITLE="$a" _xtitle fi } # changes window title to the command that is executed # could be used as a wrap for execution of any command function title_cmd() { s=$MANUAL_TITLE unset MANUAL_TITLE xtitle "$*" $* MANUAL_TITLE=$s } # for programs that involve user interaction (like doc browsing) # or take longer time (like compilations) it is good to # supply a more informative title # ADD here commands for which you wish to supply better title alias pinfo="title_cmd pinfo" alias info="title_cmd info" alias man="title_cmd man" alias make="title_cmd make" alias less="title_cmd less" alias more="title_cmd more" alias find="title_cmd find" alias ping="title_cmd ping" alias vim="title_cmd vim" # notice that vi becomes vim alias vi="title_cmd vim" # path_once: Adds a new path to $PATH, moves it to the end if it already # exists function path_once() { [ -z "$1" ] && return pa="$PATH:" # add end marker (one ':') pa="${pa//$1:/}" # remove any occurrance of $1: pa="${pa//::/:}" # remove any empty entry, replace :: with : PATH="$pa$1" # add $1 at the end (we already have the delimiter) } # show a fortune function fo() { wget -q -O - "http://anduin.eldar.org/cgi-bin/fortune.pl?max_lines=2&text_format=yes" } # continue with other settings if [ -f ~/.bashrc2 ]; then . ~/.bashrc2; fi # the content of this file is public domain # for updates: http://oocities.com/h2428/petar/bashrc.htm