Aller au contenu

Shell⚓︎

J’utilise actuellement zsh qui est présent de base dans macOS. Je n’ajoute que très peu de scripts pour rester aussi proche de l’environnement de personnes débutantes que je pourrais accompagner.

Vous pouvez ajouter ces lignes dans votre fichier ~/.zshrc et ça ne devrait pas être très éloigné de la syntaxe des autres shells.

Alias⚓︎

🐣 2022-08

Je me contente de ceux-ci présentement, c’est principalement pour gérer mes environnements Python plus facilement :

aliases.sh
1
2
3
4
5
6
7
8
alias -g ll='ls -al'
alias -g subl='open -a "Sublime Text"'
alias server='python3 -m http.server 8000 --bind 127.0.0.1'
alias rmvenv='deactivate && rm -rf venv/'
alias venv='python3 -m venv venv'
alias activate='source venv/bin/activate'
alias pipupgrade='python3 -m pip install --upgrade pip'
alias requirements='python3 -m pip install -r requirements.txt'

Je sais que les CoolKids® utilisent Poetry ou Pyenv ou que sais-je encore mais je crois que je préfère encore savoir ce qu’il se passe sur ma machine.

Auto dé·activation des virtualenvs⚓︎

🐣 2022-08

Script permettant d’activer (ou de désactiver) automagiquement un virtualenv Python lorsqu’on fait un cd dans un dossier qui en possède un.

activation-venv.sh
function cd() {
  if [[ -d ./venv ]] ; then
    deactivate
  fi

  builtin cd $1

  if [[ -d ./venv ]] ; then
    . ./venv/bin/activate
  fi

  # (1)!
  if [[ -d ./node_modules ]] ; then
    export PATH="$(npm bin):$PATH"
  fi
}
  1. Au passage, on ajoute node_modules/.bin au $PATH.

jq mais sans jq⚓︎

🐣 2022-10

Je suis toujours fan de ces “You might not need…”, cette fois-ci c’est pour se passer de jq et c’est Üllar Seerme qui nous le propose :

1
2
3
jq() {
    echo -n "$1" | python3 -c "import json, sys; print(json.load(sys.stdin)${2})"
}

Cela permet par exemple de récupérer/traiter une chaîne ou arborescence simple dans un fichier JSON sans autre dépendance que Python :

$ jq "$(curl --silent https://github.com/davidbgk.json)" "['message'].split(',')[0]"
Hello there

Aussi, jc permet de convertir des commandes shell en JSON et c’est aussi un paquet Python 😋.

🌱 Un template pour script bash⚓︎

🐣 2022-10

Issu de cet article de Shrikant Sharat Kandula qui donne d’autres astuces pour faire des scripts résilients.

template.sh
#!/usr/bin/env bash

set -o errexit # (1)!
set -o nounset # (2)!
set -o pipefail # (3)!
if [[ "${TRACE-0}" == "1" ]]; then
    set -o xtrace # (4)!
fi

# (5)!
if [[ "${1-}" =~ ^-*h(elp)?$ ]]; then
    echo 'Usage: ./script.sh arg-one arg-two

This is an awesome bash script to make your life better.

'
    exit
fi

cd "$(dirname "$0")" # (6)!

main() {
    echo do awesome stuff # (7)!
}

main "$@"
  1. On veut sortir en cas d’erreur
  2. On veut sortir si une variable est manquante
  3. On veut considérer l’erreur si elle intervient dans une suite de commandes pipe-eés
  4. Très utile pour le debug avec TRACE=1 ./script.sh
  5. Ne pas oublier l’aide et une façon d’accepter des arguments courts et longs
  6. On se déplace dans le dossier d’execution du script, c’est souvent souhaitable
  7. C’est ici pour ajouter son code !

Dernière mise à jour: 2022-11-06