Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/11/2010, à 22:02

vocal94130

[Résolu] Afficher les droits d'accès

Bonjour,

   Je débute en bash et je souhaite afficher le type de fichier passé en paramètre ainsi que ses permissions utilisateurs. J'ai un début de script :

# !/bin/bash

if [ $# = 0 ]
then
    echo "Aucun paramètre"

elif [ -f $1 ]
then
    echo "C'est un fichier"
    if [ ls -la | grep '^-.*' == "-r" ] #Je ne sais pas comment procéder isi
    then
        echo "droit d'ecriture"
    fi
    
elif [ -d $1 ]
then
    echo "C'est un repertoire"
fi

Je pense pas que ce soit compliqué mais j'ai pas encore la logique smile

Merci de votre aide

Dernière modification par vocal94130 (Le 03/12/2010, à 13:22)

Hors ligne

#2 Le 15/11/2010, à 22:19

ehmicky

Re : [Résolu] Afficher les droits d'accès

- Tu peux utiliser les tests [[ -r FILE ]] pour tester si l'utilisateur actuel a les droits de lecture. Même chose avec -x et -w pour exécution et écriture.
  - Tu devrais utiliser des doubles [[ ]] pour les tests, qui ont plusieurs avantages dont celui de ne pas poser de problème si le chemin de FILE contient des espaces (et qu'il n'est pas entouré de double-guillemets comme c'est le cas ici).
  - le = du premier test est le signe de l'affectation : VAR=VAL. Pour faire un test d'égalité, il faut utiliser deux == : if [[ $# == 0 ]]. D'ailleurs, tu peux raccourcir if [[ $# ]] puisque 0 == vrai.
  - tu peux quitter le programme s'il n'y a pas d'argument positionnel : exit.

Dernière modification par ehmicky (Le 15/11/2010, à 22:22)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#3 Le 16/11/2010, à 10:45

vocal94130

Re : [Résolu] Afficher les droits d'accès

Génial !!  Merci de ta réponse rapide et surtout claire.

Hors ligne

#4 Le 20/11/2010, à 12:03

vocal94130

Re : [Résolu] Afficher les droits d'accès

Les [[ et ]] ne sont pas pris en compte.

[[ : not found

De plus  if [ $# ] me fait rentrer dans la boucle quand je mets des paramètres :s
Et if [ $# == 0 ] me donne "unexpected operator"

Erf ça fait pas mal d'erreur tout ça ^^. Tant qu'on y est comment faire pour tester les droit de root et de groupe?

Merci de votre aide

Dernière modification par vocal94130 (Le 20/11/2010, à 12:04)

Hors ligne

#5 Le 20/11/2010, à 18:49

FRUiT

Re : [Résolu] Afficher les droits d'accès

Il y a pas d'espace dans le shabang

#!/bin/bash

C'est surement pour ça que les double crochets ne marchent pas.


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#6 Le 20/11/2010, à 21:32

ehmicky

Re : [Résolu] Afficher les droits d'accès

Oui, ce que j'ai dit est pour Bash pas Sh
Par ailleurs, je voulais dire if (( ! $# )), mais tu peux utiliser if [[ $# == 0 ]] si tu veux.

Dernière modification par ehmicky (Le 20/11/2010, à 21:32)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#7 Le 21/11/2010, à 17:28

vocal94130

Re : [Résolu] Afficher les droits d'accès

Euhh moi c'est sh alors non ? puisque j'utilise 'sh nom_fichier' pour lancer mon script.

Hors ligne

#8 Le 21/11/2010, à 20:24

ehmicky

Re : [Résolu] Afficher les droits d'accès

Bah utilise Bash : ./script smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#9 Le 03/12/2010, à 13:22

vocal94130

Re : [Résolu] Afficher les droits d'accès

Euh oui effectivement smile !

Merci

Hors ligne