bash, lister les commandes disponibles

2012-08-03 | #bash #commandes #terminal

Pour lister les commandes disponibles, on peut utiliser la commande bash intégrée compgen. compgen -c liste toutes les commandes que l’on peut exécuter compgen -a liste tous les alias que l’on peut exécuter compgen -b liste la liste de toutes les commandes intégrées (built-in) que l’on peut exécuter compgen -k liste la liste de tous les mots clés que l’on peut exécuter (if/then…) Sur ma machine, la répartition des commandes en fonction de la première lettre…

Continuer la lecture 


bash, timeout

2012-07-31 | #bash, timeout #commande

L’astuce du jour ! Si un script appelle une commande qui peut ou non rendre la main (chemin réseau) et que l’on souhaite toujours la récupérer, on peut faire appel à la commande timeout. timeout 3 ssh user@host.example.com:~/ ls Cela est très pratique lorsque la commande utilisée n’a pas prévu de rendre la main suite à un timeout spécifié en paramètre.

Continuer la lecture 


bash, récupérer le code de sortie d'un sous-shell

2012-07-31 | #bash #pipe #status

Ci-dessous on récupère le code de sortie d’un sous-shell afin d’effectuer un traitement particulier avec des pipes. MYSQL_CMD="mysql -P$DB_PORT -u$DB_USER -p$DB_PASSWD -h$DB_HOST $DB --connect-timeout=1" VERSION=$(${MYSQL_CMD} -B -s -e 'select value from _cvf_metadatas where name="version"' 2>/dev/null | tail -n 1 ; exit $PIPESTATUS) if [ $? -ne 0 ]; then VERSION="*can't connect*" elif [ -z "$VERSION" ]; then VERSION="*not found*" fi

Continuer la lecture 


bash, sort

2012-07-30 | #bash #commande #find

Bien souvent, on recherche des fichiers avec la commande find dans une arborescence. L’option -printf format permet d’afficher une ligne pour chaque entrée trouvée. Le format permet d’afficher les dates/heures, le basename de l’entrée… $ find src/main/webapp/changes.log -printf '%f\n' changes.log $ find src/main/webapp/changes.log -printf '%h\n' src/main/webapp Ca peut être bien utile de connaître cette option ;)

Continuer la lecture 


bash, initialisation des variables

2012-07-27 | #bash #expansion #parameter

Use a default value ${PARAMETER:-WORD} ${PARAMETER-WORD} If the parameter PARAMETER is unset (never was defined) or null (empty), this one expands to WORD, otherwise it expands to the value of PARAMETER, as if it just was ${PARAMETER}. If you omit the : (colon), like shown in the second form, the default value is only used when the parameter was unset, not when it was empty. Assign a default value ${PARAMETER:=WORD} ${PARAMETER=WORD} This one works like the using default values, but the default text you give is not only expanded, but also assigned to the parameter, if it was unset or null.

Continuer la lecture 


bash, génerer des mots de passe

2012-07-26 | #bash #generate #password

Vous n’avez pas envie de réfléchir pour générer un mot de passe ? Voici une petite méthode à mettre dans votre bashrc qui vous facilitera le choix ;) function genpass() { LENGTH=${1:-10} if [ "$2" == "0" ]; then CHAR="[:alnum:]" elif [ "$2" == "1" ]; then CHAR="[:graph:]" elif [ "${2:0:1}" != "+" ]; then echo "Erreur: vous devez spécifier les caractères acceptés" echo "Exemple: $ genpass 32 '+[:alnum:]_'" echo "2na2lku4FBqM7eNPC_aooahXV0c8GxI7" return else CHAR="${2:1}" fi cat /dev/urandom | tr -cd "$CHAR" | head -c $LENGTH echo } $ # génère un mot de passe de 10 caractères avec lettres et chiffres $ genpass 10 0 toSGXjycaa $ # génère un mot de passe de 10 caractères avec lettres, chiffres et symboles $ genpass 10 1 ^:5-LONhtn $ # génère un mot de passe de 10 caractères avec ce que vous spécifiez après le + $ genpass 10 "+abc[:digit:]" b5836a29a2

Continuer la lecture 