Ubuntu 14.04 – Mixxx et Hercules Dj console mk2

mixxx et hercules dj consolemk2sur Ubuntu14.04Installer et configurer Mixxx connecté avec une table de mixage Hercules Dj console mk2.

 

Mixxx est une interface graphique de mixage pour DJ’s et un émulateur de vinyles.
Plus de détails le site de LinuxMao

 

Hercules Dj console mk2 est une table de mixage avec carte son intégrée, elle se connecte directement au pc via un câble usb et est équipée d’une sortie casque pour la pré-écoute, deux sorties enceintes/ampli, d’une entrée micro, deux entrées (line-in/phono-in pour mixer de l’audio analogique).

Installation de Mixxx
Afin d’obtenir la dernière version et les mises à jours les plus récentes il faut installer les dépôts officiels :

$ sudo add-apt-repository ppa:mixxx/mixxx && sudo apt-get update

Installation :

$ sudo apt-get install mixxx libportaudio2

et lancer avec la commande « mixxx » ou en cliquant sur l’icone mixxx (Menu –-> Multimédia –-> mixxx)

$ mixxx

Installer le pilotes Hercules
Afin d’obtenir la dernière version et les mises à jours les plus récentes il faut installer les dépôts officiels :

sudo apt-add-repository ppa:rojtberg/hdjmod && sudo apt-get update

Installation

sudo apt-get install hdjmod-dkms

Débranchez et rebranchez votre DJ Console Hercules mk2.

Hercule Dj Console MK2 Face arriere Ubuntu

Hercule Dj Console MK2 Face avant Ubuntu

Configurer Mixxx pour avoir la main sur la table de mixage Hercules Dj console mk2:
Aller dans Options/Préférences/Carte Son dans:
L’onglet « Sortie » sur « Principale » choisir la carte son Hercules… et Canaux 1 – 2 Dans « Casque » choisir la carte son Hercules… et Canaux 3 – 4 Voir image ci-dessous:
Mixxx Hercule Dj Console MK2 configuration sorties son et casque
L’onglet « Entrée » sur « Microphone » choisir la carte son Hercules… et Canal 1 (si cela ne fonctionne pas essayer les autres canaux) Voir image ci-dessous:

Mixxx Hercule Dj Console MK2configuration micro Ubuntu

Dans la partie « Contrôleurs » activer la carte… et Appliquer ! Ceci-dit, si vous n’utilisez pas Midi, vous pouvez passer outre. Voir image ci-dessous:

Mixxx Hercule Dj Console MK2 configuration activer midi Ubuntu

Et tout devrait bien fonctionner….

Ajouter les coordonnées GPS dans EXIF avec exiv2

mettre les coordonnées gps dans exif avec exiv2.pngLinux, exiv2 et ajout des coordonnées GPS dans EXIF

Ajouter les coordonnées GPS à une photo en ligne de commande nécessiterai trois (3) lignes de commande, ce script peut simplifier la tâches.

Ici un petit script permettant de rentrer des coordonnées GPS dans les métadonnées EXIF dans une série de photos.

« exiv2 » doit être installé… sinon:

apt-get install exiv2

Ce script va vous poser quelques questions, bien entendu, il ne faut pas mettre les parenthèses…

Les questions qui vous seront posées:

  • Entrez l’extension de fichier en respectant la casse (jpg) (JPG) (RAW)… : Tapez JPG ou jpg ou RAW ,bref l’extension de votre série photos en respectant la casse, c’est-à-dire, en majuscules ou minuscules…
  • Entrez la latitude (N) ou (S) : N ou S Cela se transformera en North ou South sur les tags exif
  • Entrez la latitude sous forme ex (48/1 13/1 24/1) : Imaginons la latitude à rentrer est 48°, 13min et 24sec… vous devrez le saisir sous forme de 48/1 13/1 24/1 et cela donnera 48deg 13′ 24″ sur le tag exif.
  • Entrez la longitude (E) ou (O) : E ou O cela se transformera en East ou West
  • Entrez la longitude sous forme ex (9/1 52/1 51/1) : (même principe que pour la latitude).

Le sript:

