Affichage des articles dont le libellé est linux. Afficher tous les articles
Affichage des articles dont le libellé est linux. Afficher tous les articles

16 décembre 2022

BASH - programmation idempotente

En mathématiques et en informatique, l'idempotence signifie qu'une opération a le même effet qu'on l'applique une ou plusieurs fois.
On doit pouvoir lancer une commande et avoir le résultat escompté malgré le changement de situation dans la machine.
 
Voici un exemple avec la création d'un répertoire

jp@jp-aspire:~$ mkdir sandbox
jp@jp-aspire:~$ ls -l
total 80
....
drwxr-xr-x 2 jp jp 4096 sep 12 00:26 Public
drwxrwxr-x 2 jp jp 4096 jan 29 15:49 sandbox
drwxr-xr-x 7 jp jp 4096 jan 28 23:41 snap
drwxr-xr-x 2 jp jp 4096 jan 25 11:33 Téléchargements
....
jp@jp-aspire:~$ echo $?
0
La commande a bien créé le répertoire "sandbox" et la commande "echo $?" indique qu'il n'y a pas d'erreur dans ce travail avec en retour la valeur "0"
 
Si l'on lance à nouveau la même commande pour créer le répertoire "sandbox"
jp@jp-aspire:~$ mkdir sandbox
mkdir: impossible de créer le répertoire «sandbox»: Le fichier existe
jp@jp-aspire:~$ echo $?
1
L’environnement bash nous retourne un message d'erreur et le test avec"echo $?" nous donne bien une erreur  "1"

Si l'on veut être en mode idempotent, il faut alors ajouter à la commande "mkdir" le paramètre -p  (A voir: man mkdir).
On relance la commande avec  notre petite modification et nous avons alors comme résultat
jp@jp-aspire:~$ mkdir -p sandbox
jp@jp-aspire:~$ echo $?
0
jp@jp-aspire:~$

Alors avec la commande "echo $?" le résultat donne maintenant 0  et nous n'avons plus de message d'erreur en retour.
Le traitement et les résultats sont identiques, que le répertoire existe ou pas 👍
 
Nous sommes alors désormais bien en mode idempotent 😊 
 
Que le répertoire n'existe pas ou qu'il soit déjà créé, la commande ne bloque pas la suite des opérations.
 
E N J O Y 

20 mars 2021

tmux

 tmux pour teminal multiplexé

L'avantage du travail en mode terminal n'est plus à démontrer. Les utilisateurs de GNU/Linux aiment administrer, créer des filtres de recherche dans le bash avec awk, grep et autre sed pour travailler d'une manière efficace.  En choisissant tmux on s'offre beaucoup de possibilités dans une seule fenêtre active et avec l'arrivée des grands écrans, c'est bien pratique.

En commence par ouvrir un terminal et pour l'installation il suffit de faire un


~$ sudo apt update
~$ sudo apt install tmux

Ce n'est pas obligatoire, mais on peut créer un fichier de configuration dans notre répertoire /home/mon_nom qui portera le nom de ".tmux.conf" (fichier caché).  On peut après lui ajouter des commandes de paramétrage de tmux.

On trouve passablement de références sur les pages WEB.
Configuration de tmux
Ma configuration Tmux 

 

 

Une fois installé, on peut se lancer en donnant la commande dans le terminal

 ~$ tmux

 

 

Le bind est ctrl-b, mais il peut être changé dans le fichier de configuration .tmux.conf 

Le bind = le raccourcis :) 

Changer le bind ... dans le fichier .tmux.conf

On peut créer ce fichier à partir de la conf actuelle
~$ tmux show -g > .tmux.conf
 
Avec l'éditeur on peut alors changer les paramètres dans le fichier .tmux.conf
unbind C-b
set -g prefix C-y

Quelques raccourcis  pour bien commencer :) 
Par défaut,  tmux utilise le Ctrl-b comme préfixe d'une commande, mais on peut changer cette commande par un Ctrl-Y par exemple.
 
Ctrl-B c    pour créer une nouvelle fenêtre 
Ctrl-B n next  ou p 
Ctrl-B d  pour effacer la fenêtre
Ctrl-B x pour terminer la session

Ctrl-B % pour couper l'écran en deux verticalement
Ctrl-B "  pour couper horizontalement
Ctrl-B < ou > pour passer d'une fenêtre a l'autre 

Ctrl-B  Alt <  ou Altl > pour élargir la fenêtre

Ctré-B o pour changer de panneau
Ctrl-B q  et donner le no du panneau de destination.

Ctrl-B z  ouvrit la fenêtre en plein écran  et a nouveau ctrl-b z pour revenir