[Linux] – Récupérer la ligne de commande et les paramètres qui viennent d’être saisie !

 

Okey Okey, je me doute que le titre n'est pas méga accrocheur, et que la plupart d'entre vous, risquent de décrocher à sa simple lecture.

Cet article s'adresse donc aux "Linuxiens" (et aux curieux), car cela fait un paquet de temps que je n'ai pas écrit d'article sur Linux, et surtout, que ça me manquait un peu !

Un peu d'histoire ...

 

Je suis actuellement en mission à la sécurité sociale ...
Eh oui ... je suis probablement entrain d'endetter encore plus notre pauvre pays !
Enfin bon, j'ai mis en place récemment un produit, que l'on administre et que l'on configure à l'aide d'un ensemble de scripts de mon cru !
Et ... bien entendu, il peut arriver que les personnes l'utilisant souhaitent le réinstaller !
C'est là, que cet article intervient !!!

Un exemple, pour mieux comprendre ...

Lorsque vous installez votre ordinateur ...
Vous le configurez ...
Vous le customisez ...
Bref vous le faite vivre !
Puis un jour vient, où ... grand ménage de printemps, vous désirez, pour une raison ou une autre le réinitialiser ...
Vous  souhaitez cependant conserver vos "configuration" / "customisation" sur lesquelles vous avez probablement passé déjà pas mal de  temps...

Dans l'exemple ci-dessus, avoir un historique de toutes les lignes de commandes "utiles", que vous avez pu saisir, ça  peut-être pas mal !

 

Bien entendu, lorsque je dis "toutes les lignes de commande" ... j'entends par là, que vous avez la possibilité de  cibler uniquement les "commandes" à conserver ...

 

Par exemple :

DeployerMonServeur.sh --nomDeDomaine "Dyrk.org" --bdd "dyrk_db" --user_db "admin_dyrk" --password_db "password_dyrk" ...

Ou encore :

AjouterUnUtilisateur.sh --username "MarieAntoinette" --password "MichelineDu93"

Soyons imaginatif, on peut imaginer ici, un Admin Système sur un environnement "spécifique" et réalisant une migration  ...
Celui-ci devra probablement se retaper des dizaines de lignes de commande ...

 

La mise en place final

Nous arrivons enfin aux quelques lignes de commande qui vous permettront dans ces scripts d'extraire à la fois le nom du script, ainsi que ses paramètres, dans l'ordre, tout en gérant les divers espaces, parenthèses ou caractères spéciaux !

Appelons notre script ~/RePlay.sh :

lastCmd=`fc -l | tail -n 1 | sed -e "s/^[0-9]*//g"`;
echo "$(set -f;echo $lastCmd)" >> $1

Donnons-lui maintenant les droits d’exécution (pour pouvoir l'utiliser directement) :

chmod +x RePlay.sh

Vous n'aurez donc plus qu'à ajouter dans votre fichier de profile ~/.bash_profile un nom de fichier d'exportation des lignes de commande :

export ReplayFile=~/sauvegarde_commandes.log

Si vous voulez tout de suite tester, il vous faudra "sourcer" le fichier .bash_profile :

source ~/.bash_profile

Puis ajouter dans vos différents scripts cette ligne de commande :

~/RePlay.sh $ReplayFile

Et voilà, vous pouvez tester !

 

Ci-dessus, 3 scripts, utilisant "replay.sh"
Je les exécute avec plein de paramètres plus ou moins complexe, ainsi que des redirecteurs  ( <, >, |, ...)
Et toutes ces commandes sont bien stockées dans le fichier de log ! Ici "test.log"

 

Conclusion

 

Voilà, je vous laisse à présent vous amuser, et surtout, je vous souhaite à tous un très bon Weekend !

N’hésitez pas, si vous avez des idées à  me les partager par commentaire :)

 

 

Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *