Batches : exemples ImageMagick et renommer des fichiers
N’hésitez pas à lire tout le tutorial et prendre les exemples, ils sont pas mal :
N’hésitez pas à lire tout le tutorial et prendre les exemples, ils sont pas mal :
J’ai eu l’information ici : http://cygwin.com/cygwin-ug-net/using-utils.html#mount
Faire un mount permanent :
Editer le fichier /etc/fstab
Y ajouter le lien vers le répertoire qui a des espaces :
"C:/mon projet/mon sous projet" /monprojetmonsousprojet ntfs binary,posix=0,user,noumount,auto
Lancer un nouveau shell pour que le "mount" soit fait automatiquement
# make bash autocomplete with up arrow bind '"\e[A":history-search-backward' bind '"\e[B":history-search-forward'
Voici ce qu’il m’est arrivé : on a changé mon serveur d’endroit et de là, j’avais le message :
Agent admitted failure to sign using the key.
La solution trouvée qui a fonctionné est ici.
Je mets en gras les ordres shell à faire pour que ça fonctionne :
olivier@local-host$ ssh-agent $SHELL
olivier@local-host$ ssh-add -L
The agent has no identities.
olivier@local-host$ ssh-add
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)
olivier@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/olivier/.ssh/id_rsa
olivier@local-host$ ssh-copy-id -i remote-host
olivier@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[Note: This has added the key displayed by ssh-add -L]
Peut être avez-vous déjà rencontré ce problème : vous faites toute une base de données en utf-8.
En suivant les recommandations ici, c’est facile. Le seul problème, et ils ne donnent pas de solution, c’est que lorsqu’on fait les requêtes, les résultats sont bien renvoyés en utf-8 mais il y a un décalage s’il y a des accents :
Comment faire pour éviter ce décalage ? Facile. La solution ici.
En fait dans votre fichier de configuration, il faut aussi configurer le client, pas uniquement le serveur.
Il faut ajouter la directive « default-character-set = utf8 » dans le fichier de configuration :
sudo vim /etc/mysql/my.cnf [client] port = 3306 socket = /var/run/mysqld/mysqld.sock default-character-set = utf8
Et puis relancer le service :
sudo service mysql restart
Et voici le résultat : tout est rentré dans l’ordre :
J’ai été plus loin dans l’automatisation de Gimp.
J’ai voulu reprendre mes deux articles qui parlaient de Script-fu : le premier pour débuter ici, et le second qui passe à peine à la vitesse supérieure, qui explique l’assignation des variables ici.
Mais comme je suis un grand fan de Python et que tout a été fait pour pousser Python en avant dans Gimp, j’en ai profité.
Trois heures de travail avant d’y arriver.
On parle de script Python, mais ce sont des plugins.
Donc, lorsqu’on les installe, il faut les mettre dans le répertoire ~/.gimp/plug-ins/
et non pas ~/.gimp/scripts/
.
Ils doivent être exécutables. Donc :
chmod +x ~/.gimp/plug-ins/monscript.py
Enfin, allez chercher des exemples ici : http://registry.gimp.org/
Vous les installez et vous les lancez à partir de là vous avez tout ce qu’il vous faut.
Si vous avez lu ces trois informations avant de vous lancez dans l’aventure je vous aurais probablement fait gagner au moins une demi-journée.
Enfin, pour que la ligne de commande fonctionne sur les dernières versions de Gimp (2.6.8) à l’heure de l’écriture de cet article, il y a plein d’articles obsolètes sur le net. Je vais encore vous faire gagner des heures de recherche :
Voici un exemple complet d’un lancement en ligne de commande qui fonctionne :
gimp -i --batch '(python-fu-batch-to-transparent-indexed RUN-NONINTERACTIVE "/home/olivier/Bureau/france.php.png" "/home/olivier/Bureau/france.2.php.png")' -b '(gimp-quit 0)'
Et voici mon plugin tout simple que j’ai codé en 15 minutes, mais avant d’arriver là j’ai cherché pendant six heures…
Cliquez ici pour le télécharger.
Ce plugin transforme une image PNG en la même image, mais en transparente et en couleurs indexée.
Il n’est pas 100% terminé, car la couleur de transparence est codée en dur, mais il fonctionne très bien pour peu que votre couleur soit le blanc 🙂
Pour ce qui est de la méthode, je me suis très fortement inspiré de ce site.
Si je vous ai aidé n’hésitez pas à me laisser un message !
Il arrive parfois que lorsqu’on fait un scp, ça ne fonctionne pas, et on peut lire quelque chose comme :
>> scp root@olivierpons.fr:/var/www/html/pysoko.tar.bz2 .
root@olivierpons.fr's password:
C0644 129502 pysoko.tar.bz2
>>
Dans cet exemple, je veux récupérer le fichier :
pysoko.tar.bz2
qui est sur le PC distant dans le répertoire
/var/www/html/
sachant que le PC distant est nommé :
olivierpons.fr
.
En fait le problème est super simple : lorsque le programme scp
se connecte pour faire la copie, un shell du distant nommé olivierpons.fr
est ouvert, et par conséquent tout ce qu’il y a dans la configuration du shell est exécuté, donc tout ce qu’il y a dans le fichier de configuration du shell .bashrc
.
Pour faire simple, si vous avez fait un « echo
» quelque part dans le fichier de configuration du shell .bashrc
, changez le par tty -s && echo "
.
L’explication est dans ce site génial, qui explique tout sur le SCP, encore mieux que mon article, qui sort pourtant numéro un sur google France lorsqu’on tape scp linux
…
Le monde est injuste !
Super facile : l’outil tr
.
Exemple concret : je veux lister les fichiers d’un répertoire et tous les passer à vim
, par exemple pour y appliquer une macro.
Je les liste à la main du genre :
~/ # find ws -type f
ws/jsDecision.php
ws/jsDossierDocuments.php
ws/jsInfosEmprunt.php
ws/jsInternetDocumentDossierEditer.php
ws/jsListeFormulesGaranties.php
ws/jsLogin.php
Il suffit d’ajouter | tr '\r\n' ' '
(qui signifie « transforme tous les retours chariots en espaces ») :
~/ # find ws -type f | tr '\r\n' ' '
ws/jsDecision.php ws/jsDossierDocuments.php ws/jsInfosEmprunt.php ws/jsInternetDocumentDossierEditer.php ws/jsListeFormulesGaranties.php ws/jsLogin.php
Depuis que j’ai vu ces vidéos, je sors avec plein de femmes, j’ai plein d’argent, et je suis aimé de la France entière.
Si vous parlez couramment l’Anglais, il faut absolument que vous voyez les vidéos de ce qu’il est possible de faire avec vim et qu’on n’a pas forcément en tête.
Laissez d’autre sites en commentaire si vous avez des liens intéressants. Je n’hésiterai pas à les valider !
Ci-suit une série d’expressions régulières qui fonctionnent sous vim, et dont j’ai fait la traduction en langue Française, afin que vous puissiez comprendre les subtilités :
/^ \+$
: rechercher toutes les lignes qui commencent et finissent par une suite de minimum un ou plus d’espaces (un antislash avant le « +
»)/^ *$
: rechercher toutes les lignes qui commencent et finissent par une suite de minimum zéro ou plus d’espaces (pas d’antislash avant le « *
»)/^ \*$
: rechercher toutes les lignes qui commencent par un espace et finissent par le caractère « * » (un antislash avant le « *
»)/^ \{1,1\}$
: rechercher toutes les lignes qui contiennent un et un seul espace (ne pas oublier l’antislash avant les « {}
»)Et maintenant une expression complexe qui m’a été très utile :
Si vous tapez exactement cela :
:%s/\($this->[a-z]\+\)\(_\)\(.\)/\1\u\3/g
Vous aurez tous les ordres du type :
$this->Sejour_deb
Qui seront transformés en :
$this->SejourDeb
Très très utile.
Explication :
:%s/\($this->[a-z]\+\)\(_\)\(.\)/\1\u\3/g
:
= exécuter un ordre ;
%
= appliquer sur la totalité du document ;
s
= appliquer sur la chaine (ici ligne par ligne) ;
\($this->[a-z]\+\)
= groupe qui a $this-> puis une série de lettres ;
\(_\)
= groupe qui a un tiret bas ;
\(.\)
= groupe qui contient un caractère quel qu’il soit ;
On voit qu’il y a trois groupes, ils sont accessibles via antislash puis le numéro du groupe, exemple : »\1
« , et le cas concret :
/
= remplacer par… ;
\1
le groupe numéro 1 ;\u
mettre en majuscule ;\3
le groupe numéro 3 ;/g
faire toutes les occurrences trouvées.