# ./.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 -altr" 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" # 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) fstr() { if [ "$#" -gt 2 ]; then echo "Fstr: search for pattern in files. Usage: fstr \"pattern\" [files] " return; fi local files=${2:-\"*\"} eval find . -type f -name $files -print | xargs grep -n "$1" } # utilisation: faites un : cd /usr/src/linux ; fstr GPL *.h # 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@rw.sni.de 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 - on # remarquera quelques bricolages pour déterminer si l'argument (s'il existe) # est un fichier local ou une URL. function netscape() { local URL="" if [ -n "$@" ]; then if [ ! -r $1 ]; then #lisible ? URL="$1" elif [ ${1%%/*} ]; then #relatif ? URL="$PWD/$1" else URL="$1" fi 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} ) } # Et dans le même genre, pour les accros de emacs/xemacs: function te() { local GS=`ps x | grep gnuserv |grep -v grep` if [ -n "$GS" ]; then #gnuserv running gnuclient -q $@ else (eval xemacs $@ &) 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 >'