Téhessin le Rezéen

Changer les préfixes et les suffixes de fichiers situés dans un répertoire

On a souvent beoin de renommer des fichiers en masse à l'intérieur d'un répertoire. Voici deux petits scripts shell pour chaque cas :
  • Changement de suffixe

    #!/bin/sh
    
    for i in *$1;do mv $i ${i%$1}$2 ;done
    
    
    Par exemple, renom_suffix.sh txt mpl renommera tous les fichiers finissant par txt : ils finiront alors par mpl

  • Changement de préfixe

    #!/bin/sh
    
    for i in $1*;do mv $i $2${i#$1} ;done
    Par exemple, renom_prefix.sh essai try renommera tous les fichiers commençant par essai : ils commenceront alors par try

MiKTeX package manager pour linux

Ce scripts devient inutile si vous avez une version de TeXLive postérieure à 2008 grâce à tlmgr



Suite à un fil sur fctt, j'ai installé mpm (MiKTeX package manager) disponible maintenant pour linux et ça marche ! Cela simplifie pas mal l'installation de paquets disponibles sur CTAN. J'ai dû régler quelques détails, donc voici quelques conseils pour ubuntu/debian et il n'ya aucune raison que ça ne marche pas pour les autres (changer les apt-get). Voici un script shell :
#!/bin/sh

# à commenter si vous les avez déjà :

sudo apt-get install g++;

sudo apt-get install libcurl4-openssl-dev;

sudo apt-get install cmake;

sudo apt-get install lynx;


wget http://downloads.sourceforge.net/miktex/miktex-2.7.2960.tar.bz2?modtime=1202505732\&big_mirror=1;

tar jxvf miktex-2.7.2960.tar.bz2;

cd ./miktex-2.7.2960/ ;

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=${HOME}  -DMIKTEX_INSTALLROOT=${HOME}/texmf;

make ;

make install;

echo export LD_LIBRARY_PATH=${HOME}/lib >> ~/.bashrc;
echo export PATH=${PATH}:${HOME}/bin >> ~/.bashrc;

initexmf -u;
Il faut relancer X11 pour tenir compte du changement de path. Puis un petit script pour installer des fontes (il y a sinon des problèmes de dépôts)
#!/bin/sh

read -p "Quel est le nom des fontes à installer ? " font

mpm --verbose --repository=ftp://ftp.inria.fr/pub/TeX/CTAN/systems/win32/miktex/tm/packages/ --install=$font;

sudo updmap --enable Map $font.map;

updmap;

et pour un paquet normal
#!/bin/sh

read -p "Quel est le nom du paquet à installer ? " pac

mpm --verbose --repository=ftp://ftp.inria.fr/pub/TeX/CTAN/systems/win32/miktex/tm/packages/ --install=$pac;

Pour une mise à jour, on crée un script majmpm :
#!/bin/sh


export LD_LIBRARY_PATH=${HOME}/lib;

read -p "Quel est le nom du paquet à mettre à jour ? " pac

mpm --verbose --repository=ftp://ftp.inria.fr/pub/TeX/CTAN/systems/win32/miktex/tm/packages/ --update=$pac;

Pour obtenir la doc d'un paquet, on crée le script docmpm:
#!/bin/sh


export LD_LIBRARY_PATH=${HOME}/lib;

read -p "Quel est le nom du paquet dont tu veux la doc ? " pac

mthelp   $pac;

Scripts MetaPOST -> images png dans un site

Voici comment automatiser la conversion de figures MetaPOST en vignettes png avec les balises html qui vont bien pour une inclusion dans ce site. Merci à Philippe IVALDI. D'abord un script de conversion proprement dit :
#!/bin/sh




if [ "\$1.mp" -nt "\$1.eps" ]; then
    for fic in *.dvi; do rm -f $fic; done;
    for fic in *.log; do rm -f $fic; done;
    for fic in *rr.tex; do rm -f $fic; done;
    for fic in *.aux; do rm -f $fic; done;
    for fic in $1.*[0-9]; do rm -f $fic; done;
    mpost -interaction nonstopmode $1 
fi

cat>$1.tex<<EOF
\documentclass{article}
\usepackage{preambule}
\usepackage{multido}
\thispagestyle{empty}
\begin{document}
\begin{TeXtoEPS}
\includegraphics{\$1.\$2}
\end{TeXtoEPS}
\end{document}
EOF
latex $1
dvips -o $1.eps -E $1.dvi
for fic in *.mpx; do rm -f $fic; done;
convert -density 200 -resample 96 -quality 75 -depth 8 -strip $1.eps $1$2.png;
rm -f $1.eps;

mv $1$2.png /home/moi/$3/ ;

 cat>>/home/moi/$3/index.php<<EOF
<h5 class="hidden"><a class="hidden" name="fig\$1\$2" id="fig\$1\$2"></a>phantom</h5>
   
    <div class="code-contener">
      <table class="code-img">
         <caption align="bottom">
          <span class="legend">Figure $1$2: <a href="fig\$1\$2.mp">fig\$1\$2.mp</a></span>
        </caption>

        <tr>
          <td>
            <img class="imgborder" src="\$1\$2.png" alt="Figure \$1\$2" />
            <br />
          </td>
        </tr>
      </table>
      <div class="code">

<pre>



#On rentre la conversion html du code ici



</pre>
</div>
EOF

 
## Fin de convert-mp-png.sh

Puis un autre qui permet de dialoguer avec l'utilisateur :
#!/bin/sh


clear
read -p "Quel est le préfixe des fichiers ?  " pre

clear
read -p "Quel est le numéro de la première figure ?  " deb

clear
read -p "Quel est le numéro de la dernière figure ?  " fin

clear
read -p "Quel est le pas ?  " pas

clear
read -p "Où veux-tu l'envoyer ? /home/moi/" rep

for i in $(seq $deb $pas $fin); do ~/bin/convert-mp-png.sh $pre $i $rep; done;

Il suffit ensuite de mettre mp2png dans le PATH et de le lancer dans le répertoire où se trouvent les figures.

Conversion midi -> wav, Lilypond et Emacs

Lilypond crée des fichiers midi. Pour les envoyer à des personnes ne lisant pas le midi, on peut les convertir en ayant installé timidity

sudo apt-get install timidity

on lance le script



#!/bin/sh
timidity $1.midi $1-*.midi -Ow -o $1.wav



en tapant

midi2wav préfixe_du_fichier_midi


En fait, j'utilise cette commande à partir d'emacs grâce à quelques lignes de lisp rajoutées dans lilypond-mode.el :

(defvar guillaume-midi2wav-command "midi2wav %s")

(defun guillaume-midi2wav () (interactive)
   (save-buffer)
   (shell-command (format guillaume-midi2wav-command
                         (file-name-sans-extension(buffer-file-name))))
   )
(add-hook 'LilyPond-mode-hook
          '(lambda nil
             (define-key LilyPond-mode-map [(super c) (super w)] 'guillaume-midi2wav)))


Après avoir compilé le fichier .ly, on tape donc sur S-c S-w pour avoir la conversion .wav dans le répertoire courant.

J'ai même rajouté la commande dans le menu de lilypond en rajoutant dans lilypond-mode.el vers la ligne 1030 :

(easy-menu-define LilyPond-command-menu
  LilyPond-mode-map
  "Menu used in LilyPond mode."
  (append '("Command")

;;;
quelques lignes déjà présentes puis à la toute fin

'([ "Midi2wav" guillaume-midi2wav t])
          ))


Linux sur un Dell dimension e521

La souris et le clavier

J'utilise kubuntu sur un dell dimension e521. Premier problème : la souris et le clavier ne fonctionneront que si on les branche via un hub usb.

xorg.conf avec écran panoramique

Je tourne sur un écran panoramique 1680x1050. J'ai chargé un pilote nvidia et voici le xorg.conf qui va avec.