Outils pour utilisateurs

Outils du site


linux:aliases

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:aliases [22/07/2010 12:44] – add joe alias daniellinux:aliases [04/05/2012 18:50] (Version actuelle) daniel
Ligne 1: Ligne 1:
 ====== Aliases, couleur de prompt & co ====== ====== Aliases, couleur de prompt & co ======
  
 +Pour les users ayant bash comme shell (attention, avec squeeze le shell par défaut est dash, qui devrait réagir à peu près pareil, pas vérifié), le processus au login est le suivant
 +  * /etc/profile (prompt $ ou #, ), qui source
 +  * /etc/bash.bashrc (active notamment /etc/bash_completion)
 +  * /etc/profile.d/*
 +  * ~/.profile qui source
 +  * ~/.bashrc (qui lui est aussi lu par les "non-login shell")
  
 +Mais attention, c'est **au login seulement** et pas au lancement de bash (qui lit alors seulement /etc/bash.bashrc et ~/.bashrc), donc si on veut que les commandes soient lancées à l'ouverture d'un nouveau terminal dans une session graphique, il faut le mettre dans un de ces deux fichiers, éventuellement avec un test ''if [ -n "$PS1" ] ...'' avant pour limiter les commandes à un shell interactif.
  
 +Attention aussi à ne pas faire de ''echo "Bonjour"'' dans un .bashrc pour les shell non interactifs qui n'apprécient guère (rsync marche plus par exemple), ce genre de chose irait plutôt dans un .profile pour l'afficher au login ssh, ou dans .bashrc avec un test sur le shell interactif.
  
 +Cf http://www.fam.tuwien.ac.at/~schamane/_/blog:110814_bash_shell_startup_files_in_debian_squeeze
  
 +===== ~/.profile =====
 +<code bash>
 +umask 022
  
 +# les variables d´environnement
 +export HISTSIZE=2500
 +export PATH="$PATH:/home/bin"
 +# dans une VM de base faut ajouter
 +export HISTFILE=~/.bash_history
 +# et on prend tous les params par défaut (surtout LC_ALL)
 +while read var
 +do
 +  export $var
 +done < /etc/environment
  
 +# Pour le reste, on charge alias et prompt et complétion
 +if [ -f ~/.bash_prompt ]; then
 +  . ~/.bash_prompt
 +fi
  
 +if [ -f ~/.bash_aliases ]; then
 +  . ~/.bash_aliases    
 +fi 
 +if [ -f /etc/bash_completion ]; then
 +  . /etc/bash_completion
 +fi
 +</code>
 +Cf http://doc.ubuntu-fr.org/variables_d_environnement pour la liste des variables dispo
  
  
Ligne 16: Ligne 50:
  
  
- +===== .bash_aliases =====
- +
- +
- +
- +
- +
-===== Mes alias ===== +
-.bash_aliases+
 <code bash> <code bash>
 # on est jamais trop prudent, autant demander confirmation par défaut (taper /bin/cp pour revenir au comportement "normal") # on est jamais trop prudent, autant demander confirmation par défaut (taper /bin/cp pour revenir au comportement "normal")
Ligne 29: Ligne 56:
 alias cp='cp -i' alias cp='cp -i'
 alias mv='mv -i' alias mv='mv -i'
 + 
 # alias perso # alias perso
 # dates # dates
-timestamp2date() { [ $# -lt 1 ] && echo "prend un timestamp comme argument" || date -d "1970-01-01 UTC +$1 seconds" "+%d/%m/%%H:%M:%S";+ts2date() { [ $# -lt 1 ] && echo "prend un timestamp comme argument" || date -d "1970-01-01 UTC +$1 seconds" "+%Y-%m-%%H:%M:%S";
-date2timestamp() { [ $# -lt 1 ] && echo "entrez une date comme argument (sous la forme 'YYYY-MM-DD' ou 'YYYY-MM-DD hh:mm' ou 'YYYY-MM-DD hh:mm:ss', etc.)" || date -d "$*" "+%s";+date2ts() { [ $# -lt 1 ] && echo "entrez une date comme argument (sous la forme 'YYYY-MM-DD' ou 'YYYY-MM-DD hh:mm' ou 'YYYY-MM-DD hh:mm:ss', etc.)" || date -d "$*" "+%s";
 + 
 # gestion des paquets # gestion des paquets
 alias apse='aptitude search' alias apse='aptitude search'
Ligne 44: Ligne 71:
 alias apud='aptitude update' alias apud='aptitude update'
 alias apug='aptitude safe-upgrade' alias apug='aptitude safe-upgrade'
 +alias apwh='aptitude why'
 +alias apwn='aptitude why not'
 alias apfs='apt-file search'  alias apfs='apt-file search' 
 alias apfu='apt-file updtate'  alias apfu='apt-file updtate' 
 alias apcp='apt-cache policy'  alias apcp='apt-cache policy' 
 alias pkgr='dpkg -l|grep'; # liste des paquets dont le nom contient $1 alias pkgr='dpkg -l|grep'; # liste des paquets dont le nom contient $1
-alias pkl='dpkg -l'; # pour voir l'état local du paquet $1+alias pkl='dpkg -l'; # pour voir l´état local du paquet $1
 alias pkL='dpkg -L'; # la liste des fichiers du paquet $1 alias pkL='dpkg -L'; # la liste des fichiers du paquet $1
 +# pour utiliser les backport
 +alias aplbin='aptitude install -t squeeze-backports'
 +alias aplbsh='aptitude show -t squeeze-backports'
 +alias aplbfs='apt-file search -t squeeze-backports'
 +alias aplbfu='apt-file updtate -t squeeze-backports'
 +alias aplbcp='apt-cache policy -t squeeze-backports'
  
 # fichiers # fichiers
 + 
 # un peu de couleurs pour ls # un peu de couleurs pour ls
 export LS_OPTIONS='--color=auto' export LS_OPTIONS='--color=auto'
-eval "$(dircolors)" 
 alias ls='ls $LS_OPTIONS' alias ls='ls $LS_OPTIONS'
 alias ll='ls $LS_OPTIONS -l' alias ll='ls $LS_OPTIONS -l'
 alias l='ls $LS_OPTIONS -lAh' alias l='ls $LS_OPTIONS -lAh'
 alias la='ls $LS_OPTIONS -la' alias la='ls $LS_OPTIONS -la'
 +# et pour les couleurs de fichiers suivant droits / extensions, on exporte LS_COLORS
 +eval "$(dircolors)"
 ltr() { ls -altr $*|tail; } ltr() { ls -altr $*|tail; }
 +# un cd qui accepte les fichiers 
 +cdf() { [ -f "$1" ] && r="$(dirname "$1")" || r="$1"; cd "$r" ; } 
 + 
 alias chweb='chown -R www-data:www-data' alias chweb='chown -R www-data:www-data'
 alias chdan='chown -R daniel:daniel' # évidemment à adapter avec vos users fréquemment utilisés alias chdan='chown -R daniel:daniel' # évidemment à adapter avec vos users fréquemment utilisés
 alias chmodstd='chmod -R a-r-w-x-s-t,a+r+X,u+w' # 644 pour les fichiers et 755 pour les dossiers alias chmodstd='chmod -R a-r-w-x-s-t,a+r+X,u+w' # 644 pour les fichiers et 755 pour les dossiers
 + 
 # et pour grep # et pour grep
 alias grep='grep --color=auto' alias grep='grep --color=auto'
 + 
 +# et les locales utf8 que awk n'aime pas trop   
 +alias awk='env LANGUAGE=C LANG=C LC_ALL=C LC_NUMERIC=C awk'
 + 
 +# taille d´un rep (sans les éventuels autres filesystems montés dedans)
 +alias du1='du -schx'
 +alias du1m='du -scxm'
 +alias du1a='echo -e "Mo\tchemin"; du -camx --max-depth=1'     # la liste du contenu d'un dossier, en Mo
 +du1A() { echo -e "Mo\tchemin"; du -camx --max-depth=1 $1 | sort -n -k 1; } # idem, triés
 +du1Ag() { du -camx --max-depth=1 $1 | sed -e "/^.[^0-9]/d; 1 i Mo\tchemin (< 10Mo non affichés)" | sort -n -k 1; } # idem > 9Mo
  
-alias du1='du -schx'; # taille d'un rep (sans les éventuels autres filesystems montés dedans) 
 alias tf='tail -f' alias tf='tail -f'
 alias t50='tail -n50' alias t50='tail -n50'
 alias h50='head -n50' alias h50='head -n50'
-alias catsc="sed -e '/^[ \t]*[#;]/d;/^[ \t]*\/\//d;/^[ \t]*$/d;' " # liste un fichier sans les commentaires ni les lignes vides +# liste un fichier sans les commentaires ni les lignes vides 
-cattr() { [ $# != 3 ] && echo "3 arguments requis (n° 1re ligne, n° dernière ligne, fichier)" || sed -ne "$1,$2 p;" $3; } # affiche une tranche de fichier +alias catsc="sed -e '/^[ \t]*[#;]/d;/^[ \t]*\/\//d;/^[ \t]*$/d;' " 
-luf() { tl=/tmp/luf.list; locate "$1" > $tl; while read f; do ls -l "$f"; done<$tl |awk '{sp=" ";if (NF>8) {for(i=8;i<=NF;i++) {f=(f " " $i)}} else {f=$8}; print $6 sp $7 sp $5 sp f}' |sort -k 1,3 -u; rm -f $tl; } # pour lister tous les exemplaires uniques (on se fie à date et taille) d'un fichier +affiche une tranche de fichier 
 +cattr() { [ $# != 3 ] && echo "3 arguments requis (n° 1re ligne, n° dernière ligne, fichier)" || sed -ne "$1,$2 p;" $3; } 
 +pour lister tous les exemplaires uniques (on se fie à date et taille) d´un fichier 
 +luf() {  
 +  tl=/tmp/luf.list; 
 +  locate "$1" > $tl; 
 +  while read f;  
 +  do 
 +    ls -l "$f"; 
 +  done<$tl |awk '{ 
 +    sp=" "; 
 +    if (NF>8) { 
 +      for(i=8;i<=NF;i++) {f=(f " " $i)} 
 +    } else {f=$8}; 
 +    print $6 sp $7 sp $5 sp f 
 +  }' |sort -k 1,3 -u; 
 +  rm -f $tl; 
 +
 + 
 # pour nettoyer les noms de fichiers # pour nettoyer les noms de fichiers
 cleanfichname() { if [ $# -lt 1 ] cleanfichname() { if [ $# -lt 1 ]
Ligne 83: Ligne 147:
   else   else
     rename 'y/A-Z/a-z/' $* # tout en minuscules     rename 'y/A-Z/a-z/' $* # tout en minuscules
-    rename 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/aaaaceeeeiiiinoooouuuu_aaaaceeeeiiiinoooouuuu/' $* # sans accents ni espace +    # sans accents ni espace 
-    rename 's/[^a-z0-9_\-\.]/_/g' $* # et on remplace tout ce qui n'est pas lettre, chiffre, underscore, tiret, point par underscore    +    rename 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/aaaaceeeeiiiinoooouuuu_aaaaceeeeiiiinoooouuuu/' $* 
-    rename 's/__/_/g' $* # on vire les doubles underscores +    et on remplace tout ce qui n´est pas lettre, chiffre, underscore, tiret, point par underscore 
-    rename 's/_\./\./g' $* # et ceux avant un point+    rename 's/[^a-z0-9_\-\.]/_/g' $* 
 +    # on vire les doubles underscores 
 +    rename 's/__/_/g' $*  
 +    et ceux avant un point 
 +    rename 's/_\./\./g' $*
   fi   fi
 } }
 + 
 # les logs # les logs
 alias tme='tail -n30 /var/log/messages' alias tme='tail -n30 /var/log/messages'
 alias tsl='tail -n30 /var/log/syslog' alias tsl='tail -n30 /var/log/syslog'
 + 
 slgr() { [ $# -lt 1 ] && echo "prend un pattern en argument (pour grep sur syslog)" || grep $1 /var/log/syslog;} slgr() { [ $# -lt 1 ] && echo "prend un pattern en argument (pour grep sur syslog)" || grep $1 /var/log/syslog;}
-alias lvl='ls -ltr /var/log/ |tail';les derniers logs systeme modifiés +# les derniers logs systeme modifiés 
-tvl() { [ $# -lt 1 ] && echo "Il faut indiquer un fichier de /var/log/" || tail /var/log/$1;# la fin d'un log systeme +alias lvl='ls -ltr /var/log/ |tail';  
-alias lwl='ls -ltr /var/log/apache2/ |tail'; # les derniers logs apache modifiés +la fin d´un log systeme 
-twl() { [ $# -lt 1 ] && echo "Il faut indiquer un log apache" || tail /var/log/apache2/$1; } # la fin d'un log apache +tvl() { [ $# -lt 1 ] && echo "Il faut indiquer un fichier de /var/log/" || tail /var/log/$1;
-alias tpe='for f in /var/www/traces/*/php_error.log; do echo $f; tail -3 $f; echo; done;' # 3 dernières lignes de chaque fichier d'erreur php (NON STANDARD, dépend de la conf php)+
  
 +# les derniers logs web
 +alias lwa='ls -ltr /var/log/apache2/ |tail';
 +alias lwn='ls -ltr /var/log/nginx/ |tail';
 +alias lwp='ls -ltr /var/log/php5/ |tail';   
 +# la fin d´un log       
 +twa() { [ $# -lt 1 ] && echo "Il faut indiquer un log apache" || tail /var/log/apache2/$1; }
 +twn() { [ $# -lt 1 ] && echo "Il faut indiquer un log nginx" || tail /var/log/php5/$1; }
 +twp() { [ $# -lt 1 ] && echo "Il faut indiquer un log php" || tail /var/log/php5/$1; }
 + 
 alias hi='history | tail -n30' # les 30 dernières commandes alias hi='history | tail -n30' # les 30 dernières commandes
 alias higr='history | grep' alias higr='history | grep'
 + 
 alias psf='ps auxwf' alias psf='ps auxwf'
 alias psgr='ps auxw | grep' alias psgr='ps auxw | grep'
 + 
 # reseau # reseau
 alias nst='netstat -tanpu' alias nst='netstat -tanpu'
 alias nstgr='netstat -tanpu|grep' alias nstgr='netstat -tanpu|grep'
 + 
 # sous lenny, pas moyen de désactiver autoindent et wordwrap dans /etc/joe/joerc # sous lenny, pas moyen de désactiver autoindent et wordwrap dans /etc/joe/joerc
 # apparemment un bug... # apparemment un bug...
-alias joe='joe --autoindent --wordwrap" +alias joe='joe --autoindent --wordwrap' 
- +  
-# mysql avec user debian (seul root peut s'en servir car il faut les accès à /etc/mysql/debian.cnf)+# mysql avec user debian (seul root peut s´en servir car il faut les accès à /etc/mysql/debian.cnf)
 alias sql='mysql --defaults-file=/etc/mysql/debian.cnf' alias sql='mysql --defaults-file=/etc/mysql/debian.cnf'
 alias sqldump='mysqldump --defaults-file=/etc/mysql/debian.cnf' alias sqldump='mysqldump --defaults-file=/etc/mysql/debian.cnf'
 alias sqlcheck='mysqlcheck --defaults-file=/etc/mysql/debian.cnf' alias sqlcheck='mysqlcheck --defaults-file=/etc/mysql/debian.cnf'
 alias sqladmin='mysqladmin --defaults-file=/etc/mysql/debian.cnf' alias sqladmin='mysqladmin --defaults-file=/etc/mysql/debian.cnf'
 + 
 # Pour mettre à jour les vm openvz (ici tmp en noexec sur le host) # Pour mettre à jour les vm openvz (ici tmp en noexec sur le host)
 apudall() { echo "Sur le host $(hostname) :" apudall() { echo "Sur le host $(hostname) :"
Ligne 129: Ligne 205:
     vzctl exec $id  "aptitude update"     vzctl exec $id  "aptitude update"
     echo "Il faut lancer 'aptitude safe-upgrade' manuellement dans chaque vm (apug)"     echo "Il faut lancer 'aptitude safe-upgrade' manuellement dans chaque vm (apug)"
-    echo "Pour éviter les 'dpkg-preconfigure: unable to re-open stdin' que l'on obtient si on lance la commande directement depuis le host avec vzctl"+    echo "Pour éviter les 'dpkg-preconfigure: unable to re-open stdin'
 +    echo "que l'on obtient si on lance la commande directement depuis le host avec vzctl"
     vzctl enter $id     vzctl enter $id
   done   done
Ligne 135: Ligne 212:
 } }
  
 +# pour svn
 +svnc() { 
 +  if [ $# -lt 2 ] || [ -f "$1" ] || [ -d "$1" ]
 +  then
 +    echo "Le 1er argument doit être le commentaire"
 +  else
 +    com="$1"
 +    shift
 +    svn commit -m "$com" $@
 +  fi
 +}
 +alias svnu='svn update'
 +alias svns='svn status'
 +alias svnd='svn diff'
 +alias svnl='svn log'
 +alias svnlv='svn log -v'
 + 
 # un truc perso car 2 db locales # un truc perso car 2 db locales
 alias locatefull='locate -d /var/lib/mlocate/mlocate-full.db' alias locatefull='locate -d /var/lib/mlocate/mlocate-full.db'
 # en ayant modifié la fin de /etc/cron.daily/mlocate comme suit (pour avoir les deux bases) # en ayant modifié la fin de /etc/cron.daily/mlocate comme suit (pour avoir les deux bases)
 # $IONICE /usr/bin/updatedb.mlocate --add-prunepaths /backup # $IONICE /usr/bin/updatedb.mlocate --add-prunepaths /backup
-# $IONICE /usr/bin/updatedb.mlocate --output /var/lib/mlocate/mlocate-full.db+# $IONICE -c3 /usr/bin/updatedb.mlocate --output /var/lib/mlocate/mlocate-full.db 
 + 
 +# en desktop 
 +alias gop='gnome-open' 
 +alias xop='xdg-open'
 </code> </code>
  
- +===== .bash_prompt =====
- +
- +
-===== Couleurs ===== +
 Pour plus d'info, voir notamment http://jipe.homelinux.org/trucs_bash/prompt.html et son code pour tester les couleurs ftp://jipe.homelinux.org/Download/scripts/colors2 ou bien Pour plus d'info, voir notamment http://jipe.homelinux.org/trucs_bash/prompt.html et son code pour tester les couleurs ftp://jipe.homelinux.org/Download/scripts/colors2 ou bien
 <code>for f in $(echo {30..39}); do for b in $(echo {40..49}); do echo -n -e "\e[0;$f;${b}m$f-$b\e[0m ";done;echo;done;</code> <code>for f in $(echo {30..39}); do for b in $(echo {40..49}); do echo -n -e "\e[0;$f;${b}m$f-$b\e[0m ";done;echo;done;</code>
  
-J'ai laissé dans mon .bashrc +dans un fichier .bash_prompt (appelé par .bashrc)
-<code bash> +
-# enable color support of ls and also add handy aliases +
-if [ "$TERM" != "dumb" ]; then +
-    if [ -f ~/.bash_prompt ]; then +
-        . ~/.bash_prompt +
-    fi +
-fi +
-</code> +
-et mis dans un fichier .bash_prompt+
 <code bash> <code bash>
 # un prompt en couleur sur chaque machine, pour pas se gourer de serveur # un prompt en couleur sur chaque machine, pour pas se gourer de serveur
Ligne 206: Ligne 291:
 # for f in {40..47}; do for j in 0 1; do echo; for i in {30..37}; do echo -ne "\e[$j;$i;${f}m${j}-${i} test "; done;done;done; # for f in {40..47}; do for j in 0 1; do echo; for i in {30..37}; do echo -ne "\e[$j;$i;${f}m${j}-${i} test "; done;done;done;
 # sur fond noir (40), on peut utiliser rouge (1;31), vert (1;32), jaune (1;33), bleu (1;34) violet (1;35), cyan (1;36) et blanc (1;37) # sur fond noir (40), on peut utiliser rouge (1;31), vert (1;32), jaune (1;33), bleu (1;34) violet (1;35), cyan (1;36) et blanc (1;37)
-# sur fond rouge (41), c'est pas terrible mais peuvent passer vert (1;32), jaune (1;33), blanc (1;37)+# sur fond rouge (41), c´est pas terrible mais peuvent passer vert (1;32), jaune (1;33), blanc (1;37)
 # fond vert (42), noir (0;30), vert (1;32), jaune (1;33), blanc (1;37) # fond vert (42), noir (0;30), vert (1;32), jaune (1;33), blanc (1;37)
 # fond moutarde (43), noir (0;30), rouge (0;31), blanc (1;37) # fond moutarde (43), noir (0;30), rouge (0;31), blanc (1;37)
Ligne 248: Ligne 333:
  
 ===== Personnalisations diverses ===== ===== Personnalisations diverses =====
 +
  
 ==== joe ==== ==== joe ====
 Pour ma part, j'ajoute ''%%-nobackups%%'' et  ''%%--autoindent%%'' (à la fin de la section 2) à /etc/joe/joerc (ou ~/.joerc, au choix). Il est possible d'annuler ce -nobackups pour certains fichiers (regex) et de préciser un path particulier pour les backups (rep courant avec suffixe ~ par défaut). Pour ma part, j'ajoute ''%%-nobackups%%'' et  ''%%--autoindent%%'' (à la fin de la section 2) à /etc/joe/joerc (ou ~/.joerc, au choix). Il est possible d'annuler ce -nobackups pour certains fichiers (regex) et de préciser un path particulier pour les backups (rep courant avec suffixe ~ par défaut).
  
-Par exemple, à la fin de la section 2, +Par exemple, à la fin de la section 2, (mais les --autoindent et --wordwrap marchent pas sur ma lenny, d'où l'alias ci dessus) 
 <file> <file>
  Default local options  Default local options
linux/aliases.1279795459.txt.gz · Dernière modification : 22/07/2010 12:44 de daniel