|
|
|
|
L'exo en script bash consiste à lire à partir d'un argument $1 qui sera le fichier , et à en déduire les permissions du propriétaire du groupe et des autres (o)de telle sorte avec en sortie par exemple cette forme là :
read write execute
user moi oui oui oui
group le groupe oui non non
others les autres oui non non
je débute alors j'ai du mal , voici ce que j'ai fait pour la partie la plus importante du script
!#/bin/bash
i=2 ( i compteur )
while ($i -lt 9 ) ( on part de 2 car le 1 er caractere sera le type ex -rwxrw-r--)
if ( cut -c$i | ls -l $1 == [a-z]
echo"oui"
else
echo "non"
fi
i=i+1
done
merci pour votre aide
Configuration: Windows XP Firefox 1.5.0.11
Salut,
lami20j@debian:~/trash$ cat lister_droits.sh
#!/bin/bash
droits=$(ls -l $1 | cut -d' ' -f1)
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
u=${a:1:3} # user
g=${a:4:3} # group
o=${a:7:3} # other
echo user:$user
echo -e "group:$groupe\n"
echo -e " \t\tread\t\twrite\t\texecute"
echo -e "user\t\c"
echo $u | sed s/[rwx]/\\toui\\t/g | sed s/-/\\tnon\\t/g
echo -e "groupe\t\c"
echo $g | sed s/[rwx]/\\toui\\t/g | sed s/-/\\tnon\\t/g
echo -e "autres\t\c"
echo $o | sed s/[rwx]/\\toui\\t/g | sed s/-/\\tnon\\t/g
ls sur le fichierlami20j@debian:~/trash$ ls -l test01.txt -rw-r--r-- 1 lami20j lami20j 64 2007-05-10 19:06 test01.txtexécution de script ami20j@debian:~/trash$ sh lister_droits.sh test01.txt
user:lami20j
group:lami20j
read write execute
user oui oui non
groupe oui non non
autres oui non non
--
lami20j
|
Salut,
#! /bin/bash echo -e "\tread\twrite\texecute\n" read user group others < <(stat -c "%A" $1 | sed -e 's/-//;s/.../& /g') echo -e "User\c"; echo $user | sed 's/[rwx]/\toui/g;s/-/\tnon/g' echo -e "group\c"; echo $group | sed 's/[rwx]/\toui/g;s/-/\tnon/g' echo -e "Others\c"; echo $others| sed 's/[rwx]/\toui/g;s/-/\tnon/g'Rend le script exécutable et lances-le par : ./le_script;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Re-
#! /bin/bash
var=$(ls -l "$1" | cut -d" " -f1)
usere=$(echo "$var" | cut -c2-4)
groupe=$(echo "$var" | cut -c5-7)
autres=$(echo "$var" | cut -c8-10)
echo -e "$usere\n$groupe\n$autres" > fichier.txt
echo -e "\t\tread\twrite\texecute\n"
i=1
while read line
do
if [ "$i" == 1 ]
then param=user
elif [ "$i" == 2 ]
then param=groupe
else param=others
fi
case "$line" in
---) echo -e "$param\t\tnon\tnon\tnon"
;;
--x) echo -e "$param\t\tnon\tnon\toui"
;;
-w-) echo -e "$param\t\tnon\toui\tnon"
;;
-wx) echo -e "$param\t\tnon\toui\toui"
;;
r--) echo -e "$param\t\toui\tnon\tnon"
;;
r-x) echo -e "$param\t\toui\tnon\toui"
;;
rw-) echo -e "$param\t\toui\toui\tnon"
;;
rwx) echo -e "$param\t\toui\toui\toui"
;;
esac
i=$(expr $i + 1)
done < fichier.txt;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Salut,
lami20j@debian:~/trash$ cat ccm.sh
#!/bin/bash
a=$(ls -l $1 | cut -d' ' -f1)
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
u=${a:1:3} # user
g=${a:4:3} # group
o=${a:7:3} # other
echo user:$user
echo -e "group:$groupe\n"
echo -e " \t\tread\t\twrite\t\texecute"
uu=${u//[rwx]/"\toui\t"}
echo -e "user\t\c"
echo -e ${uu//-/"\tnon\t"}
gg=${g//[rwx]/"\toui\t"}
echo -e "groupe\t\c"
echo -e ${gg//-/"\tnon\t"}
oo=${o//[rwx]/"\toui\t"}
echo -e "autres\t\c"
echo -e ${oo//-/"\tnon\t"}
Le résultat lami20j@debian:~/trash$ ls -l fichier
-rwxrw-r-- 1 lami20j lami20j 81 2007-05-15 19:53 fichier
lami20j@debian:~/trash$ sh ccm.sh fichier
user:lami20j
group:lami20j
read write execute
user oui oui oui
groupe oui oui non
autres oui non non
lami20j |
Ton prof est un c** :-DDD
lami20j@debian:~/trash$ cat ccm.sh
#!/bin/bash
a=$(ls -l $1 | cut -d' ' -f1)
user=$(ls -l $1 | cut -d ' ' -f3)
groupe=$(ls -l $1 | cut -d ' ' -f4)
u=${a:1:3} g=${a:4:3} o=${a:7:3}
echo -e "user:$user\ngroup:$groupe\n"
echo -e " \t\tread\t\twrite\t\texecute"
uu=${u//[rwx]/"\toui\t"}
echo -e "user\t\c";echo -e ${uu//-/"\tnon\t"}
gg=${g//[rwx]/"\toui\t"}
echo -e "groupe\t\c";echo -e ${gg//-/"\tnon\t"}
oo=${o//[rwx]/"\toui\t"}
echo -e "autres\t\c";echo -e ${oo//-/"\tnon\t"}
lami20j@debian:~/trash$ cat ccm.sh | wc -l
13
lami20j@debian:~/trash$ ls -l fichier
-rwxrw-r-- 1 lami20j lami20j 81 2007-05-15 19:53 fichier
lami20j@debian:~/trash$ sh ccm.sh fichier
user:lami20j
group:lami20j
read write execute
user oui oui oui
groupe oui oui non
autres oui non non
lami20j@debian:~/trash$
lami20j |
Voilà montre à ton(tes prof) dans 2 lignes :-DDDDDDDDDDDDd
#!/bin/bash
a=$(ls -l $1 | cut -d' ' -f1);user=$(ls -l $1 | cut -d ' ' -f3);groupe=$(ls -l $1 | cut -d ' ' -f4);u=${a:1:3} g=${a:4:3} o=${a:7:3};echo -e "user:$user\ngroup:$groupe\n";echo -e " \t\tread\t\twrite\t\texecute";uu=${u//[rwx]/"\toui\t"};echo -e "user\t\c";echo -e ${uu//-/"\tnon\t"};gg=${g//[rwx]/"\toui\t"};echo -e "groupe\t\c";echo -e ${gg//-/"\tnon\t"};oo=${o//[rwx]/"\toui\t"};echo -e "autres\t\c";echo -e ${oo//-/"\tnon\t"}
la preuve lami20j@debian:~/trash$ cat ccm.sh | wc -l 2 P.S. J'espère qu'il n'a pas fixer la longueur de lignes à 1 caractère :-DDD lami20j |
Bon, en oubliant un peu la demande saugrenue de ton prof, voici une optimisation de ma version, cette fois en 9 lignes et sans rigolade :-))
#!/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"
lami20j P.S. je lui dirai que c est un gros c... J'ai plaisanté :-)) Peut être il vous pousse un peu pour que vous appreniez mieux En revanche tu peux le demander pourquoi 16 lignes et pas 15 ou 17 par exemple |
Il veut en moins de 16 lignes pour éviter les if ..then else ...fi à répétition
|
Salut,
cat fichier2.txt >> fichier1.txtsi tu veux garder les fichier originaux tu peux faire cat fichier1.txt fichier2.txt > fichier3.txt lami20j |
Bonjour,
|
Bonjour à tous!
|
Bon je te donne quand même la soluce que j'ai trouvé.
#!/bin/bash on=$(ls -l $1 | cut -d" " -f3) gn=$(ls -l $1 | cut -d" " -f4) gr=$(ls -l $1 | cut -c5) gw=$(ls -l $1 | cut -c6) ge=$(ls -l $1 | cut -c7) er=$(ls -l $1 | cut -c8) ew=$(ls -l $1 | cut -c9) ee=$(ls -l $1 | cut -c10) if [ [ -r $1 ]] then or="YES" else or="NO" fi if [ [ -w $1 ]] then ow="YES" else ow="NO" fi if [ [ -x $1 ]] then oe="YES" else oe="NO" fi if [ [ $gr = "r" ]] then grr="YES" else grr="NO" fi if [ [$gw = "w" ]] then grw="YES" else grw="NO" fi if [ [$ge = "x" ]] then gre="YES" else gre="NO" fi if [ [$er = "r" ]] then evr="YES" else evr="NO" fi if [ [$ew = "w" ]] then evw="YES" else evw="NO" fi if [ [$ee = "x" ]] then eve="YES" else eve="NO" fi echo -e " "READ WRITE EXECUTE echo -e OWNER $on" "$or" "$ow" "$oe echo -e GROUP $gn" "$grr" "$grw" "$gre echo -e EVERYBODY" "$evr" "$evw" "$eve Bon il est vraiment trop long mais au moins il marche :))))))) Par contre il y a quelques idées qui commence a me trotter dans la tête, je vais promener ma bête et je me met là dessus. |