Outils pour utilisateurs

Outils du site


bash_cheat_sheet

Ceci est une ancienne révision du document !


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