#!/bin/bash
# Ajouter les données GPS aux métadonnées EXIF - Sima78
# Entrez vos données GPS sans les parenthèses... :-)"
echo -n "Entrez l'extention de fichier en respectant la casse (jpg) (JPG) (RAW)... : "
read form
echo -n "Entrez la latitude (N) ou (S) : "
read latref
echo -n "Entrez la latitude sous forme ex (48/1 13/1 24/1) : "
read lat
echo -n "Entrez la longitude (E) ou (O) : "
read longref
echo -n "Entrez la longitude sous forme ex (9/1 52/1 51/1) : "
read long
for i in *.$form
   do
      exiv2 -M"set Exif.GPSInfo.GPSLatitudeRef $latref" $i
      exiv2 -M"set Exif.GPSInfo.GPSLatitude $lat" $i
      exiv2 -M"set Exif.GPSInfo.GPSLongitudeRef $longref" $i
      exiv2 -M"set Exif.GPSInfo.GPSLongitude $long" $i
   done
echo "TERMINE"

Pour utiliser ce script, copiez-le dans votre éditeur texte favori et enregistrez sous… par exemple: ajout-gps-exif.sh

Le rendre exécutable par:

chmod +x ajout-gps-exif.sh

Le placer dans le dossier de vos clichés à modifier et le lancer par:

./ajout-gps-exif.sh

Pour voir le résultat:

exiv2 -pt votre_photo.JPG

Exemple de résultat:

(...)
Exif.GPSInfo.GPSLatitudeRef     Ascii    2  North
Exif.GPSInfo.GPSLatitude        Rational 3  48deg 13' 24" 
Exif.GPSInfo.GPSLongitudeRef    Ascii    2  East
Exif.GPSInfo.GPSLongitude       Rational 3  9deg 52' 51"

Ce script utilise une simple boucle (for, do, done) il est donc facile de l’enrichir avec d’autres champs complémentaires (copyright, auteur, commentaire, etc…)

Liste des champs possibles sur www.exiv2.org/tags.html

Modifier les métadonnées EXIF de ses photos

Modifier les métadonnées EXIF avec Exiv2Modifier les métadonnées EXIF de ses photos

Comment rajouter des informations aux données « EXIF » d’une photo? En effet il manque souvent l’auteur, le commentaire… Je vous propose l’une des méthodes sous linux…

Rapide, car légère, puisqu’en ligne de commande.

Avant de commencer, ayez une idée de ce qu’est un fichier EXIF d’une photographie, ensuite prenez connaissance des variables susceptibles d’enrichissement.
C’est fait? Alors c’est parti…

Imaginons, j’ai pris une série de photographies, avant de les renommer je souhaite rajouter d’autres renseignement aux métadonnées « EXIF »: Un commentaire, le lieu de prise et nom de la plante que j’ai photographié dans la série, il s’agit de la colchique d’automne (Colchicum autumnale).
Si je n’avais qu’une photographie à modifier j’utiliserai la ligne suivante:

$ exiv2 -M"set Exif.Photo.UserComment charset=Ascii Paris - Colchicum autumnale (colchique d'automne) " DSC_0013.JPG

Mais voilà, j’ai plusieurs photographies à modifier, alors je vais utiliser une boucle « for, do, done » et pourquoi pas en faire un script pour éviter la réécriture de la ligne à chaque fois, à vous de voir.

Ajoutons aux données EXIF un commentaire pour le nom et lieu: Paris – Colchicum autumnale (colchique d’automne)

$ for i in *.JPG; do exiv2 -M"set Exif.Photo.UserComment charset=Ascii Paris - Colchicum autumnale (colchique d'automne)" $i; done

Vérifions avec la commande exiv2 et l’option « -pt » pour plus de détail:

