« Catégorie:Trucs Shell » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (Trucs: Tester une réponse sans se soucier si la réponse est vide)
m (Supprimer avec rm avec un filtre par utilisateur)
Ligne 20 : Ligne 20 :
if test "" = "o"
if test "" = "o"
Et là, il aura bien ses deux opérandes à comparer l'un par rapport à l'autre.
Et là, il aura bien ses deux opérandes à comparer l'un par rapport à l'autre.
== Supprimer avec rm avec un filtre par utilisateur ==
Supprimer avec rm avec un filtre par utilisateur
il y a 2 méthode , la première étant la moins propre. Mai plus rapide.
#!/bin/sh
# la première
#find "$p" -user "tnt" -print0 | xargs -0 /bin/rm -f 2>/dev/null && find "$p" -user "tnt" -print0 | xargs -0 /bin/rmdir -p 2>/dev/null
# la deuxième
#find "$1" -user "$2" -exec /bin/rm -vf '{}' \; 2>/dev/null && find "$1" -user "$2"  -exec  /bin/rmdir -p '{}' \; 2>/dev/null
Ceci évite de supprimer des fichier qui appartiennes a un autres  utilisateur par exemple root, ou un fichier qui aurai les droits 0777 d'un autres utilisateur.
Simple et plus sure que de faire un rm -r ./*

Version du 18 mars 2007 à 22:33

Les commandes du shell, leurs paramètres, les scripts...

Trucs: Tester une réponse sans se soucier si la réponse est vide

Il arrive parfois qu'on fasse saisir une réponse read rep

Puis, on veut tester si la réponse est "o" if test $rep = o

Le pb, c'est que si l'utilisateur tape "return" sans saisir de réponse, la variable "rep" est vide... et le test devient bancal car il lit if test = o Erreur de syntaxe, l'option "=" veut absolument 2 opérandes

La solution: Encadrer la variable et la valeur par des guillemets if test "$rep" = "o"

Même si "rep" est vide, le shell verra if test "" = "o" Et là, il aura bien ses deux opérandes à comparer l'un par rapport à l'autre.

Supprimer avec rm avec un filtre par utilisateur

Supprimer avec rm avec un filtre par utilisateur

il y a 2 méthode , la première étant la moins propre. Mai plus rapide.

  1. !/bin/sh
  2. la première
  3. find "$p" -user "tnt" -print0 | xargs -0 /bin/rm -f 2>/dev/null && find "$p" -user "tnt" -print0 | xargs -0 /bin/rmdir -p 2>/dev/null
  1. la deuxième
  2. find "$1" -user "$2" -exec /bin/rm -vf '{}' \; 2>/dev/null && find "$1" -user "$2" -exec /bin/rmdir -p '{}' \; 2>/dev/null

Ceci évite de supprimer des fichier qui appartiennes a un autres utilisateur par exemple root, ou un fichier qui aurai les droits 0777 d'un autres utilisateur.

Simple et plus sure que de faire un rm -r ./*

Pages dans la catégorie « Trucs Shell »

Cette catégorie comprend 39 pages, dont les 39 ci-dessous.