#!/bin/bash --login # # ce script permet l'ouverture d'un fichier selon son extension par les utilitaires indiqués par défaut ici. # il permet aussi si on tape une extension ou .extension connue l'ouverture du programme correspondant # par défaut, il ouvre DEFAULT # programme par défaut si ne connait pas l'extension (il faut un éditeur de texte) DEFAULT=vim if [[ "$1" == "" ]]; then echo "syntaxe : 'ouvre monfichier.extension' " exit 0 fi valeurinitiale=-1 prog=$valeurinitiale # initialisation de prog # on extrait l'extension (les caractères présents après le dernier point du nom) extension=$(echo $(echo "$1"|sed 's/.*\.//g')) echo $extension # pour quelques commandes de manipulation de fichier, quelque chose peut être nécessaire, notamment utilisant le nom de fichier postcmd="" # initialisation de la valeur du texte après le nom de fichier nomfich=$(echo $1|sed 's/"\."$extension//g') devant="0" # pour dire si le processus doit s'exécuter en arrière plan, habituellement oui # Pour les fichiers .tex, il peut y avoir un problème à la compilation car latex ne gère pas l'UTF-8, donc quand j'ouvre un fichier latex, je vérifie qu'il est en ISO-8859 sinon je le transforme en ISO-8859 avant de l'ouvrir (avec gvim). # echo $1 $nomfich $extension $postcmd # en cas d'un mot seul, il ne faut pas garder extension vide if [[ $extension == $nomfich ]] then if [[ $nomfich != "$1" ]] then extension="$1" fi fi # echo extension $extension # on utilise l'extension pour savoir quelle commande effectuer. case $extension in # ) # pour ouvrir les trucs sans extension gedit est le truc qui supporte le plus de languages # prog='gedit' # ;; \.) # ouverture du répertoire lui-même avec un explorateur graphique prog="nautilus" ;; aspx) # enregistrements firefox prog="firefox" ;; bmp) # format d'images point par point prog="gimp" ;; bz2|bunzip2) # pour décompresser prog="bunzip2" ;; c|cc|cpp) # pour le language c, utiliser gvim prog="gvim" ;; deb) prog="dpkg -i" ;; doc) prog="openoffice.org3 -writer" ;; dvi) prog='xdvi' ;; eps) prog='evince' ;; fig) prog='xfig' ;; ftp) prog='lftp' ;; gif) prog="display" ;; gz) # postcmd=$nomfich prog="gunzip" ;; htm) prog=firefox ;; html) prog=firefox ;; jar) prog='java -jar' ;; jnlp) prog=firefox ;; jpg) prog="display" ;; JPG) prog="display" ;; kit) prog=tclkit ;; lyx) prog='lyx' ;; odg) prog='openoffice.org3 -draw' ;; odp) prog='openoffice.org3 -impress' ;; ods) prog='openoffice.org3 -calc' ;; ots) prog='openoffice.org3 -calc' ;; odt) prog='openoffice.org3 -writer' ;; pdf) prog="kpdf" ;; png) prog="evince" ;; ppt) prog='openoffice.org3 -impress' ;; ps) prog="evince" ;; py) prog=gvim ;; R) prog=R ;; rtf) prog='openoffice.org3 -writer' ;; sh) prog="gedit" ;; sqlite) prog=bibus ;; tar) prog="tar -xvf" ;; tex) # encoding=$(file -b $1 | sed s/\ .*//g) ; # case $encoding in # LaTeX) #dans se cas iconv est perdu donc il faut l'aider # mv $1 $1.bak ; # iconv $1.bak -f UTF-8 -t ISO_8859-1 -o $1 # ;; # ISO-8859) # rien besoin de faire # ;; # *) # dans tout les autres cas on utilise iconv simplement # mv $1 $1.bak ; # iconv $1.bak -f $encoding -t ISO_8859-1 -o $1 ; # ;; # esac prog="vim --servername vimtex" devant="1" # il ne faut pas passer vim en arrière plan # permet de renommer le serveur vim pour que le backsearch fonctionne bien ainsi que jabref ;; tgz) prog="tar xvzf" ;; tif) prog="eog" ;; tiff) prog="eog" ;; txt) prog=gvim ;; xcf) prog='gimp' ;; xls) prog='openoffice.org3 -calc' ;; zip) prog=unzip ;; esac # si l'argument existe en tant que fichier if [ -f "$1" ] ; then # alors il faudra ouvrir $1 aouvrir="$1" ; # echo "if -f OK \n" prob=$prog , valeurinitiale=$valeurinitiale # si pas d'extension reconnue, utilise le programme par défaut if [[ $prog == $valeurinitiale ]] ; then $DEFAULT "$1" exit 0 ; fi ; else # sinon il faudra ouvrir le programme "à vide" aouvrir="" ; # si pas d'extension reconnue, il faut faire remarquer à l'utilisateur qu'il fait n'imp if [[ $prog = $valeurinitiale ]] ; then echo "Ce fichier n'existe pas ou si c'est une extension elle n'est pas connue." ; prog="" ; exit 0 ; fi ; # echo "else de -f $1 \n" fi # echo prog $prog # éviter les indentations, ça risque de faire des choses bizarres if [[ $devant == "0" ]] ; then # echo devant = 0 $devant echo 'Commande exécutée : '$prog $aouvrir & $prog $aouvrir & else # echo devant = 1 $devant echo 'Commande exécutée : '$prog $aouvrir $prog $aouvrir fi # et pour terminer proprement (des questions de sécurité si j'ai bien compris) exit 0