Vi, rechercher une regexp
2012-11-07
Par exemple pour rechercher les occurences say ou play lorsque l’on édite un fchier : /say\|play
2012-11-07
Par exemple pour rechercher les occurences say ou play lorsque l’on édite un fchier : /say\|play
2012-11-07
Si le projet met à disposition un fichier autogen.sh, utilisez-le. Sinon, exécutez les commandes suivantes pour reconfigurer et recompiler le projet : autoreconf –force –install - lance aclocal, autoconf, autoheader et automake dans le bon ordre pour créer config.h.in, Makefile.in, configure et un certain nombre de fichiers auxiliaires ./configure - crée le fichier Makefile à partir du fichier Makefile.in et config.h à partir du fichier config.h.in - make
2012-11-05
Voici comment faire des tableaux et les utiliser en bash. $ cat script.bash #!/bin/bash tableau=("un élément" "et puis un deuxième" "et pourquoi pas un dernier" "pour finir") for elem in "${tableau[@]}"; do echo $elem done echo et si je ne veux que le 3e... echo "${tableau[@]:2:1}" $ ./script.bash un élément et puis un deuxième et pourquoi pas un dernier pour finir et si je ne veux que le 2e... et pourquoi pas un dernier Je suis tombé dessus en regardant les PKGBUILD de dwm comme (celui-ci)
2012-11-02
screen -t "Lancer une commande sur machine distante puis passer sur le prompt bash à la fin de celle-ci" ssh -X machine_distante.example.com "(tail -f /usr2/logs/local7.log; bash)"
2012-10-29
Grrr, apple bloque tout. Le disque Western Digital que je viens d’acheter se monte directement mais n’est visible du finder qu’en lecture seulement ! C’est rageant. Il y a des solutions tierces telles que paragon-software.com et tuxera.com mais c’est payant :( J’ai quand même fait quelques explorations et il s’avère qu’on peut bien monter le disque en lecture/écriture sans passer par la caisse : $ sudo umount /Volumes/WD1TO $ mkdir /Volumes/WD1TO $ sudo mount -t ntfs -o nodev,nosuid,noowners,rw /dev/disk2s1 /Volumes/WD1TO $ echo hello the world > /Volumes/WD1TO/example $ cat /Volumes/WD1TO/example hello the world J’ai lancé une copie de 200Go de données, je verai bien si tout passe.
2012-10-18
$ cat example.py #!/usr/bin/python import sys print >> sys.stderr, "Hello world!" $ python example.py 2> /dev/null $
On peut utiliser awk avec NR (numéro de ligne tout fichier confondus) ou FNR (numéro de ligne du fichier) : ### afficher la 3e ligne $ awk 'NR==3 { print; exit; }' /etc/passwd bin:x:2:2:bin:/bin:/bin/sh ### afficher les lignes 3 à 6 $ awk '3<=NR && NR<=6 { print; }' /etc/passwd bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh Ou bien avec sed : $ cat /etc/passwd | sed '3!d' bin:x:2:2:bin:/bin:/usr/sbin/nologin $ cat /etc/passwd | sed '3,6!
2012-10-17 | #awk #bash #remove empty lines #sed #supprimer lignes vides
Voici plusieurs solutions $ cat ~/fichier | sed -e 's/^[[:space:]]*$//;/^$/d' $ cat ~/fichier | awk NF où NF indique le nombre de champs. Si ce n’est pas une ligne vide, le nombre de champs est positif et la commande par défaut de awk est d’afficher. Ce qui équivaut à : $ cat ~/fichier | awk 'NF!=0 { print }'
2012-10-16 | #bash #line #read
Pour un fichier : $ while read line ; do echo $line; done < /etc/shells # /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen Et encore mieux, sur la sortie d’une commande :) $ while read line ; do echo $line; done < <(head -n 3 /etc/shells) # /etc/shells: valid login shells /bin/csh /bin/sh
2012-10-15 | #awk #base #for
$ cat file.txt Firstname;Lastname John;Doe Jane;Doe Paul;Smith #end of file with a ; character $ for b in b b1 b2; do awk -F ';' -v base=$b -v fmt='use %s; insert into Users values ("%s", "%s");\n' 'NR>=2 && /;/ && !/^#/ {printf fmt, base, $1, $2}' file.txt done use b; insert into Users values ("John", "Doe"); use b; insert into Users values ("Jane", "Doe"); use b; insert into Users values ("Paul", "Smith"); use b1; insert into Users values ("John", "Doe"); use b1; insert into Users values ("Jane", "Doe"); use b1; insert into Users values ("Paul", "Smith"); use b2; insert into Users values ("John", "Doe"); use b2; insert into Users values ("Jane", "Doe"); use b2; insert into Users values ("Paul", "Smith"); awk n’est pas si compliqué que ça lorsque l’on comprend la philosophie…