Astuces en vrac

Voici quelques astuces que j’ai découvertes ces derniers mois et que j’ai pensées à noter pour plus tard, et aussi pour les partager:

Ligne de commande

  • Quand la commande realpath n’est pas disponible, la commande readlink -f peut la remplacer;
  • pwd -P résout les liens symboliques;
  • less -i rend la recherche insensible à la case (taper -i) à l’intérieur d’un less marche aussi;
  • git log --oneline -- path/to/directory/ liste rapidement toutes les commits qui ont affecté un répertoire.

Sudo

sudo une-commande-qui-genere-du-texte >> fichier-not-writable ne marchera pas, parce que sudo est utilisé par la commande seulement, pas pour la redirection. Il faut utiliser sudo tee

sudo une-commande-qui-genere-du-texte | tee -a fichier-not-writable

Environnement hostile (netcat non disponible)

Pour tester si un port est ouvert en bash, lorsque ni netcat, ni telnet ne sont pas disponible ou installable:

 (echo > /dev/tcp/skinner/22) >/dev/null 2>&1 \
    && echo "It's up" || echo "It's down"

Javascript

document.getElementsByTagName('img') retourne une [[https://developer.mozilla.org/en-US/docs/Web/API/NodeList][Nodelist]], et non un [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array][array]]. Heureusement l’opérateur ... va vous aider:

[...document.getElementsByTagName('img')].forEach(t => {t.remove()})

Ansible:

  • Attention à ne pas confondre: database: "{{ ansible_env.MYSQL_DATABASE }}" et user: "{{ lookup('env', 'MYSQL_USER') }}":
    • env récupère une variable de l’environnement de la machine source;
    • ansible_env récupère une variable de l’environnement de la machine cible.
  • Le module rsync peut être utilisé derrière un bastion ssh uniquement avec l’option use_ssh_args: yes