En guise d’introduction

Voici une série de notes et astuces. Rien d’extra ordinairement nouveau ici, mais c’est pratique de publier en vrac des notes prises au fil des jours pour pouvoir ensuite les retrouver facilement.

Maison renversée. Cliquer pour voir l’image en taille plus grande

Awk pour les fichiers csv

Exemple pour compter le nombre de valeurs uniques du quatrième champs d’un fichier csv, dont le séparateur est un ;:

cat Customer.csv | awk -F ';' '{print $4}'| sort -u | wc -l

Awk pour docker

Pour afficher la liste des container en filtrant sur la commande exécutée:

docker ps -a | awk '$3 ~ /docker-php-entry/ '

Git

Lister les fichiers modifiés entre deux commits, ou deux branches (ici master et develop).

git diff-tree --no-commit-id --name-only  -r master..develop

Ansible

J’ai eu du mal à trouver comment exécuter en local_action une commande du module shell. La solution: utiliser _raw_params comme ci-dessous:

- name: Build frontend
  local_action:
    module: shell
    _raw_params: grunt build
    args:
      chdir: "{{ build_root_path }}/src/views/"

Hardware

Quand votre station d’accueil dell buggue, la solution est le reset de tous les périphériques usb:

find /sys/bus/usb/devices/*/authorized -exec sh -c 'echo 0 > ${0}; echo 1 > ${0}' {} \;

(la vrai solution reste de remplacer la station d’accueil par un hub usb)

Mysql

Quelques commandes en vrac, suffisamment explicites pour ne pas avoir à les commenter, à garder sous le coude:

SHOW FULL PROCESSLIST;
SET GLOBAL general_log = 1;
SHOW TABLE LIKE 'prefix%';

Composer

Après la résolution d’un conflit dans git, il peut arriver que vous ayez manuellement modifier le contenu du fichier composer.lock. Il est alors nécessaire de mettre à jour les champs qui contiennent les champs de contrôle:

composer update nothing

Visualiser correctement les journaux contenant des \n

tail -f oxideshop.log | sed 's/\\n/\
/g'

Configuration

Je ne suis pas un fanatique de la configuration à outrance des logiciels utilisables dans un terminal. J’essaie généralement de me contenter de la configuration par défaut, afin de ne pas être pris au dépourvu ensuite lorsque je dois utiliser ces mêmes logiciels sur un serveur distant, où ces personnalisations seront absentes.

Dernièrement j’ai fait une exception pour tmux. Dans 90% des cas, lorsque je découpe une fenêtre, je souhaite rester dans le même répertoire duquel j’ai lancé la découpe. En revanche, lorsque j’ouvre une nouvelle fenêtre, je souhaite retourner dans mon HOME, ce qui est le comportement par défault. C’est très pratique sur mon ordinateur personnel, et si je n’ai pas cette fonctionnalité sur un serveur, je peux m’en passer aisément. J’ai donc créé un fichier ~/.tmux.conf avec la configuration suivante:

bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

Je n’utilise emacs que sur mon ordinateur personnel. Pour me me connecter à une base de données mariadb (ou mysql) en utilisant un autre port que le port standard, ce qui arrive systématiquement en utilisant des base de données hébergé dans des containers, j’ai dû ajouter la ligne suivante:

(setq sql-mysql-login-params (append sql-mysql-login-params '(port)))(with-eval-after-load "sql"
  (setq sql-mysql-login-params (append sql-mysql-login-params '(port)))
  )