Projet

Général

Profil

Shell secours » Historique » Révision 14

Révision 13 (Julien Enselme, 30/06/2014 14:48) → Révision 14/16 (Julien Enselme, 27/07/2014 15:52)

Liste de commandes pour des actions spécifiques. Pas/peu de détails/explications, [[Petit precis de shell|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. 

 {{toc}} 

 h1. 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 commande @fortune@ 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. 

 h1. Prendre les x caractères d’une chaîne 

 @cut -cN-M@ 

 h1. Revenir dans le répertoire précédent 

 @cd -@ 

 h1. Vérifier paramètre non passé 

 @! -z "$2"@ ou @-n "$2"@ 

 h1. Trier 

 @sort@ 

 h1. Compter 

 * @wc@ : pour les mots, caractères, nombres de lignes 
 * @let@ ou @$(( 6+8 )) : pour les opérations mathématiques 

 h1. Savoir si une chaîne est contenue dans une autre 

 * @[[ reg_exp =~ contenant ]]@ *bash uniquement* 
 * @grep -q "reg_exp" chaine@ 

 h1. Renommer les fichiers en fonction d’une expression régulière 

 <pre> 
 <code class="bash"> 
 for file in `ls` ; do 
   a=`echo $file | sed 's/\(.*\)\.dump\(.*\)\.sql/\2.\1.sql/'` 
   mv $file $a 
 done 
 </code> 
 </pre> 

 On peut également "utiliser Emacs":http://assos.centrale-marseille.fr/jenselme/content/emacs-edition-multiple. 

 h1. Faire une copie statique d’un site 

 wget -mkKE assos.centrale-marseille.fr/NOM 

 h1. Passer des caractères de fin de ligne DOS à UNIX 

 <pre> 
 <code class="php"> 
 sed $'s/\r$//' VOTRE_FICHIER > tmp && mv tmp VOTRE_FICHIER 
 </code> 
 </pre> 

 h1. Passer du texte en minuscule 

 <pre> 
 a=COUCOU 
 echo ${a,,} 
 </pre> 

 h1. 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.