$ exiv2 -pt DSC_0012.JP
(...)
Exif.Nikon3.Saturation           Ascii      16  NORMAL
Exif.Nikon3.VariProgram          Ascii      16  AUTO
Exif.Photo.UserComment           Undefined  56  Paris - Colchicum autumnale (colchique d'automne)
Exif.Photo.SubSecTime            Ascii       3  50
(...)

De la même façon on peut mettre le nom d’auteur, le Copyright etc.
Exemple:

$ for i in *.JPG; do exiv2 -M"set Exif.Image.Artist Mon_prenom et NOM" $i; done
$ for i in *.JPG; do exiv2 -M"set Exif.Image.Copyright Creative Commons BY-NC-SA" $i; done
$ exiv2 -pt DSC_0012.JP
(...)
Exif.Image.Artist                 Ascii      18  Mon_prenom et NOM
Exif.Image.YCbCrPositioning       Short       1  Co-sited
Exif.Image.Copyright              Ascii      26  Creative Commons BY-NC-SA
(...)
Exif.Photo.UserComment            Undefined  56  Paris - Colchicum autumnale (colchique d'automne)
(...)

Renommer les photos par lot en utilisant les métadonnées EXIF

Renommer une photo en utilisant les métadonnées exif avec exiv2Renommer des photos par lot en utilisant des données EXIF de chaque image.

Ou comment avoir un nom ressemblant à « 2010-0613-16h07m08s-chantier.JPG » au lieu de « DSC_0005.JPG »

Prérequis:
« exiv2 » doit être installé.
On va utiliser les commandes « find » et « exiv2 « 

Voyons ce qu’il y a dans le répertoire courant:

$ ls
DSC_0005.JPG DSC_0006.JPG DSC_0007.JPG DSC_0008.JPG

On va renommer les photos en utilisant une partie des métadonnées EXIF de chaque image en une seule commande (ici date et heure de prise de vue).

$ find -iname "DSC_*" -exec exiv2 -r %Y-%m%d-%Hh%Mm%Ss-chantier mv {} +
$
$ ls -l
total 10004
-rwxr-xr-x 1 sima sima 2976990 2010-06-13 16:07 2010-0613-16h07m08s-chantier.JPG
-rwxr-xr-x 1 sima sima 2538376 2010-06-13 16:07 2010-0613-16h07m27s-chantier.JPG
-rwxr-xr-x 1 sima sima 2231659 2010-06-13 16:07 2010-0613-16h07m51s-chantier.JPG
-rwxr-xr-x 1 sima sima 2472989 2010-06-13 16:07 2010-0613-16h07m57s-chantier.JPG

Que c’est-il passé?
La commande find a recherché les fichiers dont le nom commence par DSC_
Lorsque la réponse est vrai (renvoi 0) exécute la commande exiv2
La commande exiv2 va renommer en prenant l’année (%Y), le mois (%m), le jour (%d), l’heure (%H), les minutes (%M) et les secondes (%S) de prise de vue en y ajoutant les personnalisations les () (hms) de heure, minutes et secondes puis chantier.

En faisant «man exiv2» ou «man find» on peut voir l’étendue des possibilités.

ATTENTION ! cette commande est récursive et si vous avez des sous-répertoires avec des fichiers correspondant à la requête, ils seront également modifiés. Dans ce cas, vous pouvez utiliser la commande exiv2 dans une boucle for, do, done

Il est facile d’en faire un script…

Renommer les photos sans utiliser les métadonnées Exif

Renommer les photos sans utiliser les métadonnées EXIFRenommer sans utiliser les métadonnées Exif.

De retour de vacances, il n’est pas rare de se retrouver avec répertoire contenant plus de 400 photos avec des noms de fichiers du genre:
dsc_0007.jpg
dsc_0009.jpg
dsc_0016.jpg

Or on souhaite que les noms soient plus explicites, genre «2010-07-vancances-numéro.jpg»

Faire des modifications une par une est fastidieux, c’est là qu’intervient la commande «sed»

On va utiliser une boucle «for, do, done», J’ai déjà donné les explications sur le billet « Initiation au shell boucle (for, do, done) » (la punition de mon fils).

Voici la ligne magique avec la commande «sed»:

for i in dsc_*; do mv $i `echo $i | sed "/^dsc_/s//2010-07-vacances-/"`; done

« dsc_ » sera remplacé par « 2010-07-vacances-« 

Ce qui donnera des noms de fichier du genre :

2010-07-vacances-0007.jpg
2010-07-vacances-0009.jpg
2010-07-vacances-0016.jpg

Pour éviter de retaper la ligne on peut faire un mini script:

#!/bin/bash
# renommer des photos dans le répertoire courant.
echo "Entrez ce que vous souhaitez remplacer, ex. dsc_, DSC ..."
echo "Gardez la numérotation finale des photos..."
echo -n "respectez les la casse, majuscules / Minuscules : "
read rempl
echo -n "Entrez ce que vous souhaitez voir à la place : "
read souhait
for i in "$rempl"*
do mv $i `echo $i | sed "/^"$rempl"/s//"$souhait"/"`
done
echo "TERMINE"

On va le nommer « renom-photos.sh »

Le rendre exécutable par:

chmod +x renom-photos.sh

Plaçons-le dans le répertoire courant et utilisons-le.
Voyons ce qu’il y a dans le répertoire courant.

$ ls -l
total 10764
-rwxr-xr-x 1 sima78 sima78 2231659 2010-06-13 16:07 DSC_0007.JPG
-rwxr-xr-x 1 sima78 sima78 2720329 2010-06-13 16:09 DSC_0009.JPG
-rwxr-xr-x 1 sima78 sima78 1996609 2010-06-18 15:04 DSC_0016.JPG
-rwxr-xr-x 1 sima78 sima78     383 2010-08-17 20:55 renom-photos.sh
-rwxr-xr-x 1 sima78 sima78 2036985 2010-06-18 15:03 souhait0015.JPG
-rwxr-xr-x 1 sima78 sima78 1996609 2010-06-18 15:04 souhait0016.JPG

On voit aussi le script qui se termine par .sh et je souhaite renommer mes photos DSC_*
Je lance le script et réponds au 2 questions…

$ ./renom-fotos.sh
Entrez ce que vous souhaitez remplacer, ex. dsc_, DSC ... (ici se serait DSC_)
Gardez la numérotation finale des photos...
respectez les la casse, majuscules / Minuscules : DSC_
Entrez ce que vous souhaitez voir à la place : 2010-07-vacances-
TERMINE

Voyons le résultat.

$ ls -l
total 10764
-rwxr-xr-x 1 sima78 sima78 2231659 2010-06-13 16:07 2010-07-vacances-0007.JPG
-rwxr-xr-x 1 sima78 sima78 2720329 2010-06-13 16:09 2010-07-vacances-0009.JPG
-rwxr-xr-x 1 sima78 sima78 1996609 2010-06-18 15:04 2010-07-vacances-0016.JPG
-rwxr-xr-x 1 sima78 sima78     383 2010-08-17 20:55 renom-fotos.sh
-rwxr-xr-x 1 sima78 sima78 2036985 2010-06-18 15:03 souhait0015.JPG
-rwxr-xr-x 1 sima78 sima78 1996609 2010-06-18 15:04 souhait0016.JPG
drwxr-xr-x 2 sima78 sima78    4096 2010-08-17 20:50 sous-photos

Il a donc bien modifier les fichiers commençant par « DSC_ »

Maintenant, tout ça peut être perfectionné… à vos shells.

Métadonnées EXIF d’une photo

Métadonnées Exif d'une photographieMétadonnées EXIF d’une photo.

Lorsque vous prenez une photo avec votre appareil photo numérique, il crée, en plus de l’image, une multitude de données EXIF (Exchangeable Image File format).

Ces données EXIF nous renseignent sur les propriétés de l’image (elles peuvent être modifiées, il ne s’agit donc pas de valeurs sûres):

– date,heure de la prise de vue
– marque de l’appareil
– ouverture et vitesse de prise de vue
– avec ou sans flash
– etc.

Exemple de métadonnées exif.

$ EXIF DSC_0132.JPG
Marqueurs EXIF dans'DSC_0132.JPG' (ordre des octets 'Motorola') :
---------------------+-----------------
Marqueur            |Valeur
---------------------+-----------------
Constructeur         |NIKON CORPORATION
Modèle               |NIKON D50
Orientation          |haut - gauche
x-résolution         |300,00
y-résolution         |300,00
Unité de la résolu   |pouces
Logiciel             |Ver.1.00
Date et heure        |2010:07:11 18:41:01
Positionnement YCbCr |co-situés
Compression          |Compression JPEG
x-résolution         |300,00
y-résolution         |300,00
Unité de la résolu   |pouces
Positionnement YCbCr |co-situés
Temps d'exposition   |1/250 sec.
Focale               |f/2,8
Exposure Program     |Priorité ouverture
Version d'exif       |Exif version 2.21
Date et heure (origi |2010:07:11 18:41:01
Date et heure (numé  |2010:07:11 18:41:01
Components Configura |Y Cb Cr -
Bits compressés par  |4,00
Correction d'exposit |0,00 EV
MaxApertureValue     |1,00 EV (f/1,4)
Mode de mesure       |Motif
Source lumineuse     |0
Flash                |Le flash ne s'est pas déclenché.
Longueur focale      |50,0 mm
Note du créateur     |28700 bytes undefined data
Commentaire de l'uti |
SubsecTime           |90
SubSecTimeOriginal   |90
SubSecTimeDigitized  |90
FlashPixVersion      |FlashPix version 1.0
Espace des couleurs  |sRGB
PixelXDimension      |3008
PixelYDimension      |2000
Méthode d'acquisiti  |Sonde de couleur à un capteur
Source du fichier    |DSC
Type de scène        |1
Motif CFA            |8 bytes undefined data
Rendu personnalisé   |Processus normal
Mode d'exposition    |Exposition automatique
Balance des blancs   |Balance des blancs automatique
Valeur du zoom numé  |1,00
Longueur focale dans |75
Type de capture de l |Standard
Contrôle du gain     |Normal
Contraste            |Normal
Saturation           |Normal
Netteté              |Normal
Échelle de distance  |Inconnu
InteroperabilityInde |R98
InteroperabilityVers |0100
---------------------+-----------------
Les données EXIF contiennent une vignette (8581 octets).

Révoquer une clé GnuPG

Révoquer une clé GnupgRévoquer une clé GnuPG

Je me suis rendu compte aujourd’hui qu’une de mes clés dont j’étais persuadé avoir révoqué… Elle ne l’était pas.

Je vérifie en éditant la clé que j’avais toujours avec « gpg –edit-key » et je constate qu’elle avait bien expirée mais n’était pas révoquée.

Je décide donc dans la foulée de la révoquer et d’envoyer la révocation au serveur de clés

Attention, cette méthode fonctionne que si vous avez toujours votre clé et votre mot passe…

$ gpg --edit-key moi@fai.fr
Vous avez un message similaire, avec à la fin un invité de commande (commande>)
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

La clé secrète est disponible.

pub  2048R/BEA7AAC9  créé: 2011-03-03  expiré: 2013-03-01  utilisation: SC
                     confiance: ultime        validité: expirée
sub  2048R/380CF796  créé: 2011-03-03  expiré: 2013-03-01  utilisation: E
[ expirée ] (1). trucmuche1 (trucmuche1) <moi@fai.fr>
[ expirée ] (2)  trucmuche2 <moi2@fai.fr>
[ expirée ] (3)  trucmuche3 (trucmuche3) <moi3@fai.fr>

Commande>

Entrez un serveur de clés, dans mon exemple pgp.mit.edu

Commande> keyserver
Entrez l'URL de votre serveur de clés favori: http://pgp.mit.edu/
Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « trucmuche1 (trucmuche1) <moi@fai.fr> »
clé de 2048 bits RSA, ID BEA7AAC9, créée le 2011-03-03

pub  2048R/BEA7AAC9  créé: 2011-03-03  expiré: 2013-03-01  utilisation: SC
                     confiance: ultime        validité: expirée
sub  2048R/380CF796  créé: 2011-03-03  expiré: 2013-03-01  utilisation: E
[ expirée ] (1). trucmuche1 (trucmuche1) <moi@fai.fr>
[ expirée ] (2)  trucmuche2 <moi2@fai.fr>
[ expirée ] (3)  trucmuche3 (trucmuche3) <moi3@fai.fr>

Commande>

On révoque avec la commande « revkey » et l’adresse mail que vous souhaitez révoquer, on répond aux questions…

Commande> revkey moi@fai.fr
Voulez-vous vraiment révoquer la clé entière ? (o/N) o
choisissez la cause de la révocation: 
  0 = Aucune raison spécifiée
  1 = La clé a été compromise
  2 = La clé a été remplacée
  3 = La clé n'est plus utilisée
  Q = Annuler
Votre décision ? 3
Entrez une description optionnelle ; terminez-là par une ligne vide:
>

Cause de révocation: La clé n'est plus utilisée
(Aucune description donnée)
Est-ce d'accord ? (o/N) o

Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « trucmuche1 (trucmuche1) <moi@fai.fr> »
clé de 2048 bits RSA, ID BEA7AAC9, créée le 2011-03-03

Cette clé a été révoquée le 2013-12-09 par la clé RSA BEA7AAC9 trucmuche1 (trucmuche1) <moi@fai.fr>
pub  2048R/BEA7AAC9  créé: 2011-03-03  revoqué: 2013-12-09  utilisation: SC  
                     confiance: ultime        validité: revoquée
Cette clé a été révoquée le 2013-12-09 par la clé RSA BEA7AAC9 trucmuche1 (trucmuche1) <moi@fai.fr>
sub  2048R/380CF796  créé: 2011-03-03  revoqué: 2013-12-09  utilisation: E   
[ revoquée] (1). trucmuche1 (trucmuche1) <moi@fai.fr>
[ revoquée] (2)  trucmuche2 <moi2@fai.fr>
[ revoquée] (3)  trucmuche3 (trucmuche3) <moi3@fai.fr>

Commande>

On sauvegarde et on envoie la clé de révocation.

Commande> save

$ gpg --send-keys BEA7AAC9
gpg: envoi de la clé BEA7AAC9 au serveur hkp keys.gnupg.net

Modification du 07/02/2017

La dernière commande « gpg –send-keys BEA7AAC9 » ne fonctionnait plus à cette date. J’ai donc fait :

$ gpg --export -a BEA7AAC9

Voilà, c’est fait!

Pour aller plus loin: Tutoriel de Julien Francoz

Supprimer les espaces dans les noms de fichier

Supprimer les espace et accents des fichiers à la volée en ligne de commandeC’est toujours plus simple de travailler sur des fichiers n’ayant pas d’espace dans leur nom, alors voici un petit script qui permet de remplacer à la volée les espaces par des « _ ».

#!/bin/sh
# Suppression des blancs dans les noms des
# fichiers du répertoire courant et remplacement
# par des "_" factorisés.
# Mémoire à Jeanmm pour ce script.
for a in * ;do
b=$(echo "$a" | tr " " _ | tr --squeeze-repeats _ _ )
if [ "$a" != "$b" ] ; then
echo "mv \"$a\" $b"
mv "$a" $b
fi
done

On peut améliorer le script pour remplacer également les accents (é, è, à, ô, û; ù…)

D’une manière générale, il est préférable d’éviter les accents et espaces sur les noms de fichier, c’est un principe de base.
Rappel: on rend exécutable un script par un « chmod +x » et on le lance par un « ./nom_du_script« .

Base d’une boucle (for, do, done) et d’un script: Punition de mon fils

Initiation au shell boucle (for, do, done)

punition de mon fils - initiation à la ligne de commandeLa punition de mon fils.

J’avais prévenu, certains articles sentiront le réchauffé, celui date d’au moins environ 8 ans.

« Ton lit n’est pas encore fait!?… J’en ai assez! Tu vas me copier cent fois Je fais mon lit chaque matin. »

C’est ça l’autorité du père!

Une feuille m’arrive sous le nez, avec une seule ligne à l’encre noire:

for i in $(seq 100); do echo $i" Je fais mon lit chaque matin."; done;

Que dire?… La majuscule en début de phrase est respectée, le point final aussi et en plus, les lignes seront numérotées de 1 à 100.

Alors pour ne pas en rester là, je lui dis qu’une ligne de commande, c’est bien, mais un script aurait été mieux. Il faut bien avoir le dernier mot quand on est le père.

Introduction au script

Le signe « # » signifie que la ligne ou ce qui suit le « # » est un commentaire et donc ignoré par le Shell. Exception « #! » en effet « #! » (sans espace) signifie un préfixe au nom de l’exécutable qui va effectivement traiter les lignes qui le suivent. On l’appelle « shebang » et doit être la première ligne du script.

#!/bin/bash
# boucle basique avec for, do done
for i in $(seq 100)
do
echo $i" Je fais mon lit chaque matin."
done
echo "TERMINE"

Explications :
seq: affiche le nombre séquences allant de 1 au maximum indiqué.
for: cherche des éléments restants dans une liste ou ici dans une séquence de 1 à 100 (c’est-à-dire reste-t-il des chiffres à lire avant d’atteindre le maximum?), et attend donc une réponse à ce test.
Le code de retour est égal à 0 quand il est vrai (true) il est égal à 1 quand il est faux (false).
S’il renvoie « true » il met le nombre actuel dans la liste à la variable (« i » dans notre exemple) et exécute la partie entre do et done (écrit le chiffre « i » en cours et « Je fais mon lit chaque matin. »). Il vérifie de nouveau jusqu’au renvoie « false » qui signifie que les séquences sont terminées.
A « false », « for » arrête de boucler et passe à la ligne suivant « done« , l’instruction (echo « TERMINE »).
« echo » permet d’écrire à l’écran.

Vous allez me dire « Oui, mais la phrase peut être différente en fonction de la faute et le nombre de lignes peut varier en fonction de la gravité de la faute« .

Vous avez raison, il y a deux variables qu’il faut saisir, alors on peut rajouter:

#!/bin/bash
# boucle basique avec for, do done
echo -n "Entrez votre phrase de punition : "
read phrase
echo -n "Entrez le Nb de lignes : "
read lignes
for i in $(seq $lignes)
do
echo $i" $phrase"
done
echo "TERMINE"echo

Une fois le script enregistré (par exemple sous le nom : punition.sh), il suffit de le rendre exécutable puis le lancer, ce qui donne:

$ chmod +x punition.sh
$ ./punition.sh
Entrez votre phrase de punition : Je fais mon lit chaque matin.
Entrez le Nb de lignes : 5
Je fais mon lit chaque matin.
Je fais mon lit chaque matin.
Je fais mon lit chaque matin.
Je fais mon lit chaque matin.
Je fais mon lit chaque matin.
TERMINE

Vous pouvez aussi avec « $RANDOM » choisir un nombre aléatoire de lignes.

$ echo $RANDOM

Cela renvoie un nombre aléatoire entre 0 et 32767, oui, mais avec un peu de chance, on peut donc tomber sur 0 ligne, c’est inacceptable comme punition.
Nous allons donc rajouter un « +1 ».
«Oui, mais 32767 semble exagéré!»
Alors prenons le nombre de lignes maximum « 150 », ce n’est pas trop sévère…
Et voici notre ligne:

$ echo $((RANDOM%150+1))

A vous de l’intégrer dans votre script.

Dégooglisons Internet, Dégooglisez-vous

Dégooglisons-nous Dégooglisez-vous se débarrasser de googleJe retransmets ici un mail reçu de J-L. D.

« Internet est un outil incomparable, on peut en dire long et longtemps.

Avec le temps, des entreprises se sont créées et ont proposé leurs services, souvent gratuits. Il se trouve qu’aujourd’hui, beaucoup de ces services sont devenus incontournables pour beaucoup d’entre nous car ils sont éminemment pratiques. Pas de problème jusque là.

Mais aujourd’hui, certaines entreprises ont acquis des positions de type monopolistique, c’est à dire qu’elles éclipsent les autres et sont devenues pratiquement les seules à proposer un service donné. Cela nous restreint ou nous retire la liberté de choix, et leur laisse la possibilité de choisir et d’exploiter les contreparties qu’elles veulent à ce service (publicité, exploitation de données personnelles, établissement de profils de comportement, etc.). Chacun est libre d’aimer cela , ou bien se méfier de l’ascendant pris sur nous par ces compagnies.

C’est pourquoi l’association Framasoft lance une campagne de sensibilisation et d’action pour faire changer les choses et nous aider à récupérer de nos libertés de choix.

(…)

L’appel, avec les tenants et aboutissants : dégooglisons-internet

Et la liste des choix alternatifs que propose Framasoft.

C’est très ambitieux, vraiment, pour une simple association ! Mais si de nombreux internautes font ces choix-là, ils se seront aidés à se libérer… »

Merci J-L. D.