Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
chmod
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Greek
View previous topic :: View next topic  
Author Message
ksenos
Apprentice
Apprentice


Joined: 06 Nov 2003
Posts: 164
Location: Athens, Greece

PostPosted: Fri Dec 12, 2003 8:16 pm    Post subject: chmod Reply with quote

Γεια και χαρά σε όλους.

Θα ήθελα να ρωτήσω το εξής:

Στο directory με τα mp3 ήθελα να αλλάξω λίγο τα access rights ώστε να μπορούν να τα ακούν και οι αδελφές μου. Οπότε και χρησιμοποιήσα chmod -R 644 *. Το πρόβλημα που προέκυψε απο αυτό ήταν οτι τα directories δεν μπορούσαν να ανοιχθούν. Έτσι αναγκαστικά έτρεξα chmod -R 755 *. Έψαξα πολύ αλλά δεν κατάφερα να βρώ τρόπο να ξεχωρίσω directory απο αρχείο χρησιμοποιώντας κάποιο switch. Τώρα το να κάτσω να μπαίνω σε κάθε υποκατάλογο και να αλλάζω τα access rights των περιεχομένων αρχείων είναι κάτι πολύ επίπονο γιατι γίνεται ένα χάος με subdirectories. Θα μπορούσε κανείς να μου δείξει κάποιο script που θα μπορούσα να τρέξω για να κάνω τα παραπάνω? Ευχαριστώ εκ των προτέρων.

Κώστας
_________________
Honor guide me...
Back to top
View user's profile Send private message
parapente
Tux's lil' helper
Tux's lil' helper


Joined: 28 Jul 2003
Posts: 139
Location: Greece

PostPosted: Fri Dec 12, 2003 9:58 pm    Post subject: Reply with quote

Bash rulez! :D
Ελπίζω να δουλέψει καλά και σε εσένα. Προγραμματισμός + δοκιμή δεν πήρε παραπάνω από 5 λεπτά :P . Το τρέχεις ως εξής:

πρόγραμμα φάκελος_με_mp3_με_λάθος_δικαιώματα

Code:

#!/bin/bash

IFS="^M"
traverse()
{
dir=$1
for i in $dir/*;do
        echo $i
        if [ -d $i ]; then
                chmod 755 $i
                traverse $i;
        else
                chmod 644 $i;
        fi
done
}

if [ "$1" != "" ]; then
        traverse $1;
else
        echo "Syntax: $0 dir";
fi
Back to top
View user's profile Send private message
ksenos
Apprentice
Apprentice


Joined: 06 Nov 2003
Posts: 164
Location: Athens, Greece

PostPosted: Fri Dec 12, 2003 11:10 pm    Post subject: Reply with quote

Tnx :)

Omos den doulepse :( . Eno proxoraei kanonika apo kapoio simeio kai meta mou bgazei permision denied sta directories. Kai sto telos to directory pou to dino os parameter mou to bgazei me rights 644. Katalabaino pos douleyei to script kai mou fainetai sosto kai mena omos den mporo na katalabo giati ta petaei ayta :(. Mipos ta paizei eksaitias ton onomatwn ton arxeion kai ton fakelon? Px exo arketa directories pou stin arxi tous bazo i ena ~ i ena _ oste sto sorting na ksexorizoun (einai katigories tragoudion :wink: ). Enigouei tha to palepso kamposo giati einai blakeia na kano double click apo kana filemanager kai na prospathei na to ektelesei anti na to anoiksei me to xmms. Tnx kai pali :D.

p.s. tha sou edina to output alla tha itan terastio gia na to kano post. sin tois allois den ksero an ginetai redirect to stderr se arxeio :oops:
_________________
Honor guide me...
Back to top
View user's profile Send private message
parapente
Tux's lil' helper
Tux's lil' helper


Joined: 28 Jul 2003
Posts: 139
Location: Greece

PostPosted: Sat Dec 13, 2003 12:48 am    Post subject: Reply with quote

Χμμμ... Τα ~ ίσως προκαλούν κάποια ψιλοπροβληματάκια στο scipt. Τα _ δεν νομίζω. Μπορείς να ανακατευθύνεις το stderr βάζοντας 2> αντί για >. Πχ. αν το ονόμασες το script μου chn τότε αρκεί να δώσεις:
Code:
chn 2> errors
Επίσης μπορείς στο συγκεκριμένο scipt να αφαιρέσεις την γραμμή "echo $i" οπότε ότι πάρεις θα είναι μόνο τα errors.
Back to top
View user's profile Send private message
ksenos
Apprentice
Apprentice


Joined: 06 Nov 2003
Posts: 164
Location: Athens, Greece

PostPosted: Sat Dec 13, 2003 10:40 am    Post subject: Reply with quote

Τελικά τα κατάφερα. Έκανα μερικές μικρούλες αλλαγές (πρόσθεσα μερικα ") και δούλεψε κανονικά. Δεν φταίγαν ουτε τα ~ ουτε τα _ αλλά τα κενά που είχαν τα ονόματα των directories.


Code:

#!/bin/bash

IFS="^M"
traverse()
{
dir=$1
for i in "$dir"/*;do
#        echo $i
   if [ -d "$i" ]; then               
           traverse "$i";
   else
           chmod 644 "$i";
   fi
done
}

if [ "$1" != "" ]; then
        traverse "$1";
else
        echo "Syntax: $0 dir";
fi

_________________
Honor guide me...
Back to top
View user's profile Send private message
parapente
Tux's lil' helper
Tux's lil' helper


Joined: 28 Jul 2003
Posts: 139
Location: Greece

PostPosted: Sat Dec 13, 2003 9:35 pm    Post subject: Reply with quote

Χμμμ... ναι. Έχει δίκαιο. Ξέχασα να πώ ότι το ^M είναι ουσιαστικά ο χαρακτήρας Ctrl+M. Αν το αντικαταστήσεις στο IFS δεν θα χρειάζεσαι και τα "" :wink:
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Greek All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum