Je garde ça sous le coude pour essayer à l'occasion.
Emission sur l'Union Européenne diffusée sur Le Média.
Les invités :
Une fois la première partie passée, la suite est assez savoureuse. Les questions du présentateur sont tellement inattendues et bienvenues, que les représentants de FI et UDI ne savent plus quoi inventer pour noyer le poisson.
Si on pouvait avoir le même genre de questions sur les média télévisuels, le débat serait sans nul doute d'une autre teneur !
La nature a horreur du vide. Cela se vérifie depuis quelques années déjà en Afrique. Les anciennes puissances coloniales ont, pour l’essentiel, déserté le continent.
[...]
Disposant désormais d’une base militaire permanente à Djibouti, ancienne chasse gardée française, aux côtés de l’armée américaine, la Chine est en train, peu à peu de se tailler un Empire. Un Empire commercial, financier, agricole, conquis sans déploiement de troupes, sans effusion de sang. Un Empire post-moderne en somme.
Mais il n’est pas certain que les Africains aient lieu de se réjouir de cette douce emprise. Car les Chinois suscitent déjà de fortes réactions de rejet en Algérie, en Afrique de l’Ouest. Aussi peu respectueux de l’environnement que des populations locales, ils s’imposent, avec le soutien des élites locales. La Françafrique est morte, ou moribonde. La Chinafrique ne sera pas nécessairement plus vertueuse, ni plus émancipatrice.
Asselineau en parle depuis plusieurs années dans ses conférences. Il va vraiment falloir comprendre que l'Union Européenne et ses contraintes géopolitiques sont un poison mortel pour la France. Un jour pas si lointain, on se retrouvera vraiment à poil, et il sera trop tard pour remédier aux méfaits commis ces dernières décennies. On n'aura plus d'amis nulle part. Et nous seront les nouveaux clochards du monde.
Depuis quelques temps, lorsque je lance une vidéo sur Youtube, mon processeur s'affole, et ses huits coeurs tournent au minimum à 25%, avec un coeur à 100%.
Etant donné que ça me réchauffe sérieusement les cuisses, je tente un truc : je vais désactiver l'accélération matérielle (et toc!). Je verrai ce que ça donne.
Pour l'avoir une fois pour toute au lieu de chercher à chaque fois. L'infographie est bien, mais je remet la chronologie ici en toutes lettres :
Pour le prochain marathon de Babylon 5 on sera prêt Antichesse !
Pour tester si une page existe sans la télécharger :
#!/bin/bash
# Renvoie "true" si la page passée en argument existe.
# @param $1 : l'URL de la page dont on veut tester l'existence.
# @return true si la page existe, false sinon.
is_URL_real()
{
local page_exists
page_exists="false"
if [[ `wget --server-response --spider "$1" 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
page_exists="true"
fi
echo "$page_exists"
}
is_URL_real "$1"
Ce qui donne à l'exécution :
./test_URL.sh "https://www.qwant.com"
true
Bon, ça remet le personnage au rang d'être humain imparfait.
C'est la première vidéo de cette chaîne que je regarde, mais je l'ai trouvée très bien faîte et hautement informative.
Mon passage préféré ? Apprendre que le God Save The Queen est une adaptation d'un Te Deum (écrit par Jean-Baptiste Lully) en l'honneur de Louis XIV pour fêter son rétablissement à la suite de l'ablation de sa fistule anale.
En voilà une bonne nouvelle (pour le Royaume-Uni en tout cas) !
Et cependant on peut sentir la frustration de l'auteur de l'article (même s'il se lit en moins d'une minute). La frustration menant au mensonge. Par exemple avec le chapô de l'article :
Theresa May, qui avait réussi à faire voter la loi au Parlement britannique la semaine dernière, doit maintenant trouver un accord avec Bruxelles sur les conditions de cette sortie.
C'est faux bien entendu !
Theresa May ne doit pas trouver un accord avec l'UE avant Octobre. C'est même précisément l'inverse. Puisque l'article 50 alinéa 2 du TFUE stipule que les traités cessent d'être applicables deux ans maximum après la notification de retrait de l'Union.
Mais bon, c'est France Info. La propagande ça les connaît.
Bref, le RU sort donc de l'UE le 29 mars 2019 !
A propos des variables de type local en Bash.
Tout d'abord, la sécurité.
Afin d'écrire plus rapidement, on se retrouve souvent à déclarer et initialiser la variable en même temps :
local var="plouf plouf"
Sauf qu'en faisant ça, l'ordre d'exécution est le suivant :
Ce qui signifie que la variable reste accessible pendant un instant au niveau global. Il faut donc mieux faire la déclaration et l'instanciation en deux temps :
local var
var="plouf plouf"
Ce qui m'amène au deuxième point. Une fois qu'une variable a été déclarée local, il n'est pas besoin de remettre le mot-clef local à chaque instanciation. Ainsi, si je considère le script suivant :
#/usr/bin/env bash
ma_fonction()
{
local var = "ALEX"
echo "$var"
var="TOM"
echo "$var"
}
ma_fonction
echo "<$var>"
La sortie sera :
ALEX
TOM
<>
Un moyen de créer des répertoires plus rapidement.
Je veux créer des répertoires ayant un nom basé sur le même modèle. Par exemple REPERTOIRE.ABC.08.
Pour créer tous les répertoires de 08 à 14, je peux utiliser une boucle for dans laquelle un compteur s'incrémente dans une string, laquelle est passée à mkdir.
Ou alors je peux utiliser une capacité de la commande mkdir :
mkdir REPERTOIRE.ABC.{08..14}
# Ce qui me donne :
ls -a
REPERTOIRE.ABC.08
REPERTOIRE.ABC.09
REPERTOIRE.ABC.10
REPERTOIRE.ABC.11
REPERTOIRE.ABC.12
REPERTOIRE.ABC.13
REPERTOIRE.ABC.14
Je peux utiliser une suite de lettres :
mkdir REPERTOIRE.{a..f}
# Ce qui me donne :
ls -a
REPERTOIRE.a
REPERTOIRE.b
REPERTOIRE.c
REPERTOIRE.d
REPERTOIRE.e
REPERTOIRE.f
Je peux utiliser plusieurs "suites" dans le même motif. Attention toutefois, car toutes les combinaisons seront créees :
mkdir REPERTOIRE.{a..c}_{0..3}
# Ce qui me donne :
ls -a
REPERTOIRE.a_0
REPERTOIRE.a_1
REPERTOIRE.a_2
REPERTOIRE.a_3
REPERTOIRE.b_0
...
REPERTOIRE.c_3
Le bonus de fin : je peux parcourir une suite de nombres avec un pas supérieur à 1 :
# Pour un pas de 2
mkdir REPERTOIRE.{1..7..2}
# Ce qui me donne :
ls -a
REPERTOIRE.1
REPERTOIRE.3
REPERTOIRE.5
REPERTOIRE.7
Edit : si au lieu d'une suite de caractères je veut utiliser une liste de valeurs prédéfinies je peux utiliser la virgule :
mkdir dossier_{toto,1,007,AZ}
# Ce qui me donne
ls -a
dossier_toto
dossier_1
dossier_007
dossier_AZ
Pour une arborescence, j'utilise aussi l'option -p :
mkdir -p parent{1..4}/enfant{bill,bob,ben}
# Ce qui me donne
tree
.
├── parent1
│ ├── enfantben
│ ├── enfantbill
│ └── enfantbob
├── parent2
│ ├── enfantben
│ ├── enfantbill
│ └── enfantbob
├── parent3
│ ├── enfantben
│ ├── enfantbill
│ └── enfantbob
└── parent4
├── enfantben
├── enfantbill
└── enfantbob
Une fonctionnalité intéressante de git pour récupérer un fichier dans l'état dans lequel il était au moment d'un certain commit. La syntaxe est la suivante :
git cat-file -p <NUMERO_DU_COMMIT>:chemin/du/fichier > fichier_de_sortie
Par exemple :
source/scripts/super_script.sh;9c77d13cbab36a1d60fdf6024af90cecd1e54c8a;git cat-file -p 9c77d13cbab36a1d60fdf6024af90cecd1e54c8a:source/script/super_script.sh > recovery.sh
Note : le chemin du fichier s'écrit relativement à la racine du répo.
Trier un fichier selon la colonne souhaitée.
Soit le fichier suivant, écrit en 3 colonnes :
Tend Jean 23
Car Thierry 34
Tatouille Sarah 12
Pour trier le fichier selon la deuxième colonne (alphabétique donc) :
cat mon_fichier | sort -k 2,2
# Ce qui donne :
Tend Jean 23
Tatouille Sarah 12
Car Thierry 34
Pour le trier selon la troisième colonne (ce sont des nombres) :
cat mon_fichier | sort -k 3,3 -n
# Ce qui donne :
Tatouille Sarah 12
Tend Jean 23
Car Thierry 34
Explication de la commande :
Pour mémoire.
Comment extraire la n-ème ligne d'une fichier en bash?
Soit le fichier suivant :
Ligne 01
Ligne 02
Ligne 03
Ligne 04
Ligne 05
Ligne 06
Ligne 07
Avec l'outil sed :
# J'extrais la 4eme ligne du fichier
cat mon_fichier | sed "4q;d"
# Ce qui donne
Ligne 04
# J'extrais la 67eme ligne (avec une variable)
var="67"
cat mon_fichier | sed "${var}q;d"
Aujourd'hui je suis tombé sur ça :
for i in $(seq 0 $var)
do
echo "bla bla bla"
done
Il s'agit d'une des multiples façons d'utiliser la boucle for en bash. Sauf que :
Depuis la version 4 de bash qui, je le rappelle, est sortie en février 2009, il existe une nouvelle façon d'utiliser la boucle for :
# Pour i de 1 à $var par pas de 1
for (( i=1; i<=$var; i++ ))
do
echo "bla bla bla"
done
Ou encore :
# Pour i de 3 à 47 par pas de 4
for i in {3..47..4}
do
echo "bla bla bla"
done
Il serait temps de s'y mettre !
Le répo contenant les données à l'origine de cette carte montrant qui possède quel média.
Afin d'éviter de créer des scripts troués, une bonne pratique est d'utiliser le double-tiret -- pour marquer la fin des options d'une commande bash.
En effet, supposons que je veuille lister les fichiers d'un répertoires. Rien n'empêche qu'un répertoire s'appelle -o et active donc l'option associée. Pour signifier à la commande ls d'ignorer ce qui suit mes options je procède ainsi :
# Mon répertoire s'appelle "-o -a"
var="-o -a"
# J'ajoute un double-tiret pour signifier la fin des options
ls -l -- "$var"
# Une fois la variable évaluée, la commande ressemblera à ceci
ls -l -- -o -a
# Et seule l'option -l sera prise en compte
Cette convention est reprise par toutes les commandes built-in de bash (+ d'autres shells comme csh et sh) sauf une poignée (true, false, echo et eval).
J'avais fais quelques tests il y a quelques mois, pour voir ce qu'on pouvait faire en "hackant" les options des commandes. Pour ls c'est ennuyeux. Mais il suffit d'imaginer les conséquences avec rm par exemple ...
Note à moi-même : il faudra que j'essaie getopt pour créer un parseur d'options en bash.
La même chose mais avec l'outil sed cette fois.
Je veux donc afficher ce qui se trouve entre deux motifs, mais en utilisant des variables à la place des motifs. J'utilise le fichier suivant :
Ce fichier est un fichier particulier
car il contient un passage sensible situé
entre MOTIF_01 et
une balise
de fin
appelée MOTIF_02. Il s'agit d'extraire
ce qui se situe entre les deux.
Pour cela j'utilise sed de la façon suivante :
# Le cas classique avec MOTIF_01 et MOTIF_02
cat mon_fichier | sed -n "/MOTIF_01/,/MOTIF_02/p"
# Ce qui me donne
entre MOTIF_01 et
une balise
de fin
appelée MOTIF_02. Il s'agit d'extraire
En fait, cela me donne ce qui se trouve entre les lignes comprenant les motifs, en plus des lignes comprenant les motifs. Après ça, un substitution avec sed "s///" finit le travail.
# En utilisant des variables (il suffit de les ajouter aux motifs)
cat mon_fichier | sed -n "/MOTIF_01$VAR_01/,/$VAR_02/p"