awk c’est cool aussi

Pour récupérer les fichiers manquant d’un dossier de travail svn

svn st | grep '!' | awk -F / '{print $2}'

( Merci à Nebojsa, docteur ès awk )

pour récupérer une partie particulière d’une ligne d’un fichier, par exemple une ligne qui contient define(‘DB_USER’,’moimeme’);

cat dir/subdir/config.inc.php | grep DB_USER | awk -F \' '{print $4}'

Et pour les supprimer donc

for i in `svn st | grep '!' | awk '{print $2}'`; do svn rm $i; done

euh… ou sinon plus simple :

svn rm `svn st | grep '!' | awk '{print $2}'`

ou supprimer les fichiers modifiés en trop, puis revert, sauf ceux du dossier modules

svn rm `svn st | grep '?' | grep -v '/modules' | awk -F / '{print $2}'` && svn revert `svn st | grep '^M' | grep -v '/modules' | awk -F / '{print $2}'`

FirePHP

Bonjour à tous,

En PHP, la manière la plus simple de trouver une erreur dans un script ou de vérifier la valeur d’une variable (tant que c’est pas une erreur de syntaxe !) c’est d’envoyer quelquechose vers l’affichage (print_r, echo, var_dump). Seulement ça fait vachement moche, les informations sont incomplètes, le plus souvent tout s’affiche en haut de la page et on met beaucoup de temps à retrouver l’erreur.
Continuer la lecture de « FirePHP »

ls, c’est puissant quand même !

Il faut savoir que je suis dans l’univers de Linux depuis quelques temps déjà, mais je commence à y être à l’aise que depuis peu.. et encore !

Depuis quelques jours, j’ai besoin de connaitre plus précisément que d’habitude le status de mes fichiers.. Revoyons donc ensemble la commande ls, et surtout les options disponibles !

Tout d’abord, si vous avez déjà eu des cours sur linux, vous savez que :
ls liste les fichiers du répertoire courant
_ls -l liste les fichiers avec pleins d’information utiles :
* le type (un répertoire ? un fichier ? un lien symbolique? autrechose? voir « man ls » ou « info ls » )
* les droits associés à ce fichier (lecture/écriture/exécution)
* le nombre de « lien matériel » de ce fichier : ce qui s’oppose au lien symbolique, c’est le lien matériel
* le propriétaire et son groupe
* sa taille (en octet)
* la date de création (ctime)
* le nom du fichier
ls -a va afficher tout les fichiers, y compris les fichiers cachés (c’est facile, ce sont ceux qui commencent par un point ).

Mais ce qu’on ne nous dit pas, c’est les options super utiles, associées à -l !
-A va afficher tout les fichiers cachés, sauf « . » et « .. » qui correspondent respectivement au répertoire courant et à son parent.
-o va afficher la liste de la même manière que ls -l, sauf qu’on affichera que le nom du propriétaire (et pas son groupe)
-h affichera la taille du fichier en octet ou plus si affinité, c’est à dire affichage de kiloOctets et autre (ce qui est quand même pratique)

Maintenant, ls -la est chez moi remplacé par ls -HAo

Opérations sur les chaine dans un shell

Mon problème est le suivant : comment récupérer la dernière ligne d’un fichier, qui contient une date dans un certain format, et la transformer en un autre format que je vais pouvoir exploiter. Le tout pour un script linux bien évidemment.

lastline=`tail monfichier.log` -n1
# date présente : dd/mm/yyyy hh/ii/ss . A changer en yyyy-mm-dd hh:ii:ss
gooddate=`echo "$lastline"|sed "s/\([0-9]{2}\/[0-9]{2}\/[0-9]{4} [0-9]{2}\/[0-9]{2}\/[0-9]{2})\)//"`

Renommer des fichiers en masse

Pour changer en masse l’extension des fichiers. par exemple, .html en .php
list=ls -1 *.html
for i in list; do mv « $i » « ${i%.html}.php »

Changer un préfixe :
list=ls -1 hello*
for i in list; do mv « $i » « cocorico_${i#hello_} »

${variable%pattern} : supprime le pattern (en regexp) de la fin de la variable.
${variable#pattern} : la meme chose mais pour le début.