A l’intérieur de mon .bashrc
mardi 22 janvier 2013 à 11:26Généralement montrer son .bashrc donne rapidement lieu dans les comments à un concours de celui qui a la plus longue (jusqu’à ce qu’arrive un utilisateur de zsh, et alors commence le concours de celui qui pisse le plus loin). Mais bon, aujourd’hui j’ai la flemme d’écrire un article complet.
Rappel : le .bashrc c’est le fichier qui est automatiquement chargé au démarrage du shell bash, le shell par défaut sur la plupart des Unix incluant Mac et Ubuntu.
Donc si vous voulez avoir une expérience de travail personnalisée dans votre terminal, c’est dans ce fichier que ça se passe.
Personnellement, j’ai tout le bordel que met Ubuntu par défaut (notamment les trucs avec les autocomplétions de partout). En en prime je rajoute :
# un raccourcis pour lancer redis car je le met sur off par défaut met je le # lance souvent function redis { if [ ! -e "/var/run/redis/redis-server.pid" ] ; then sudo service redis-server start fi } # un tas de raccourcis type function projet_django { workon projet_django; cd /home/sam/Work/projet_django/repo/projet_django; if [[ $# -ne 0 ]]; then ./manage.py $@ fi } alias sb='projet_django' # CF: http://sametmax.com/un-alias-bash-pour-django-virtualenv-dont-je-ne-peux-plus-me-passer/ # fonction fétiche de bourrin function killbill { BAK=$IFS IFS=$'\n' for id in $(ps aux | grep -P -i $1 | grep -v "grep" | awk '{printf $2" "; for (i=11; i<NF; i++) printf $i" "; print $NF}'); do service=$(echo $id | cut -d " " -f 1) if [[ $2 == "-t" ]]; then echo $service \"$(echo $id | cut -d " " -f 2-)\" "would be killed" else echo $service \"$(echo $id | cut -d " " -f 2-)\" "killed" kill -9 $service fi done IFS=$BAK } # que j'ai un peu amélioré depuis http://sametmax.com/tu-vas-crever-oui/ # une fonction pour commiter rapidement function commit { git commit -m "`echo "$*" | sed -e 's/^./\U&\E/g'`" } alias co=commit; # en gros on tappe "co message de commit". Sans guillement, sans rien. # des completions pour manage.py et git source /home/sam/.django_bash_completion source /home/sam/.git-completion.bash # activation du cache de pip pour éviter de télécharger 20 fois la même lib PIP_DOWNLOAD_CACHE='/opt/pip-cache'; export PIP_DOWNLOAD_CACHE; # un super outil pour un git plus user friendly [ -s "/home/sam/.scm_breeze/scm_breeze.sh" ] && source "/home/sam/.scm_breeze/scm_breeze.sh" alias c="git_index" # j'en avais parlé ici : http://sametmax.com/scm-breeze-facilite-la-selection-de-vos-fichiers-a-commiter-sous-git-avec/ # un prompt personalisé tout en couleur # formaté comme ça: [nom du virtualenv] sam ~/path (branche git) $ source ~/.prompt.bash # le fichier ressemble à ça : http://0bin.net/paste/d103a91dc41818462da0c8468ddddf4141f2efd6#dKr6qWHfAVZsSnOQ7fA4pPQ3Dquhz0Oj1b2OF8xw6vA= # la configuration de virtualenv wrapper export WORKON_HOME=/home/sam/.virtualenvs mkdir -p $WORKON_HOME source /usr/local/bin/virtualenvwrapper.sh # plus de détails ici : http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/ # j'ai récément succombé aux sirène du virtualenv automatique # j'avais beaucoup d'a priori (particulirement écraser la commande CD) # mais à l'usage, c'est pratique has_virtualenv() { if [ -e .venv ]; then workon `cat .venv` fi } venv_cd () { builtin cd "$@" && has_virtualenv } alias cd="venv_cd" has_virtualenv # en gros ça m'active un virtualenv si il y a un fichier .venv avec un nom # de virtualenv dedans dans le dossier courrant # je vous en parlais récement (http://sametmax.com/configurer-votre-terminal-pour-quil-vous-notifie-de-la-fin-dune-commande-longue/) # c'est pour avoir une notifi à la fin des commandes longues notify_when_long_running_commands_finish_install # ca c'est un truc de feignasse car je me souviens jamais comment extraire # en ligne de commande tel ou tel format extract () { if [ -f $1 ] then case $1 in (*.7z) 7z x $1 ;; (*.lzma) unlzma $1 ;; (*.rar) unrar x $1 ;; (*.tar) tar xvf $1 ;; (*.tar.bz2) tar xvjf $1 ;; (*.bz2) bunzip2 $1 ;; (*.tar.gz) tar xvzf $1 ;; (*.gz) gunzip $1 ;; (*.tar.xz) tar Jxvf $1 ;; (*.xz) xz -d $1 ;; (*.tbz2) tar xvjf $1 ;; (*.tgz) tar xvzf $1 ;; (*.zip) unzip $1 ;; (*.Z) uncompress ;; (*) echo "don't know how to extract '$1'..." ;; esac else echo "Error: '$1' is not a valid file!" exit 0 fi } # ça date de http://sametmax.com/decompresser-sous-linux-en-ligne-de-commande/ # et quelques alias pour des tâches de tous les jours alias ..='cd ..' alias ...='cd ../../' alias ....='cd ../../../' alias .....='cd ../../../../' alias ......='cd ../../../../../' alias process='ps aux | grep' alias serve="python -c 'import SimpleHTTPServer; SimpleHTTPServer.test()'"