bash_cheat_sheet
Ceci est une ancienne révision du document !
Table des matières
Bash Cheat Sheet
Opérateurs
String
- Identiques : [ “str1” = “str2” ]
- Différente : [ “str1 != “str2”]
- Non vide : [ -n “str1” ]
- Vide : [ -z “str1” ]
Numbers
- Egaux : [ nb1 -eq nb2 ]
- Différents : [ nb1 -ne nb2 ]
- Sup à > : [ nb1 -gt nb2 ]
- Sup ou égal >= : [ nb1 -ge nb2 ]
- Inf à < : [ nb1 -lt nb2 ]
- Inf ou égal ⇐ : [nb1 -le nb2 ]
Fichiers et répertoires
- Exécutable (par le user courant) : [ -x filename ] #Uniquement fichiers
- Writable (user courant) : [ -w filename ]
- Readable (user courant) : [ -r filename ]
- Est un fichier : -f
- Est un répertoire : -d
- Existe : -e
- Taille > 0 : -s
Gestion des options
Les options doivent être avant les paramètres 'classique'
#!/bin/bash
#On met les options à false
optA=false;
optB=false;
#Définion de la commande
cmd="ls";
#Check des options
while true
do
case "$1" in
-a)
echo "option a"
opta=true
cmd+=" -a" #bien penser à l'espace
shift
;;
-b)
echo "option b"
optb=true
cmd+=" -b"
shift;;
*)
break;;
esac
done
echo "$cmd" #affiche ls -a -b si les deux options sont présentes
if [[ ! -z "$1" ]]
then
echo "$1";
else
echo "pas de paramètre"
fi
Fichiers ou répertoires dans un tableau
#!/bin/bash
repertoire="/home/pillow/"
cmd="ls $repertoire"
files_folders=$($cmd)
folders=() #déclaration tableau vide
echo $files_folders #sortie de ls
for file in $files_folders
do
if [[ -d $repertoire$file ]] && [[ -e $repertoire$file ]] && [[ "$file" != "." ]] && [[ "$file" != ".." ]]
then
folders+=("$repertoire$file") #ajout à la fin du tableau
fi
done
echo "Nombre de répertoires : ${#folders[@]}"
files_array=(${files_folders// /}) # transforme la string en tableu avec ' ' comme séparateur
echo $files_array
echo "Nombre de fichiers et répertoires : ${#files_array[@]}"
echo $repertoire${files_array[0]}
Effacer fichiers selon conditions (find)
Motif de base :
find /repertoire -type f -name “*.log” -exec rm {} \;
Conditions possibles :
-type
- * f : fichier
- * d : repertoire
- * l : lien symbolique
- * c : périphérique caractère
- * s : socket
- * b : périphérique bloc
- * p : tube nommé (FIFO)
-name "regexp"
- * peut être combiné avec \( -name “*.log” -o -name “*.py”\)
- * exlcusion : ! -name “*.bak”
- -size [valeur] (c ⇒ octets, k ⇒ ko, M ⇒ Mo, G ⇒ Go)
- * exactement : -size 1M
- * plus de : -size +10M
- * moins de : -size - 10k
- * plage : -size 1M -a -size -10M
Dates [valeur en jours]
- * -mtime : modification
- * -atime accès
- * -ctime changement méta donénes (chmod par exemple)
- * exactement : -date 7
- * plus de : -date +30
- * moins de : -date -1
-perm [mode] (permissions)
- * Octale : -perm 644
- * Symbolique -perm /u+s ou /g=w
- * Au moins : -644
- * Exactement : 644
-user nomuser
- ! -user nomuser
- -group nomgroup
- ! - group nomgroup
- -user nomuser -group nomgroup
Exécution
- -exec [command] {} \; ← Sans demander de confirmation
- -ok [command] {} \; ← avec confirmation
bash_cheat_sheet.1748938311.txt.gz · Dernière modification : de pillow
