bashrc amelioré

Startseite

Nachricht beantworten
Autor: Manu Rouat
Datum:  
To: La Guilde
Betreff: bashrc amelioré


Bon, je vous refourgue un bashrc un peu amelioré - n'hesitez
pas a faire des suggestions d'alias, de fonctions bien ficelees
ou tout simplement utiles....

manu# ./.bashrc
#
# Ce fichier est lu à chaque fois qu'on lance bash en mode interactif.
# Ce comportement peut être modifié avec les options -norc, -rcfile
# ou bien avec la variable 'ENV'


# D'abord on lit le fichier de définition universel (ou système)
# s'il existe:

if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi



# Quelques exemples d'alias pratiques:

alias h="history | tail -50 "
alias ..="cd .."
alias j="jobs -l"
alias pp="ps ufx"
alias ls="ls -F --color"
alias ll="ls -al"
alias lt="ls -alt"
alias cd-="cd -"

# Opérations sur disquette avec tar:

alias fdls="tar -tvf /dev/fd0" # liste (Floppy Disk LS)
alias fdr="tar -xvf /dev/fd0" # lecture (Read)
alias fdw="tar -cvf /dev/fd0" # écriture (Write)

# Opérations sur cdrom - assurez-vous de pouvoir le monter
#                        en tant qu'utilisateur 


alias cdmount="mount /mnt/cdrom && cd /mnt/cdrom/ && ll"
alias cdumount="umount /mnt/cdrom"

# Pour les utilisateurs de RedHat:

alias whichrpm="rpm -qf" # indique à quel rpm appartient un fichier
alias descrpm="rpm -qpli" # décrit le contenu d'un rpm

# Dans Bash, on ne peut pas passer d'arguments dans un alias
# comme dans csh - une façon détournée de le faire est d'utiliser
# une fonction à la place:

function lc() { ls -FCs $* |more; }

# utilisation : faites un "lc /usr/bin"

function search() { find . -name $2 -print | xargs grep -i $1 }

# utilisation: faites un : cd /usr ; search gpl *.c

# une p'tite calculette ?
function calc() { awk "BEGIN{ print $* }" }

# utilisation: calc '(2+7.2)*sin(3.14159)/(2.5*log(10))' (les quotes '' sont indispensables)

# Une fonction un peu plus tordue, un bon exercice consiste
# à comprendre comment ça marche (cette fonction est une des brillantes
# contributions de Fred Albrecht,modifiée par mes soins)


function tree() 
    {
    OPTIND=1
    local type=""
    while getopts :d opt; 
    do
    case $opt in
        d) type="-type d " ;;
        *) echo "Usage: tree [-d] [dirname]"; return ;;
    esac
    shift 1
    done
    local dir=${1:-.}
    (cd ${dir}; pwd)
    find ${dir} ${type} -print | sort -f |
    sed -e "s,^${dir},," -e "/^$/d" -e "s,[^/]*/\([^/]*\)$,\`----\1," -e "s,[^/]*/, |    ,g"
    }


# Celle-ci est utilisée par la suivante:

ask()
    {
    echo -n "$@" '[y/n] '
    read ans
    case "$ans" in
        y*|Y*) return 0 ;;
        *) return 1 ;;
    esac
    }


# Celle-ci synchronise un répertoire sur un autre à l'aide de l'utilitaire
# rdist - je m'en sert pour faire un mirroir de mon compte personnel.
# Note: je ne garantie pas que ça marche toujours bien via NFS.....

fscp()
    {
    OPTIND=1
    local test=""
    local clean=""
    local usage="fscp: synchronize file systems.
Usage: fscp [-t] [-R] refdir destdir [host]."
    while getopts :tR opt
    do
        case "$opt" in
        t) test="-n " ;;
        R) clean="-R " ;;
        *) echo "$usage"; return;;
        esac
    done
    shift $(( $OPTIND - 1 ))
    local host=${3:-localhost}
    if [ "$#" -lt 2 ]; then 
        echo "$usage"
        return;
    fi
    if ask "Synchronising $2 (on host $host) to $1 ....proceed?"
        then rdist $test $clean -c $1 $host:$2
    fi
    }





# Celle ci passe tous les noms de fichiers qu'on lui passe en
# minuscules - par example , 'mv2lower *' pour tous les fichiers
# du répertoire courant (tirée du tar.gz de bash-2.0)

function mv2lower()
    {
    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
    }


# Basée sur 'go_netscape' de Gerd Bavendiek bav@??? 97-02-28
# Cette fonction permet soit de lancer netscape s'il n'y en a pas encore
# un qui tourne, soit d'utiliser le netscape déjà lancé comme serveur:

function netscape() 
    {
    local URL=""
    if [ "$#" -lt 1 ]; then
    URL=""
    elif [ -r $1 -a ${1##*/} = $1 ]; then
    URL="$PWD/$1"
    else
    URL="$1"
    fi
    # If you want to look at the URL in a new window,
    # use "openURL($URL, new-window)".
    if [ -h $HOME/.netscape/lock ]; then
    ARGS="-remote \"openURL(${URL})\""
    else
    ARGS="$URL >/dev/null 2>&1 & "
    fi
    eval /usr/bin/netscape ${ARGS}
    # disown  # uniquement sur bash-2.0 
}



# Et dans le même genre, pour les accros de emacs/xemacs:

function te()
    {
    local GS=`ps x | grep gnuserv` 
    if [ -n "$GS" ]; then  #gnuserv running
        gnuclient -q $@ 
    else
        eval xemacs $@ > /dev/null 2>&1 &
        # disown # uniquement si vous utilisez bash-2.0
    fi
    }



# Bash possède un grand nombre de paramètres qui modifie son comportement.
# En voici quelques-uns...

set notify
set noclobber


# si vous utilisez xterm ou rxvt, voici un ptit truc sympa pour lui
# faire afficher user@host:pwd dans la barre de titre:

if [ $TERM = 'xterm' -o $TERM = 'rxvt' ];
then
PS1='\u [\W]> \[\033]0;\u@\h: \w\007\]'
else
PS1='\u [\W]> '
fi


# ou bien encore:

#if [ $TERM = 'xterm' ]
# then export PROMPT_COMMAND='echo -ne "\033]2;"`whoami`@`hostname`: $PWD"\007"'
#fi

# vous pouvez aussi essayer celui-ci, franchement tordu....
# (pour explications, voir Linux Gazette 8 (2C tips) )
#PS1='?[;0H?[K?[0;37;44mPwd:?[1;38;40m$(pwd)?[u\u >'