Un cas de fonction que je me retrouve souvent à ajouter.
Résumé : on peut simplifier la commande ps aux | grep <process>
La commande ci-dessus renvoie systématiquement un faux positif qui est l'éxécution de grep lui-même sur notre argument <process> (par exemple la valeur firefox). Donc même si firefox ne tourne pas quand on lance la commande on aura une ligne du type :
duke 1231 0.0 0.0 6076 888 pts/4 S+ 23:55 0:00 grep -E --color=auto firefox
Pas méchant. Pour éviter ça simplement on peut faire ceci (le "simplement" mérite d'être approfondi si vous êtes curieux) :
$ ps aux | grep [f]irefox
Deux crochets autour de la première lettre suffisent. Du coup, je crée une commande is qui prend un argument et renvoie le bon résultat.
Mais d'abord, que fait la fonction suivante ?
function ECHO() {
echo ${1:0:1}${1:1:${#1}}
}
.
.
.
Exactement ce qu'il nous faut : découper l'argument entre la première lettre et le reste. Donc ECHO va afficher simplement le premier argument.
Finalement, l'objet du délit :
function is() {
ps aux | grep [${1:0:1}]${1:1:${#1}}
}
Utilisation :
$ is firefox
Et un script qui peut traiter plusieurs arguments :
#!/bin/bash
while [[ $# > 0 ]]
do
ps aux | grep [${1:0:1}]${1:1:${#1}}
shift
done | grep -v $0
exit 0
Ooooh :/
#1 : Misusing expressions as defaults for function arguments
- En utilisant des dictionnaires ça passe non ?
#2 : Using class variables incorrectly
Ah les joies de la prog OO.
#3 : Specifying parameters incorrectly for an exception block
Bah j'utilise peu de try/except et je gère les exceptions à la main... #notaprogrammer
#4 : Misunderstanding Python scope rules
Nooooobs ^^
#5 : Modifying a list while iterating over it
Typique...
:)