Liste de commandes pour des actions spécifiques. Pas/peu de détails/explications, prérequis de shell supposés connus. Si une commande est donnée pour bash uniquement, cela signifie qu'elle n'est pas compatible avec le shell POSIX ou d'autres implémentations basiques mais est vraisemblablement disponible dans les autres implémentations évoluées telles que zsh.
Jenselme en propose une version plus complète sur son blog
- Contenu
- Générer des nombres aléatoires
- Prendre les x caractères d’une chaîne
- Revenir dans le répertoire précédent
- Vérifier paramètre non passé
- Trier
- Compter
- Savoir si une chaîne est contenue dans une autre
- Renommer les fichiers en fonction d’une expression régulière
- Faire une copie statique d’un site
- Passer des caractères de fin de ligne DOS à UNIX
- Passer du texte en minuscule
- Savoir si un script est lancé dans un shell interactif
- Get git commit (including file content) between today and yesterday
Générer des nombres aléatoires¶
-
$RANDOM
(bash uniquement) : tire un nombre aléatoirement entre 0 - 32767 -
fortune | cksum | cut -f1 -d" "
: si RANDOM n'est pas disponible, la commandefortune
qui tire aléatoirement un proverbe l'est peut être. On en prend la somme pour obtenir un nombre. -
seed=`( echo $$ ; time ps ; w ; date ) | cksum | cut -f1 -d" " `
: utilise la date où le PID du dernier processus. -
dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "
: utilise l'entrée d'entropie du noyau. C'est la meilleur méthode, la plus robuste pour générer de l'aléatoire.
Prendre les x caractères d’une chaîne¶
cut -cN-M
Revenir dans le répertoire précédent¶
cd -
Vérifier paramètre non passé¶
! -z "$2"
ou -n "$2"
Trier¶
sort
Compter¶
-
wc
: pour les mots, caractères, nombres de lignes -
let
ou @$(( 6+8 )) : pour les opérations mathématiques
Savoir si une chaîne est contenue dans une autre¶
-
[[ reg_exp =~ contenant ]]
bash uniquement grep -q "reg_exp" chaine
Renommer les fichiers en fonction d’une expression régulière¶
<code class="bash">
for file in `ls` ; do
a=`echo $file | sed 's/\(.*\)\.dump\(.*\)\.sql/\2.\1.sql/'`
mv $file $a
done
</code>
On peut également utiliser Emacs.
Faire une copie statique d’un site¶
wget -mkKE assos.centrale-marseille.fr/NOM
Passer des caractères de fin de ligne DOS à UNIX¶
<code class="php">
sed $'s/\r$//' VOTRE_FICHIER > tmp && mv tmp VOTRE_FICHIER
</code>
Passer du texte en minuscule¶
a=COUCOU
echo ${a,,}
Savoir si un script est lancé dans un shell interactif¶
La commande tty -s
renvoie 0 si le script est lancé dans un terminal interactif et 1 sinon.
Get git commit (including file content) between today and yesterday¶
<code class="php">
git_log=$(git log -p --since="yesterday" --pretty=format:"########## %s ###########")
if [ -n "$git_log" ] ; then
echo "$git_log" | mail -s "[git] Report" $email_multi_assos
fi
</code>
Mis à jour par Julien Enselme il y a plus de 9 ans · 16 révisions