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 >'