completion automatique dans un terminal ?

Exemple pour compléter avec un nom de répertoire dans un dossier particulier :

Pour mon script « prepareDirFromWeb » qui se trouve dans mon dossier « /home/michael/bin » , je créé le fichier /etc/bash_completion.d/prepareDirFromWeb qui contient le code suivant :

# bash completion for Debian apache2 configuration tools
# $Id: apache2,v 1.1 2005/03/16 22:51:19 guillaume Exp $

_prepareDirFromWeb()
{
  local cur prev opts dirList
  COMPREPLY=()
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  opts="--help --verbose --version"
  dirList="`ls -d /var/www/*/ | awk -F / '{print $5}' `"
  if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    return 0
  else
    COMPREPLY=( $(compgen -W "${dirList}" ${cur}) )
    
  fi  
}
complete -F _prepareDirFromWeb prepareDirFromWeb

[Message Type] Désinscription à du spam

Pour rappel, il est fortement déconseillé d’utiliser les liens de désinscription situés au bas des pourriels. Le traitement est automatique et au lieu de vous désinscrire, informe le serveur d’envoi que l’adresse existe bien (et que vous prenez bien le temps de lire le message).

A noter que bien souvent, les envois de newsletter sont sous traités, et donc les entreprises ne sont pas toujours au courant de ce qui se passe.

Voici donc un petit courriel type à envoyer à ces entreprises (pour gentiment les mettre au courant de la mauvaise publicité dont il font l’objet).

Bonjour,

je suis l’heureux propriétaire de l’adresse de messagerie *****

L’envoi de publicité non-sollicité a des particuliers (B to C ) est non seulement illégal en France, mais vous fait également de la contre publicité. Vous avez probablement acheté un lot d’adresse clients (qui ne vous ont rien demandés), et peuvent très mal percevoir vos envois insistant.

En partant du principe que puisque je reçois vos messages, vous serez très content de recevoir une réponse de ma part; en voici donc une automatique envoyés à quelques adresses typiquement utilisée par les grands groupes (voir la liste exhaustive à la fin de ce message).

J’ai procédé en plusieurs étapes, en utilisant le fabuleux client de messagerie qu’est Thunderbird :

1) rédaction de ce message

2) génération de vos adresses avec un tableur ( première colonne avant le « @ », première ligne les noms de domaines, et au milieu une fonction de concaténation des deux mots).

3) copier/coller de ces adresses dans les champs adéquat.

4) « Enregistrer comme Modèle »

5) Nouveau filtre de messages :

SI un message provient d’une adresse qui se termine par

*@strbb.com

*@ipg6.com ,

*@myventeprivee.com

*@rivaldi-store.com

* @manager.kwizdoo.com

* @kwizdoo.com

Alors

– répondre automatiquement avec ce modèle à tous les destinataires choisis (voir 2° étape)

– [facultatif] signaler le message à Signal Spam ( https://www.signal-spam.fr/ )

– déplacer ce message dans le dossier « répondu ».

Vous conviendrez donc qu’il est inutile de me répondre avec une adresse qui se termine par l’un de ces noms de domaines.

Soyez assurés que si vous recevez à nouveau ce message, ce n’est que parce que l’un des destinataire m’a répondu, je vous invite donc à le contacter pour lui demander de cesser ses envois s’il vous ennuie, ou de profiter de ses offres généreuses.

Cordialement,

le propriétaire de l’adresse de messagerie ****

Michaël M.

liste des destinataire de ce message automatique :

srtbb.com ipg6.com news.myventeprivee.com myventeprivee.com rivaldi-store.com manager.kwizdoo.com abuse abuse@srtbb.com abuse@ipg6.com abuse@news.myventeprivee.com abuse@myventeprivee.com abuse@rivaldi-store.com abuse@manager.kwizdoo.com report report@srtbb.com report@ipg6.com report@news.myventeprivee.com report@myventeprivee.com report@rivaldi-store.com report@manager.kwizdoo.com spam spam@srtbb.com spam@ipg6.com spam@news.myventeprivee.com spam@myventeprivee.com spam@rivaldi-store.com spam@manager.kwizdoo.com postmaster postmaster@srtbb.com postmaster@ipg6.com postmaster@news.myventeprivee.com postmaster@myventeprivee.com postmaster@rivaldi-store.com postmaster@manager.kwizdoo.com root root@srtbb.com root@ipg6.com root@news.myventeprivee.com root@myventeprivee.com root@rivaldi-store.com root@manager.kwizdoo.com admin admin@srtbb.com admin@ipg6.com admin@news.myventeprivee.com admin@myventeprivee.com admin@rivaldi-store.com admin@manager.kwizdoo.com staff staff@srtbb.com staff@ipg6.com staff@news.myventeprivee.com staff@myventeprivee.com staff@rivaldi-store.com staff@manager.kwizdoo.com team team@srtbb.com team@ipg6.com team@news.myventeprivee.com team@myventeprivee.com team@rivaldi-store.com team@manager.kwizdoo.com dir dir@srtbb.com dir@ipg6.com dir@news.myventeprivee.com dir@myventeprivee.com dir@rivaldi-store.com dir@manager.kwizdoo.com news news@srtbb.com news@ipg6.com news@news.myventeprivee.com news@myventeprivee.com news@rivaldi-store.com news@manager.kwizdoo.com newsletter newsletter@srtbb.com newsletter@ipg6.com newsletter@news.myventeprivee.com newsletter@myventeprivee.com newsletter@rivaldi-store.com newsletter@manager.kwizdoo.com contact contact@srtbb.com contact@ipg6.com contact@news.myventeprivee.com contact@myventeprivee.com contact@rivaldi-store.com contact@manager.kwizdoo.com service-clients service-clients@srtbb.com service-clients@ipg6.com service-clients@news.myventeprivee.com service-clients@myventeprivee.com service-clients@rivaldi-store.com service-clients@manager.kwizdoo.com client client@srtbb.com client@ipg6.com client@news.myventeprivee.com client@myventeprivee.com client@rivaldi-store.com client@manager.kwizdoo.com reply reply@srtbb.com reply@ipg6.com reply@news.myventeprivee.com reply@myventeprivee.com reply@rivaldi-store.com reply@manager.kwizdoo.com no-reply no-reply@srtbb.com no-reply@ipg6.com no-reply@news.myventeprivee.com no-reply@myventeprivee.com no-reply@rivaldi-store.com no-reply@manager.kwizdoo.com

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}'`

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.