############################################################################################################################################################ # AUTO-COMPLETION ############################################################################################################################################################ # Active la completion automatique if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi # tab completion pour les hosts ssh if [ -f ~/.ssh/known_hosts ]; then SSH_COMPLETE=( $(cat ~/.ssh/known_hosts | \ cut -f 1 -d ' ' | \ sed -e s/,.*//g | \ uniq | \ egrep -v [0123456789]) ) complete -o default -W "${SSH_COMPLETE[*]}" ssh fi # Completion avec sudo complete -cf sudo ############################################################################################################################################################ # SHOPTS ############################################################################################################################################################ shopt -s cdspell # Pour que bash corrige automatiquement les fautes de frappes ex: cd ~/fiml sera remplacé par cd ~/film shopt -s checkwinsize # Pour que bash vérifie la taille de la fenêtre après chaque commande shopt -s cmdhist # Pour que bash sauve dans l'historique les commandes qui prennent plusieurs lignes sur une seule ligne. shopt -s dotglob # Pour que bash montre les fichiers qui commencent par un . shopt -s expand_aliases # # Pour que bash montre la commande complete au lieu de l'alias shopt -s extglob # Pour que bash, interprète les expressions génériques shopt -s histappend # Pour que bash ajoute au lieu d'écraser dans l'histo shopt -s hostcomplete # Pour que bash tente de résoudre le nom pour les ip suivis d'un @ shopt -s nocaseglob # Pour que bash ne soit pas sensible a la casse shopt -s cdable_vars # utilisé pour la fonction bookmarks pour que bash n'ai pas besoin de $ pour sourcer le fichier .dirs ############################################################################################################################################################ # ALIAS ############################################################################################################################################################ alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' # ls par default (dossier en 1er + mise en forme de l'heure) alias lsfp='ls | sed s#^#$(pwd)/#' # ls avec full PATH alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' # ls détaille alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F' # ls aussi les fichiers cachés .* alias lsofnames="lsof | awk '!/^\$/ && /\// { print \$9 }' | sort -u" # noms des fichiers ouverts alias grep='grep --color=tty -d skip' alias cp="cp -i" # Confirmer avant d'écraser un fichier existant alias df='df -h' # Tailles lisibles par l'homme alias free='free -m' # voir la taille en MB alias vp='vim PKGBUILD' # spécifique Arch alias vs='vim SPLITBUILD' # spécifique Arch alias ports="lsof -i -n -P" # Voir les process qui utilisent une connection internet alias estab="ss -p | grep STA" # Voir seulement les sockets établis alias netstat80="netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1" # nombre de connections sur le port 80 du serveur par IP alias openports="netstat -nape --inet" # Voir les ports ouverts alias netpid="netstat -tlnp" # Voir le port qui écoute avec le PID du process associé alias appson="netstat -lantp | grep -i stab | awk -F/ '{print $2}' | sort | uniq" # Voir une liste des noms de process qui utilisent une connection alias rscp='rsync -aP --no-whole-file --inplace' # rsync cp // a(garder permissions) P(progress bar) alias rsmv='rscp --remove-source-files' # rsync mv avec progressbar alias calc='python -ic "from math import *; from random import *"' # Une calculatrice en python alias servethis="python -m SimpleHTTPServer 8000" # Serveur python sur le port 8000 if type -P htop >/dev/null; then alias top='htop' # toujours utiliser htop si installé fi alias reload_bash="source ~/.bashrc" # recharger le ~/.bashrc alias ncmpc='ncmpc -c' # Ncurse mpc en couleur alias psp='ps u -C' # ps sur un seul process bind '"\C-l"':"\"clear\r\"" # Ctrl+l vide le terminal ############################################################################################################################################################ # COULEURS ############################################################################################################################################################ txtblk='\e[0;30m' # Noir txtred='\e[0;31m' # Rouge txtgrn='\e[0;32m' # Vert txtylw='\e[0;33m' # Jaune txtblu='\e[0;34m' # Bleu txtpur='\e[0;35m' # Violet txtcyn='\e[0;36m' # Cyan txtwht='\e[0;37m' # Blanc bldblk='\e[1;30m' # Noir - Bold bldred='\e[1;31m' # Rouge bldgrn='\e[1;32m' # Vert bldylw='\e[1;33m' # Jaune bldblu='\e[1;34m' # Bleu bldpur='\e[1;35m' # Violet bldcyn='\e[1;36m' # Cyan bldwht='\e[1;37m' # Blanc unkblk='\e[4;30m' # Noir - Underline undred='\e[4;31m' # Rouge undgrn='\e[4;32m' # Vert undylw='\e[4;33m' # Jaune undblu='\e[4;34m' # Bleu undpur='\e[4;35m' # Violet undcyn='\e[4;36m' # Cyan undwht='\e[4;37m' # Blanc bakblk='\e[40m' # Noir - Background bakred='\e[41m' # Rouge badgrn='\e[42m' # Vert bakylw='\e[43m' # Jaune bakblu='\e[44m' # Bleu bakpur='\e[45m' # Violet bakcyn='\e[46m' # Cyan bakwht='\e[47m' # Blanc txtrst='\e[0m' # Text Reset txtbluj="\[\e[01;34m\]" # Bleu prompt txtarobasc="\[\e[05;33m\]" # Orange clignote prompt txtarobas="\[\e[02;33m\]" # Orange prompt txtvertj="\[\e[01;32m\]" # Vert fluo prompt txtjaunj="\[\e[01;33m\]" # Jaune prompt txtbleucj="\[\033[1;36m\]" # Bleu clair prompt txtheure="\[\e[02;36m\]" # turquoise, heure prompt txtgrisj="\[\e[30;1m\]" # gris prompt ############################################################################################################################################################ # ALIAS POUR LES BOOKMARKS EN BASH ############################################################################################################################################################ # show pour voir la liste des bookmarks existants // save foo sauvergarde le dossier courant dans le bookmark foo // cd foo pour y revenir ############################################################################################################################################################ if [ ! -f ~/.dirs ]; then # si ~/.dirs n'existe pas, le créer touch ~/.dirs fi alias show='cat -n ~/.dirs | sed "s/^\([^.]*\)\=\(.*\)/-\1 --> \2/g"' save (){ command sed "/!$/d" ~/.dirs > ~/.dirs1; \mv ~/.dirs1 ~/.dirs; echo "$@"=\"`pwd`\" >> ~/.dirs; source ~/.dirs ;} source ~/.dirs # Initialisation de la fonction 'save': source le fichier .sdirs ############################################################################################################################################################ # VARIABLES ############################################################################################################################################################ # Historique export HISTSIZE=10000 # taille de l'historique export HISTFILESIZE=${HISTSIZE} export HISTIGNORE="ls:cd:[bf]g:exit" # ignorer les lignes w/ ls, cd, ... export HISTCONTROL="ignoreboth" # ignorer les doublons et les commandes qui commencent par un espace # Specifique a vim export EDITOR=vim export VISUAL=vim if type -P vim >/dev/null; then alias vi=vim # toujours utiliser vim au lieu de vi si installe fi # Taper 2 fois Ctrl+D pour quitter le shell export IGNOREEOF=1 # Font ancienne apps export QT_XFT=true export GDK_USE_XFT=1 # meilleur que less ou more pour man export PAGER=most # Python doc export PYTHONDOCS=/usr/share/doc/python/html/ # $PATH (cope en 1er pour couleur de certaines commandes) # http://github.com/cytzol/cope # MODIFIER LE CHEMIN DE COPE export PATH=/usr/share/perl5/vendor_perl/auto/share/dist/Cope:$PATH:/usr/local/bin/ export PATH="/opt/android-sdk/tools/:$PATH" # sdk-android export PATH="/tmp/yaourt-tmp-jlaunay/aur-komodoedit-beta/pkg/opt/komodoedit-beta/bin:$PATH" # komodoedit # Prompt perso, modification de la variable $PS1 # USER@MACHINE:DOSSIER (nb fichiers Taille Mb) [HH:mm:ss] #N°Commande # (nb jobs)-(screen num) :-) function truncate_pwd # Fonction pour remplacer PWD par {...} si > 1/3 de l'écran { newPWD="${PWD/#$HOME/~}" local pwdmaxlen=$((${COLUMNS:-20}/3)) if [ ${#newPWD} -gt $pwdmaxlen ] then newPWD=" {...} ${newPWD: -$pwdmaxlen}" fi } PROMPT_COMMAND=truncate_pwd # Executé avant chaque commande ROOT_UID=0 # Root a l'identifiant $UID 0. # Vérifier si on est dans un screen if [ -n "${STY#*.}" ]; then export PS1="\n${txtbluj}\u${txtrst}${txtarobasc}@${txtrst}${txtvertj}\h${txtrst}:${txtjaunj}\w ${txtrst}(${txtbleucj}$(ls -1 | wc -l | sed 's: ::g') fichiers ${txtjaunj}$(ls -lah | grep -m 1 total | sed 's/total //')b${txtrst}) ${txtrst}${txtbleucj}[\t]${txtgrisj} #\#\n${txtgrisj}(jobs:${txtbluj}\j${txtgrisj}) - (screen:${txtbluj}$WINDOW${txtgrisj})\`if [ \$? -eq 0 ]; then echo '${txtvertj} :-)'; else echo '${bldred} :-(' ; fi\`${txtrst}\n$" else if [ "$UID" -eq "$ROOT_UID" ] # Si root le @ clignote, then export PS1="\n${txtbluj}\u${txtrst}${txtarobasc}@${txtrst}${txtvertj}\h${txtrst}:${txtjaunj}\w ${txtrst}(${txtbleucj}$(ls -1 | wc -l | sed 's: ::g') fichiers ${txtjaunj}$(ls -lah | grep -m 1 total | sed 's/total //')b${txtrst}) ${txtrst}${txtbleucj}[\t]${txtgrisj} #\#\n${txtgrisj}(jobs:${txtbluj}\j${txtgrisj})\`if [ \$? = "0" ]; then echo '${txtvertj} :-)'; else echo '${bldred} :-(' ; fi\`${txtrst}\n$" else export PS1="\n${txtbluj}\u${txtrst}${txtarobas}@${txtrst}${txtvertj}\h${txtrst}:${txtjaunj}\w ${txtrst}(${txtbleucj}$(ls -1 | wc -l | sed 's: ::g') fichiers ${txtjaunj}$(ls -lah | grep -m 1 total | sed 's/total //')b${txtrst}) ${txtrst}${txtbleucj}[\t]${txtgrisj} #\#\n${txtgrisj}(jobs:${txtbluj}\j${txtgrisj})\`if [ \$? = "0" ]; then echo '${txtvertj} :-)'; else echo '${bldred} :-(' ; fi\`${txtrst}\n$" fi fi export PS2="continue-> " # Pour les longues commandes remplace > # Affiche [95%] de batterie avec apm # PS1="\`apm|awk '\$5~/%/{print \$5}\$6~/%/{print \$6}'\` [\\u@\\h:\\w] \\$ " # Ajouter de la couleur a ces comamndes si grc installé # http://kassiopeia.juls.savba.sk/~garabik/software/grc.html if which grc &>/dev/null; then alias .cl='grc -es --colour=auto' alias configure='.cl ./configure' alias diff='.cl diff' alias make='.cl make' alias gcc='.cl gcc' alias g++='.cl g++' alias ld='.cl ld' alias netstat='.cl netstat' alias ping='.cl ping -c 10' alias traceroute='.cl traceroute' fi ############################################################################################################################################################ # FONCTIONS ############################################################################################################################################################ # myip - Obtenir IP publique # usage: myip myip(){ wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//';} # Créer une archive pour un repertoire donne. mktar() { tar cvf "${1%%/}.tar" "${1%%/}/"; } mktgz() { tar cvzf "${1%%/}.tar.gz" "${1%%/}/"; } mktbz() { tar cvjf "${1%%/}.tar.bz2" "${1%%/}/"; } # ex - Extraire une archive # usage: ex ex () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjvf $1 ;; *.tar.gz) tar xzvf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xjvf $1 ;; *.tgz) tar xzvf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *) echo -e "${bldred}'$1' ne peut pas etre decompresse avec ex()" ;; esac else echo -e "\n${bldred}'$1' n'est pas un fichier valide" fi } # clock - Affiche une horloge simple # usage: clock clock() { while true;do clear;echo -e "\e[30;1m===========\e[0m\e[01;33m";date +"%r";echo -e "\e[0m\e[30;1m===========\e[0m";sleep 1;done; } # definef - Definition francaise d'un mot a l'aide de google # usage: definef definef(){ local y="$@";curl -sA"Opera" "http://www.google.fr/search?q=define:${y// /+}"|grep -Po '(?<=
  • )[^<]+'|nl|perl -MHTML::Entities -pe 'decode_entities($_)' 2>/dev/null;} # define - Definition Anglaise d'un mot a l'aide de google # usage: definef define(){ local y="$@";curl -sA"Opera" "http://www.google.com/search?q=define:${y// /+}"|grep -Po '(?<=
  • )[^<]+'|nl|perl -MHTML::Entities -pe 'decode_entities($_)' 2>/dev/null;} # resetperm - restaurer les permissions des repertoires et fichiers avec leurs valeurs "normales" (644/755) # usage: resetperm resetperm() { chmod -R u=rwX,go=rX "$@" chown -R ${USER}:users "$@" } # XXX - mise en forme des permissions symbolic en octal (644) # usage : ls -l | XXX XXX() { sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g' -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g' ; } # Convertir l'encodage d'un fichier iso2utf8/utf82iso # usage : changeEncoding changeEncoding() { if [ -f "$1" ] ; then case "`file -bi "$1"`" in *iso-8859-1) iconv --from-code=ISO-8859-1 --to-code=UTF-8 "$1" > "$1".utf-8 && echo -e "\n${bldgrn}Nouveau fichier : "$1".utf-8" ;; *utf-8) iconv --from-code=UTF-8 --to-code=ISO-8859-1 "$1" > "$1".iso-8859-1 && echo -e "\n${bldgrn}Nouveau fichier : "$1".iso-8859-1" ;; *us-ascii) echo -e "\n${bldylw}Encodage US-ASCII pas besoin de convertir" ;; *) echo -e "\n${bldred}L'encodage de '$1' ne peut pas etre converti avec changeEncoding(`file -bi "$1"`)" ;; esac else echo -e "\n${bldred}'$1' n'est pas un fichier valide" fi } # Afficher une quote depuis danstonchat.com # usage: dtc dtc() { url=http://danstonchat.com/random.html?toto=`date +%N` lynx --dump --display_charset=utf8 $url 2>&1 \ | awk '$1~"#" && $0!~"RSS" { getline; while ($1!~"#") { print $0; getline;}; exit}' } # télecharger un site complet avec Wget # Les pages seront mise en html (E), les liens seront transformés (k) et c'est récursif (r) sur 5 niveaux maxi (l5) # Usage wdl # tip : utiliser servethis pour servir les pages télechargées wdl(){ wget -r -l5 -k -E ${1} && cd $_;} # Prendre une capture d'écran # Usage: screenshot [delai en sc] [qualite] screenshot() { if ! which scrot &>/dev/null; then echo "${FUNCNAME[0]}(): Vous devez d'abord installer 'scrot'." return 1 fi local delay=1 local quality=95 [ "$1" ] && delay="$1" [ "$2" ] && quality="$2" scrot -q $quality -d $delay "$HOME/screenshot_`date +'%F_%Hh%M'`.jpg" } # Transforme une image (depuis une URL) en ascci html # servethis pour voir sur le port 8000 ou mongoose http://code.google.com/p/mongoose/ # usage : toascii toascii() { convert $1 jpg:- | jp2a - --color --fill --background=light --html > $HOME/ascii_`date +'%F_%Hh%M'`.html;} # Construire une galerie html avec toutes les photo d'un dossier # usage : galerie galerie() { echo -e "\n\n\nGallerie photo du `date +'%F_%Hh%M'`\n\n\n\n\n\n
    \n

    Gallerie photo du \ `date +'%F_%Hh%M'`

    \n" > gallerie_`date +'%F'`.html; for i in *.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}; do echo -e "\t
    \n\t\t
    \n\t\t

    $i

    \n\t
    \n"; done >> gallerie_`date +'%F'`.html echo -e "
    \n\n" >> gallerie_`date +'%F'`.html echo -e "\n${bldgrn}La gallerie gallerie_`date +'%F'`.html contient les photos du dossier `pwd`." } # chext - modifier l'extension # usage : chext new_ext *.old_ext function chext(){ local fname local new_ext="$1" shift IFS=$'\n' for fname in $@ do mv "$fname" "${fname%.*}.$new_ext" done } # cbt - Count by Type - affiche le nombre de fichiers par type # usage : cbt cbt() { find ${*-.} -type f -print0 | xargs -0 file | awk -F, '{print $1}' | awk '{$1=NULL;print $0}' | sort | uniq -c | sort -nr ;} # Renomme en minuscules # usage tolowercase <*.txt> toLowercase() { for i in "$@"; do mv -f "$i" "`echo $i| tr [A-Z] [a-z]`" &>/dev/null; done } # Renomme en majuscules # usage toupercase <*.txt> toUpercase() { for i in "$@"; do mv -f "$i" "`echo $i| tr [a-z] [A-Z]`" &>/dev/null; done } # remplacer les espaces par des _ # usage underscorespace <*.txt> underscorespace() { for i in "$@"; do mv "$i" "`echo $i| tr ' ' '_'`" &>/dev/null; done } # tempsrep - temps de réponse pour un URL # usage : tempsrep (TTFB:time to first bit) tempsrep() { curl -o /dev/null -w "Connect: %{time_connect} TTFB: %{time_starttransfer} Total time: %{time_total} \n" $1; } # getserver - Determine le serveur utilisé par un site # usage : getserver getserver() { curl -I $1 2>&1 | grep Server;} # start, stop, restart, reload - Controler les services # usage: start nom_du_daemon start() { for arg in $*; do sudo /etc/init.d/$arg start; done } stop() { for arg in $*; do sudo /etc/init.d/$arg stop; done } restart() { for arg in $*; do sudo /etc/init.d/$arg restart; done } reload() { for arg in $*; do sudo /etc/init.d/$arg reload; done } # Affiche une liste des fonctions comme alias le fait pour les alias fonctions() { echo -e "\n${txtpur}FONCTIONS ----------------------------------------------------------------------${txtrst}" echo -e "${txtcyn}myip : ${txtrst}affiche l'adresse ip" echo -e "${txtcyn}mktar() :${txtrst} creer une archive tar du dossier" echo -e "${txtcyn}mktgz() :${txtrst} creer une archive tar.gz du dossier" echo -e "${txtcyn}mktbz() :${txtrst} creer une archive tar.bz2 du dossier" echo -e "${txtcyn}ex :${txtrst} extraire un fichier" echo -e "${txtcyn}clock :${txtrst} Affiche une horloge simple" echo -e "${txtcyn}definef :${txtrst} Definition francaise d'un mot a l'aide de google" echo -e "${txtcyn}define :${txtrst} Definition anglaise d'un mot a l'aide de google" echo -e "${txtcyn}resetperm :${txtrst} restaurer les permissions des repertoires et fichiers avec leurs valeurs normales (644/755)" echo -e "${txtcyn}ls -l | XXX :${txtrst} XXX - mise en forme des permissions symbolic en octal (644)" echo -e "${txtcyn}changeEncoding :${txtrst} Convertir l'encodage d'un fichier iso2utf8/utf82iso" echo -e "${txtcyn}dtc :${txtrst} affiche une quote depuis danstonchat.com" echo -e "${txtcyn}wdl :${txtrst} telecharger un site complet avec Wget" echo -e "${txtcyn}toascii :${txtrst} Transforme une image (depuis une URL) en ascci html" echo -e "${txtcyn}screenshot [delai en sc] [qualite] :${txtrst} prendre une capture d'ecran" echo -e "${txtcyn}toascii :${txtrst} tranforme une image en ascii html" echo -e "${txtcyn}gallerie :${txtrst} Construire une gallerie html avec toutes les photo d'un dossier" echo -e "${txtcyn}chext new_ext *.old_ext :${txtrst} modifier l'extension" echo -e "${txtcyn}cbt (Count by Type) :${txtrst} affiche le nombre de fichiers par type" echo -e "${txtcyn}toLowercase <*.txt> :${txtrst} renommer en minuscules" echo -e "${txtcyn}toUpercase <*.txt> :${txtrst} renommer en majuscules" echo -e "${txtcyn}underscorespace <*.txt>:${txtrst} remplacer les espaces par des _" echo -e "${txtcyn}tempsrep :${txtrst} temps de reponse pour un URL" echo -e "${txtcyn}getserver :${txtrst} Determine le serveur utilise par un site" echo -e "${txtcyn}start() stop() restart() reload() :${txtrst} Controler les services" } function bashtips { echo -e " ${txtpur}REPERTOIRES ----------------------------------------------------------------------${txtrst} ${txtcyn}~- ${txtrst}repertoire precedent ${txtcyn}pushd tmp ${txtrst}Push tmp && cd tmp ${txtcyn}popd ${txtrst}Pop && cd ${txtcyn}save foo ${txtrst}bookmark le dossier courant dans foo ${txtcyn}show ${txtrst}voir une liste des bookmarks ${txtpur}HISTORIQUE ----------------------------------------------------------------------${txtrst} ${txtcyn}!! ${txtrst}Derniere commande ${txtcyn}!!:p ${txtrst}Apercu sans execution de la derniere commande ${txtcyn}!?foo ${txtrst}Derniere commande contenant \`foo' ${txtcyn}^foo^bar^ ${txtrst}Derniere commande contenant \`foo', mais substitue avec \`bar' ${txtcyn}!!:0 ${txtrst}Derniere commande mot ${txtcyn}!!:^ ${txtrst}1er argument de la derniere commande ${txtcyn}!\$ ${txtrst}Dernier argument de la derniere commande ${txtcyn}!!:* ${txtrst}Tout les arguments de la derniere commande ${txtcyn}!!:x-y ${txtrst}Arguments x a y de la derniere commande ${txtcyn}[Ctrl]-s ${txtrst}Rechercher en avant dans l'historique ${txtcyn}[Ctrl]-r ${txtrst}Rechercher en arriere dans l'historique ${txtpur}EDITION DE LIGNE ----------------------------------------------------------------------${txtrst} ${txtcyn}[Ctrl]-a ${txtrst}aller au debut de la ligne ${txtcyn}[Ctrl]-e ${txtrst}aller a la fin de la ligne ${txtcyn}[ Alt]-d ${txtrst}efface jusqu'a la fin d'un mot ${txtcyn}[Ctrl]-w ${txtrst}efface jusqu'au debut d'un mot ${txtcyn}[Ctrl]-k ${txtrst}efface jusqu'a la fin de la ligne ${txtcyn}[Ctrl]-u ${txtrst}efface jusqu'au debut de la ligne ${txtcyn}[Ctrl]-y ${txtrst}coller le contenu du buffer ${txtcyn}[Ctrl]-r ${txtrst}revert all modifications to current line ${txtcyn}[Ctrl]-] ${txtrst}chercher en avant dans la ligne ${txtcyn}[ Alt]- ${txtcyn}[Ctrl]-] ${txtrst}chercher en arriere dans la ligne ${txtcyn}[Ctrl]-t ${txtrst}switch lettre ${txtcyn}[ Alt]-t ${txtrst}switch mot ${txtcyn}[ Alt]-u ${txtrst}mot en Majuscule ${txtcyn}[ Alt]-l ${txtrst}Mot en Minuscule ${txtcyn}[ Alt]-c ${txtrst}1ere lettre du mot en Majuscule ${txtpur}COMPLETION ----------------------------------------------------------------------${txtrst} ${txtcyn}[ Alt]. ${txtrst}faire defiler les arguments de la derniere commande ${txtcyn}[ Alt]-/ ${txtrst}completer le nom de fichier ${txtcyn}[ Alt]-~ ${txtrst}completer le nom d'utilisateur ${txtcyn}[ Alt]-@ ${txtrst}completer le nom d'host ${txtcyn}[ Alt]-\$ ${txtrst}completer le nom de variable ${txtcyn}[ Alt]-! ${txtrst}completer le nom d'une commande ${txtcyn}[ Alt]-^ ${txtrst}completer l'historique" } # Auto Completion dans le style Ncurse avec la touche [TAB] function kingbash.fn() { echo -n "KingBash> $READLINE_LINE" OUTPUT=`/usr/bin/kingbash "$(compgen -ab -A function)"` READLINE_POINT=`echo "$OUTPUT" | tail -n 1` READLINE_LINE=`echo "$OUTPUT" | head -n -1` echo -ne "\r\e[2K"; } bind -x '"\t":kingbash.fn' # Historique pour KingBash avec la touche [Ctrl]+r function kingbash.hs() { echo -n "KingBash> $READLINE_LINE" history -a OUTPUT=`/usr/bin/kingbash -r <(tac ~/.bash_history)` READLINE_POINT=`echo "$OUTPUT" | tail -n 1` READLINE_LINE=`echo "$OUTPUT" | head -n -1` echo -ne "\r\e[2K"; } bind -x '"\x12":kingbash.hs'