Script permissions
Résolu/Fermé
A voir également:
- Script permissions
- Script vidéo youtube - Guide
- Script bat - Guide
- Ghost script - Télécharger - Polices de caractères
- Executeur de script - Télécharger - Édition & Programmation
- Microsoft activation script - Guide
9 réponses
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
5 sept. 2007 à 14:52
5 sept. 2007 à 14:52
j'oubliai, je ne dois ni utiliser sed ni awk .
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
5 sept. 2007 à 14:54
5 sept. 2007 à 14:54
Salut,
il me semble que j'ai déjà écrit un script pour ce cas sur CCM, mais je ne trouve pas le lien :-)
il me semble que j'ai déjà écrit un script pour ce cas sur CCM, mais je ne trouve pas le lien :-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 sept. 2007 à 14:59
5 sept. 2007 à 14:59
Salut,
exercice en shell
;-))
exercice en shell
;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
5 sept. 2007 à 20:03
5 sept. 2007 à 20:03
Merci ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
5 sept. 2007 à 20:09
5 sept. 2007 à 20:09
De rien, mais j'ai posté sans avoir vu ta réponse, je cherchais justement ce post, parce qu'à moi aussi ça me disait quelque chose cet énoncé de problème.
;-))
;-))
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
5 sept. 2007 à 15:30
5 sept. 2007 à 15:30
Merci beaucoup. Il y a différente manière d'aborder le problème, la dernière me semble la plus simple. Seulement je voulais te demander si tu pouvais m'argumenter un petit peu...lol
voici ton script :
#!/bin/bash
a=$(ls -l $1 | cut -d' ' -f1)
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
u=${aa:7:21} g=${aa:21:21} o=${aa:42:21}
echo -e "user:$user\ngroup:$groupe\n"
echo -e " \t\tread\t\twrite\t\texecute"
echo -e "user\t$u\ngroupe\t$g\nautrese\t$o"
En fait je ne comprend pas cette écriture {aa:7:21} => aa 'la chaine', :7 'la longueur a extraire', :21 'à partir de la position 21' ??????
Aussi les slash et backslash, tu les utilises pourquoi ?
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
Mes questions vont te sembler un peu débile mais pourtant ...tout n'est pas clair !! Dernière chose, que signifie l'option -e de echo ?
Lol je débute dsl.
voici ton script :
#!/bin/bash
a=$(ls -l $1 | cut -d' ' -f1)
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
u=${aa:7:21} g=${aa:21:21} o=${aa:42:21}
echo -e "user:$user\ngroup:$groupe\n"
echo -e " \t\tread\t\twrite\t\texecute"
echo -e "user\t$u\ngroupe\t$g\nautrese\t$o"
En fait je ne comprend pas cette écriture {aa:7:21} => aa 'la chaine', :7 'la longueur a extraire', :21 'à partir de la position 21' ??????
Aussi les slash et backslash, tu les utilises pourquoi ?
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
Mes questions vont te sembler un peu débile mais pourtant ...tout n'est pas clair !! Dernière chose, que signifie l'option -e de echo ?
Lol je débute dsl.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 sept. 2007 à 15:57
5 sept. 2007 à 15:57
En fait je ne comprend pas cette écriture {aa:7:21} => aa 'la chaine', :7 'la longueur a extraire', :21 'à partir de la position 21' ??????
aa 'la chaine' = exact
:7 'le début de la chaine à extraire'
:21 'sur une longueur de 21 caractères'
Aussi les slash et backslash, tu les utilises pourquoi ?
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
Les backslashs sont là pour protéger les caractères afin qu'ils ne soient pas interprétés sous leur forme littérale. Dans notre cas "\t" représente une tabulation et non le caractère "t".
Les slashs c'est un peu plus complexe, en fait ils servent à interpréter l'expansion des paramètres. Voir le man bash :
Dernière chose, que signifie l'option -e de echo ?
On demande à la commande echo (ici c'est la commande externe qui est utilisée "/bin/echo" et non pas la commande interne du bash) d'interpréter les séquences précédées par un backslash comme "\t" qui représente une tabulation.
aa 'la chaine' = exact
:7 'le début de la chaine à extraire'
:21 'sur une longueur de 21 caractères'
Aussi les slash et backslash, tu les utilises pourquoi ?
b=${a//[rwx]/"\toui\t"}
aa=${b//-/"\tnon\t"}
Les backslashs sont là pour protéger les caractères afin qu'ils ne soient pas interprétés sous leur forme littérale. Dans notre cas "\t" représente une tabulation et non le caractère "t".
Les slashs c'est un peu plus complexe, en fait ils servent à interpréter l'expansion des paramètres. Voir le man bash :
${paramètre//motif/chaîne} Le motif est développé comme dans le traitement des noms de fichiers. Le paramètre est développé et la plus longue portion correspondant au motif est remplacée par la chaîneg. Dans la première forme, seule la première correspondance est remplacée, dans la seconde toutes les portions correspondant au motif sont remplacées par la chaîne. Si le motif commence par #, il doit correspondre au début de la valeur développée du paramètre. Si le motif commence par %, il doit correspondre à la fin du développement du paramètre. Si la chaîne est nulle, les portions correspondant au motif sont supprimées et le / après le motif peut être omis. Si le paramètre est @ ou *, l'opération de substitution est appliquée à chacun des paramètres positionnels successivement, et le résultat est la liste finale. Si le paramètre est une variable tableau indexée par @ ou *, l'opération de substitution s'applique à chaque membre du tableau successivement, et le résultat est la liste finale.
Dernière chose, que signifie l'option -e de echo ?
On demande à la commande echo (ici c'est la commande externe qui est utilisée "/bin/echo" et non pas la commande interne du bash) d'interpréter les séquences précédées par un backslash comme "\t" qui représente une tabulation.
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
5 sept. 2007 à 16:28
5 sept. 2007 à 16:28
Je n'ai pas tout saisi..
a=$(ls -l $1 | cut -d' ' -f1) => ici 'a' représente le 1er champ avant le delimiteur ' ' issu de la commande ls -l , càd a = les permissions ugo
b=${a//[rwx]/"\toui\t"} => càd que si on a un caractère parmi r, w ou x dans le motif alors chaine=>'oui'
aa=${b//-/"\tnon\t"} =>si on a '-' dans le motif alors chaine=>'non' MAIS à quoi correspond le paramètre 'b' ici ?
Aussi je ne comprends pas ta manière de compter :
u=${aa:7:21} g=${aa:21:21} o=${aa:42:21} => peux-tu m'expliquer davantage ces chiffres ?
Dans :
user=$(ls -l $1 | cut -d ' ' -f3)
group=$(ls -l $1 | cut -d ' ' -f4)
ok pour user donc -f3, ok pour group donc -f4...par contre tes chiffres?????
comment s'appelle cette écriture : ${paramètre//motif/chaîne} ?
a=$(ls -l $1 | cut -d' ' -f1) => ici 'a' représente le 1er champ avant le delimiteur ' ' issu de la commande ls -l , càd a = les permissions ugo
b=${a//[rwx]/"\toui\t"} => càd que si on a un caractère parmi r, w ou x dans le motif alors chaine=>'oui'
aa=${b//-/"\tnon\t"} =>si on a '-' dans le motif alors chaine=>'non' MAIS à quoi correspond le paramètre 'b' ici ?
Aussi je ne comprends pas ta manière de compter :
u=${aa:7:21} g=${aa:21:21} o=${aa:42:21} => peux-tu m'expliquer davantage ces chiffres ?
Dans :
user=$(ls -l $1 | cut -d ' ' -f3)
group=$(ls -l $1 | cut -d ' ' -f4)
ok pour user donc -f3, ok pour group donc -f4...par contre tes chiffres?????
comment s'appelle cette écriture : ${paramètre//motif/chaîne} ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 sept. 2007 à 18:08
5 sept. 2007 à 18:08
a=$(ls -l $1 | cut -d' ' -f1) => ici 'a' représente le 1er champ avant le delimiteur ' ' issu de la commande ls -l , càd a = les permissions ugo
Oui.
b=${a//[rwx]/"\toui\t"} => càd que si on a un caractère parmi r, w ou x dans le motif alors chaine=>'oui'
Non, c'est plutôt si on a un caractère parmi r, w ou x, on le remplace par OUI.
Un exemple est beaucoup plus parlant :
Pour le reste, il te suffit de faire des tests pour voir à quoi ça correspond...
Oui.
b=${a//[rwx]/"\toui\t"} => càd que si on a un caractère parmi r, w ou x dans le motif alors chaine=>'oui'
Non, c'est plutôt si on a un caractère parmi r, w ou x, on le remplace par OUI.
Un exemple est beaucoup plus parlant :
$ a=$(ls -l foo.sch | cut -d' ' -f1) # définition de la variable a $ echo $a # on l'affiche -rwxr-xr-x $ b=${a//[rwx]/"\toui\t"} # définition de la variable b (on substitue r,w,x par oui $ echo $b # on l'affiche (la substitution est globale avec //) -\toui\t\toui\t\toui\t\toui\t-\toui\t\toui\t-\toui\t $ aa=${b//-/"\tnon\t"} # définition de la variable aa à partir de la variable b $ echo $aa # cette fois on substitué le - par non \tnon\t\toui\t\toui\t\toui\t\toui\t\tnon\t\toui\t\toui\t\tnon\t\toui\t $voila ;-))
Pour le reste, il te suffit de faire des tests pour voir à quoi ça correspond...
$ echo $aa # on affiche la variable $aa
\tnon\t\toui\t\toui\t\toui\t\toui\t\tnon\t\toui\t\toui\t\tnon\t\toui\t
$ u=${aa:7:21} # on définit la variable $u à partir du 7 ème caractère jusqu'au 21 ème ème
$ echo $u # on l'affiche
\toui\t\toui\t\toui\t
$
et ainsi de suite...
kamax54
Messages postés
7
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
5 septembre 2007
5 sept. 2007 à 18:57
5 sept. 2007 à 18:57
merci encore jipicy, cette fois j'ai bien compris.