Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2007, 20h39   #1
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 51
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 51
Points : 17
Points : 17
Par défaut Différencier un dossier d'un fichier dans un script

Bonsoir tous le monde,

Voici un sujet qui n'est pas très clair mais je ne vois pas comment l'écrire autrement... Bref...

Je souhaite créer un script bash me permettant de changer les droits uniquements sur les fichiers et pas sur les dossiers je pense donc utiliser les conditions mais je n'ai pas encore réussi à trouver un tuto qui m'explique comment définir cette condition sous bash...

Voici en francais ma condition.

Si dossier est un dossier mettre les droits à 770

Autrement si c'est un fichier mettre les droits à 700

En gros voila. Merci d'avance pour vos réponses.
Trebor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 20h50   #2
Membre actif
 
Étudiant
Inscription : août 2005
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 161
Points : 170
Points : 170
man test
et plus particulièrement regarde l'option -d.
poof65 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 21h52   #3
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 51
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 51
Points : 17
Points : 17
Génial merci beaucoup....
Trebor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2007, 10h10   #4
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
regarde mon tutorial sur le ksh et bash, test est correct, mais pas POSIX, une syntaxe "à jour" est à employer.
plus particulierement :
http://marcg.developpez.com/ksh/#L8.3
Code :
1
2
3
4
5
6
7
8
 
 
if [ -d le_fichier ]
then
    #repertoire
else
   # fichier 
fi
attention les cas de liens notamment, ou d'autre fichier particuier ne sont pas traité
(executable ou pas, .....)
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2007, 15h28   #5
Futur Membre du Club
 
Inscription : novembre 2005
Messages : 51
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 51
Points : 17
Points : 17
Parfait, c'est exactement comme cela que je pensait réaliser mon script mais mon soucis, c'est que je ne vois pas comment je peux faire pur une liste de fichier et de dossier.

Par exemple dans mon dossier /home/ftp

J'ai 3 dossiers appelés :

dossier1
dossier2
dossier3

Puis ensuite, plusieurs fichiers déposé sur le FTP par différents propriétaires

fichier1
fichier2
fichier3



Je souhaite en exécutant ce script, qu'il recherche automatiquement si il s'agit d'un fichier ou d'un dossier sans avoir à indiquer le fichier sur lequel le test est à réaliser. en fait, il faut que le test soit réalisé sur tout le contenu du dossier.
Trebor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2007, 17h04   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
une boucle sur la liste des fichiers/repertoires :
si pas trop de fichier :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
cd la racine du site ftp
for fic in $(ls -R)
do
 if [ -d le_fichier ]
 then
    #repertoire
    chmod 700 $fic
 else
   # fichier 
       chmod 770 $fic
    # je pense que 660 serait mieux sauf s'il s'agit d'executable
 fi
done
sinn plus simple mais en deux passes et qui fonctionne quelque soit le nombre de fichier :
Code :
1
2
3
4
 
cd le repertoire racine
find . -type d -exec chmod 700 {} \;
find . -type f -exec chmod 660 {} \;
voila .
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h58.


 
 
 
 
Partenaires

Hébergement Web