jeudi 27 septembre 2012

vi et les macros

Via un petit exemple...


ggqqdwj@qq@q

Permet de supprimer le premier mot de chaque ligne du buffer.

  • gg permet d'aller en début de fichier
  • qq démarre l'enregistrement de la macro de nom q (la 2e lettre)
  • dwj supprime le premier mot et descend de ligne
  • @q appelle la macro q
  • pour revenir au mode de vi "normal"
  • q pour terminer l'enregistrement de la macro
  • @q pour appeler la macro

mardi 25 septembre 2012

bash, swap de 2 fichiers

Le code suivant à ajouter au bashrc permet de swapper ou plutôt échanger 2 fichiers rapidement.



Et son exemple :



mv, tempfile

bash, mv en masse

Il y a quelques années, j'avais écris un petit programme qui permettait de changer l'extension de fichiers.

A cette époque, je ne connaissais pas la commande mmv (comprendre "mass"mv) :



A noter : cette commande permet aussi de supprimer l'extension des fichiers...

vi

Depuis ma formation "coder au front end", je me mets à vi...

Voici une liste de ressources bien utiles pour s'y mettre :

Un aide-mémoire textuel : http://www.lagmonster.org/docs/vi2.html


Un aide mémoire graphique complet : http://michael.peopleofhonoronly.com/vim/vim_cheat_sheet_for_programmers_screen.png


Un tutoriel par aides-mémoire graphiques progressifs : http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html



Un petit jeu online pour apprendre de manière ludique : http://vim-adventures.com/



La chose que je n'avais pas saisi c'est que l'on peut opèrer par "commande" "mouvement".

Ainsi, c2f> supprime le texte jusqu'au 2e > inclus et met l'utilisateur en mode édition.

On peut aussi couper un texte dans des cases mémoires différentes et réutiliser cette case par la suite.

Ainsi "ac2f> coupe le texte jusqu'au 2e > inclus et met l'utilisateur en mode édition. Le texte coupé est dans la case a. Par la suite pour réutiliser le contenu de la case a, on fait "ap pour coller par exemple.

C'est le petit truc qui me manquait pour mieux comprendre vi je pense...

java, déboires d'encoding...

Il y a quelques temps, j'ai eu de petits problèmes d'affichage d'accents sur une IHM d'un fichier qui était fourni par une autre appplication.

Le charset n'était pas le bon.

Il a fallu que je force l'écriture du charset et sa lecture.

Pour l'écriture :



Pour la lecture :




java, encoding, charset, utf-8, iso-8859

dimanche 23 septembre 2012

Linux, niveau de la baterie

Une petite commande pour connaitre le niveau de la baterie...



Cela peut être utile lorsque l'on est en mode console sur son portable...

acpi

vendredi 21 septembre 2012

bash, tester si un programme est installé

Pour tester si un programme est installé, on peut utiliser la commande which
de différentes manières.

La première en comptabilisant le nombre de lignes retournées.



La seconde en utilisant le code de retour de la commande.



which, apt-get install, sudo

La seconde est plus lisible, pas besoin de décrypter.

C'est seulement dommage qu'on ne puisse pas ajouter un paramètre à la commande pour ne pas écrire sur la sortie standard et que l'on soit obligé de rediriger dans /dev/null.

A chacun sa préférence.

jeudi 20 septembre 2012

Linux Mint Cinamon, touchpad et défilement à 2 doigts

Le défilement à 2 doigts sur le touchpad ne fonctionnait pas.

J'ai cherché dans les menus et je n'ai rien vu.

Sur internet, des pages parlent de synclient.

Effectivement, la ligne suivante
$ synclient VertTwoFingerScroll=1

permet de faire fonctionner le défilement à 2 doigts. Mais malheureusement, la modification n'est pas persistente après un redémarrage...

Pour la rendre persistente j'ai vu plein de docs ainsi que la page

http://mixeduperic.com/ubuntu/ubuntu-1004-how-to-setup-two-finger-scroll-on-laptop-touch-pad.html

Cette page peut donner des idées si des choses sont à effectuer lors de l'ouverture de la session X.

Je n'en ai pas eu besoin car j'ai trouvé bizarre de faire tout cela.

Alors en recherchant encore dans les menus, j'ai vu :


Sauvé, tout marche de manière simple :)

Petit logiciel pour copier puis modifier une partie de l'écran

Le logiciel shutter permet de sélectionner une partie de l'écran pour créer une image. On peut alors l'éditer afin de rajouter du texte, des flèches, flouter...

Le logiciel est simple et efficace.

Que demande le peuple !

26 oct 2016 : Sous Mint-17.3, j'ai dû installer les packets libgoo-canvas-perl et gnome-web-photo pour pouvoir bénéficier de l'outil interne d'édition des images capturées.

mardi 18 septembre 2012

fitnesse, Testing was interupted and results are incomplete

Sur un de mes projets, la suite fitnesse s'interrompt en plein milieu et affiche un encart "Testing was interupted and results are incomplete".



Auparavant, je n'avais pas ce problème. Je ne sais pas si c'est une restauration système suite à un crash disque qui en est la cause mais quoi qu'il en soit, la seule manière de contourner le problème a été de renommer les suites ou/et les pages pour que la taille du chemin soit moins importante.

Et là, miracle : ça fonctionne !!!

Mystères et boules de gomme...

lundi 17 septembre 2012

bash, stdin et stdout

Un petit rappel sur les redirections.

