SAlut,
je vais un peu etoffer mon article sur bash - voici déjà un .bashrc
avec qques fonctions - des commentaires/suggestions ?
manu# ./.bashrc
#
# Ce fichier est lu à chaque fois qu'on lance bash à condition
# que la variable ENV=$HOME/.bashrc soit bien définie dans le
# le .bash_profile
# 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 synchronise un repertoire 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 bien via NFS.....
function fscp()
{
local host=${3:-localhost}
if [ "$#" -lt 2 ]; then
echo \
"fscp: synchronize file systems.
Usage: fscp dir destdir [host]."
return;
fi
echo "Synchronising $2 to $1 on host $host..."
rdist -p /usr/sbin/rdistd -o remove -c $1 $host:$2
}
# 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:
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é 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}
}
# 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, voici un ptit truc sympa pour lui
# faire afficher user@host:pwd dans la barre de titre:
if [ $TERM = 'xterm' ];
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 >'