bash, lister les commandes disponibles

2012-08-03

Pour lister les commandes disponibles, on peut utiliser la commande bash intégrée compgen: compgen -c liste la liste de toutes les commandes que l’on peut exécuter - compgen -a liste la liste de 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… $ compgen -c | cut -c 1 | sort | uniq -c | sort -nr | column 392 p 122 f 61 h 12 k 1 N 359 _ 118 r 37 w 8 V 1 M 222 m 115 i 3 7 6 y 1 G 222 g 114 u 33 j 6 q 1 C 207 s 114 a 30 v 3 [ 1 } 154 x 96 t 25 z 2 X 1 { 143 c 95 b 22 o 2 H 1 ] 131 d 78 n 2 2 2 .

Continuer la lecture 


bash, timeout

2012-07-31

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

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

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 }

Continuer la lecture 


bash, convertir la casse d'un flux

2012-07-25

Pour faire des recherches de noms de fichiers correspondant à un certain pattern, j’ai eu besoin de changer la casse des noms… Ici je recherche les fichiers qui contiennent “erreur” dans leur noms. $ ls | tr ‘[:upper:]’ ‘[:lower:]’ | grep erreur

Continuer la lecture 


python, obtenir la liste des fichiers .java

2012-07-23

Pour récupérer la liste des .java dans une arborescence et sa sous-arborescence, on peut utiliser le code suivant : import fnmatch import os matches = [] for root, dirnames, filenames in os.walk(’/path/to/the/directory’): for filename in fnmatch.filter(filenames, ‘*.java’): matches.append(os.path.join(root, filename))

Continuer la lecture 


bash, nombres en hexadécimal

2012-07-20

Si pour une raison ou une autre, vous devez jouer à afficher des nombres héxadécimal en base 10 ou vice-versa, vous pouvez passer par la commande printf $ printf “%x” 174 ae $ printf “%d” 0xae 174 $ printf “%d\n” 'A 65

Continuer la lecture 