bash, mv bluffant...
2012-09-13 | #bash #mv #remove version
Lors d’une formation, j’ai vu cela… Ca m’a bluffé :) $ bash $ touch malib-x.y.z.jar $ mv malib{-x.y.z,}.jar $ ls malib.jar
2012-09-13 | #bash #mv #remove version
Lors d’une formation, j’ai vu cela… Ca m’a bluffé :) $ bash $ touch malib-x.y.z.jar $ mv malib{-x.y.z,}.jar $ ls malib.jar
2012-09-12 | #mot clé #moteur de recherche #pastebin #search engine
Inclure du code déposé sur pastebin c’est bien… Malheureusement, le moteur de recherche du blog ne recherche pas dans le contenu déposé sur pastebin. Pour permettre une recherche, on peut positionner des mots clés “invisibles” dans sa page. <script src="http://pastebin.com/embed_js.php?i=2TwEyffe"></script> <div style="overflow:hidden; height:0;">grant insert select on mysql user privileges flush</div> Le moteur de recherche les verra et remontera l’article :)
2012-09-11
Pour obtenir une suite de nombre qui font partie d’une séquence, il y a la commande seq. Il existe aussi une manière de le faire directement en bash en utilisant une expression du genre {x..y[..inc]}. $ for i in {1..30..2}; do echo $i; done 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 $ seq 1 2 30 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 Attention toutefois, si les bornes sont définies dans des variables, il faudra un petit coup d’évaluation :
2012-09-11 | #bash #redirection
Pour écrire sur stderr $ cat stderr.txt echo "Mon texte sur stderr" >&2 cat >&2 <<-EOF et pourquoi pas encore du texte sur stderr EOF $ bash stderr.txt > /dev/null Mon texte sur stderr et pourquoi pas encore du texte $ bash stderr.txt 2> /dev/null $
2012-09-07
Il est possible d’utiliser les fichiers : /sys/class/backlight/acpi_video0/max_brightness /sys/class/backlight/acpi_video0/brightness afin de modifier la luminosité. Le script suivant prend un numérique (pourcentage entre 0 et 100) et modifie le fichier /sys/class/backlight/acpi_video0/brightness en conséquent. #include <stdio.h> #include <stdlib.h> #include <errno.h> int is_numeric(const char *p) { if (*p) { char c; while ((c=*p++)) { if (!isdigit(c)) return 0; } return 1; } return 0; } int main(int argc, char *argv[]) { if (argc !
2012-09-06 | #bash #exit #grep #if #status
Cela se fait simplement avec un grep… $ if grep -Fq $mot $fichier; then echo "Le mot est dans le fichier" else echo "Le mot n'est pas dans le fichier" fi Bien que le test semble inversé, il est correct car la sortie du grep avec un status à 0 est un succès. Le paragraphe Conditional Shell Control Structures de la page http://teaching.idallen.com/dat2330/04f/notes/exit_status.txt l’explique très bien.
2012-09-06 | #awk #espace #space #strip #trim
Pour supprimer les espaces en début de ligne… $ cat fichier | sed -e 's/^[ \t]*//g' $ cat fichier | sed -re 's/^[[:space:]]*//g' ou alors avec awk $ cat fichier | awk -F ':' '{ gsub(/^[[:space:]]+$/,"",$2); print $2; }'
2012-09-06 | #html #sed #tag
Dans certains scripts bash, on peut souhaiter supprimer les tags html d’un flux ou d’un fichier. Pour cela on peut utiliser la commande sed. $ echo $texte <div class='descriptionwrapper'> <p class='description'><span>J'entrepose ici mes découvertes linux, bash, python et java que je souhaite partager et mettre de côté...</span></p> </div> $ texte | sed -e 's/<[^>]*>//g' J'entrepose ici mes découvertes linux, bash, python et java que je souhaite partager et mettre de côté.
2012-09-05 | #bash #code #erreur #pipe
L’exemple se passe de commentaires ! $ ls toto | head -n 1 ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type $ echo $? 0 $ set -o pipefail 1 $ ls toto | head -n 1 ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type $ echo $? 2 Pratique dans le cas d’un curl $url | sed ... > $output pour savoir si une erreur est remontée.
2012-09-05
L’utilisation du bit SUID permet d’exécuter des scripts en se faisant passer pour un autre utilisateur. Cela peut être pratique sur sa machine personnelle pour appeler un script qui modifie la luminosité de l’écran… Mais aussi dangereux si la machine est utilisée par d’autres utilisateurs… Attention, après recherche le bit suid ne fonctionne pas sur linux pour les scripts bash… Cela explique bien des choses que je ne comprenais pas !