N'avez-vous jamais eu envie d'écrire et de lancer des programmes e C aussi facilement que de simples scripts shell ? Eh bien c'est possible 😉
Tout d'abord, installez le nécessaire pour développer en C si ce n'est pas déjà fait, à savoir le paquet
build-essential.
Puis il vous faut placer ce script dans
/usr/local/bin/cscript (
gksudo gedit /usr/local/bin/cscript) :
#!/bin/bash
FILENAME=$1
shift
INTERACTIVE=0
WD=$(pwd)
if [ -z $FILENAME ]
then
FILENAME=$(mktemp)
cat > $FILENAME
TEMP=$FILENAME
INTERACTIVE=1
else
TEMP=$(mktemp)
fi
PARAMETERS=$(cat $FILENAME | grep '/*CMDLINE=' | awk -F '/*CMDLINE=' '{print $2}' | sed 's/*\///g')
cd $(dirname $FILENAME)
if [ $INTERACTIVE -eq 0 ]
then
cat "$WD/$FILENAME" | tail -n $(($(wc -l "$WD/$FILENAME" | cut -d" " -f1)-1)) > "$TEMP-src"
else
cat "$FILENAME" > "$TEMP-src"
fi
cat "$TEMP-src" | gcc -x c -o $TEMP $PARAMETERS - > /dev/null
if [ -f $TEMP ]
then
if [ -x $TEMP ]
then
$TEMP $*
fi
rm $TEMP
rm "$TEMP-src"
fi
cd "$WD"
Pensez à le rendre exécutable :
sudo chmod +x /usr/local/bin/cscript
Maintenant, testez-le :
link31@linux ~ $ cscript
#include <stdio.h>
int main()
{
printf("hello world!\n");
return 0;
}
Ctrl+D
Si tout se passe bien, vous devriez obtenir :
hello world!
Voilà, vous venez d'exécuter du code C depuis le terminal 🙂
Ce n'est pas tout, ce script peut aussi servir à lancer des scripts C, de la même façon que n'importe quel script shell.
Enregistrez le code suivant dans
~/scriptc.c
#!/bin/env cscript
/*CMDLINE=-lm*/
#include <stdio.h>
#include <math.h>
void cosinus(float value)
{
printf("cos(%f)=%f\n", value, cos(value));
}
int main()
{
cosinus(0.5);
return 0;
}
Remarquez les deux premières lignes : la première sert à indiquer l'interpréteur (le script
cscript donné plus haut), la seconde sert à indiquer les options de compilation (-lm pour les fonctions mathématiques).
Rendez-le exécutable :
cd
chmod +x scriptc.c
Et testez-le :
./scriptc.c
Vous devriez obtenir quelque chose comme :
cos(0.500000)=0.877583
On peut indiquer des arguments à passer au programme comme ceci, par exemple :
./scriptc.c --help
Voilà, c'est une petite astuce assez utile pour tester des bouts de code C directement dans le terminal, ou pour écrire des scripts en C quand vous ne savez pas comment faire en shell. De plus, vous n'avez pas besoin de vous rappeler les options de compilation à passer à gcc, et à compiler le fichier à la main, tout est fait de façon transparente.
Avec un PC pas trop vieux et un code pas trop long, la "compilation" du script peut être quasi-instantanée, donc pas de souci de ce côté-là.
J'attends vos commentaires 😉