Le document http://tldp.org/LDP/abs/html/io-redirection.html#IOREDIRREF est très bien aussi.



bash, stdout, stderr, write, io, redirections

vendredi 14 septembre 2012

web, changer le style css du code pastebin affiché dans votre blog

Si vous affichez du code déposé sur pastebin et que les couleurs ne conviennent pas car elles ne sont pas en accord avec les couleurs de votre blog, il est possible de les personnaliser...

Dans mon cas, j'ai ajouté le code suivant



dans un gadget du blog que vous consultez actuellement (cf Conception>Mise en page).

Cela a pour effet de changer le css des éléments trouvés au chargement de la page.

jeudi 13 septembre 2012

bash, mv bluffant...

Lors d'une formation, j'ai vu cela... Ca m'a bluffé :)



bash, mv, remove version

mercredi 12 septembre 2012

web, utiliser pastebin et permettre une recherche sur son blog

Inclure du code déposé sur pastebin c'est bien... Malheureusement, le moteur de recherche du blog ne recherche pas dans le contenu déposé sur pastebin.

Pour permettre une recherche, on peut positionner des mots clés "invisibles" dans sa page.

pastebin, mot clé, search engine, moteur de recherche

Le moteur de recherche les verra et remontera l'article :)

mardi 11 septembre 2012

bash, séquences

Pour obtenir une suite de nombre qui font partie d'une séquence, il y a la commande seq. Il existe aussi une manière de le faire directement en bash en utilisant une expression du genre {x..y[..inc]}.
$ for i in {1..30..2}; do echo $i; done
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
$ seq 1 2 30
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
Attention toutefois, si les bornes sont définies dans des variables, il faudra un petit coup d'évaluation :
$ for i in $(eval echo "{$a..$b}"); do echo $i; done
1
2
3
4
5
6
7
8
9
10

bash, écrire sur stderr



redirection

vendredi 7 septembre 2012

Linux Mint Cinnamon, positionner la luminosité en ligne de commande

Il est possible d'utiliser les fichiers
  • /sys/class/backlight/acpi_video0/max_brightness
  • /sys/class/backlight/acpi_video0/brightness
afin de modifier la luminosité. Le script suivant prend un numérique (pourcentage entre 0 et 100) et modifie le fichier /sys/class/backlight/acpi_video0/brightness en conséquent.


Toutefois, pour exécuter ce fichier, il faudra être root (sudo ou SUID bit positionné sur l'exécutable une fois compilé).

Note: après rédaction de ce post, j'ai découvert que le paquet xbacklight met à disposition un utilitaire du même genre.
Il permet la même chose sauf en mode console...

jeudi 6 septembre 2012

bash, cas conditionel suivant la présence ou non d'un texte dans un fichier

Cela se fait simplement avec un grep...



if, grep, exit, status, bash

Bien que le test semble inversé, il est correct car la sortie du grep avec un status à 0 est un succès.

Le paragraphe "Conditional Shell Control Structures" de la page http://teaching.idallen.com/dat2330/04f/notes/exit_status.txt l'explique très bien.

bash, supprimer les espaces en début de ligne

Pour supprimer les espaces en début de ligne...



ou alors avec awk



awk, space, espace, trim, strip

bash, supprimer les tags html avec sed...

Dans certains scripts bash, on peut souhaiter supprimer les tags html d'un flux ou d'un fichier. Pour cela on peut utiliser la commande sed.



sed, tag, html

mercredi 5 septembre 2012

bash, récupérer le code de retour d'une commande au travers d'un pipe

L'exemple se passe de commentaires !
$ ls toto | head -n 1
ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
$ echo $?
0
$ set -o pipefail 1
$ ls toto | head -n 1
ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
$ echo $?
2
Pratique dans le cas d'un "curl $url | sed ... > $output" pour savoir si une erreur est remontée.

SUID bit

L'utilisation du bit SUID permet d'exécuter des scripts en se faisant passer pour un autre utilisateur. Cela peut être pratique sur sa machine personnelle pour appeler un script qui modifie la luminosité de l'écran... Mais aussi dangereux si la machine est utilisée par d'autres utilisateurs...

Attention, après recherche le bit suid ne fonctionne pas sur linux pour les scripts bash... Cela explique bien des choses que je ne comprenais pas !
$ cat hello.c
#include
#include

int main(int argc, char **argv[]) {
  printf("hello getuid=%d geteuid=%d\n", getuid(), geteuid());
}
$ gcc hello.c -o hello && sudo chown root:root hello && sudo chmod u+s hello && ls -l hello
-rwsr-xr-x 1 root root 8484 2012-09-05 13:43 hello
$ ./hello 
hello getuid=1000 geteuid=0
$ sudo chmod u-s hello
$ ./hello 
hello getuid=1000 geteuid=1000

mardi 4 septembre 2012

Linux Mint Cinnamon & Samsung ML-1865 (2)

En installant l'imprimante, le daemon smfpd se met en place et démarre automatiquement à chaque allumage.

Ce daemon n'est utile que dans le cas où l'imprimante Samsung est connectée à un port parallèle... Ce qui n'est pas le cas de ma ML-1865 !

Or ce daemon est gourmand en ressources et donc la batterie du portable diminue plus vite :(

Pour l'économiser, editer le fichier /etc/inid.d/smfpd et décommenter la ligne "exit 0". Le programme se terminera aussitôt lancé. Cette modification sera prise en compte au prochain démarrage.