View previous topic :: View next topic |
Author |
Message |
ksenos Apprentice
Joined: 06 Nov 2003 Posts: 164 Location: Athens, Greece
|
Posted: Fri Dec 12, 2003 8:16 pm Post subject: chmod |
|
|
Γεια και χαρά σε όλους.
Θα ήθελα να ρωτήσω το εξής:
Στο directory με τα mp3 ήθελα να αλλάξω λίγο τα access rights ώστε να μπορούν να τα ακούν και οι αδελφές μου. Οπότε και χρησιμοποιήσα chmod -R 644 *. Το πρόβλημα που προέκυψε απο αυτό ήταν οτι τα directories δεν μπορούσαν να ανοιχθούν. Έτσι αναγκαστικά έτρεξα chmod -R 755 *. Έψαξα πολύ αλλά δεν κατάφερα να βρώ τρόπο να ξεχωρίσω directory απο αρχείο χρησιμοποιώντας κάποιο switch. Τώρα το να κάτσω να μπαίνω σε κάθε υποκατάλογο και να αλλάζω τα access rights των περιεχομένων αρχείων είναι κάτι πολύ επίπονο γιατι γίνεται ένα χάος με subdirectories. Θα μπορούσε κανείς να μου δείξει κάποιο script που θα μπορούσα να τρέξω για να κάνω τα παραπάνω? Ευχαριστώ εκ των προτέρων.
Κώστας _________________ Honor guide me... |
|
Back to top |
|
|
parapente Tux's lil' helper
Joined: 28 Jul 2003 Posts: 140 Location: Greece
|
Posted: Fri Dec 12, 2003 9:58 pm Post subject: |
|
|
Bash rulez!
Ελπίζω να δουλέψει καλά και σε εσένα. Προγραμματισμός + δοκιμή δεν πήρε παραπάνω από 5 λεπτά . Το τρέχεις ως εξής:
πρόγραμμα φάκελος_με_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 |
|
|
ksenos Apprentice
Joined: 06 Nov 2003 Posts: 164 Location: Athens, Greece
|
Posted: Fri Dec 12, 2003 11:10 pm Post subject: |
|
|
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 ). 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 .
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 _________________ Honor guide me... |
|
Back to top |
|
|
parapente Tux's lil' helper
Joined: 28 Jul 2003 Posts: 140 Location: Greece
|
Posted: Sat Dec 13, 2003 12:48 am Post subject: |
|
|
Χμμμ... Τα ~ ίσως προκαλούν κάποια ψιλοπροβληματάκια στο scipt. Τα _ δεν νομίζω. Μπορείς να ανακατευθύνεις το stderr βάζοντας 2> αντί για >. Πχ. αν το ονόμασες το script μου chn τότε αρκεί να δώσεις:Επίσης μπορείς στο συγκεκριμένο scipt να αφαιρέσεις την γραμμή "echo $i" οπότε ότι πάρεις θα είναι μόνο τα errors. |
|
Back to top |
|
|
ksenos Apprentice
Joined: 06 Nov 2003 Posts: 164 Location: Athens, Greece
|
Posted: Sat Dec 13, 2003 10:40 am Post subject: |
|
|
Τελικά τα κατάφερα. Έκανα μερικές μικρούλες αλλαγές (πρόσθεσα μερικα ") και δούλεψε κανονικά. Δεν φταίγαν ουτε τα ~ ουτε τα _ αλλά τα κενά που είχαν τα ονόματα των 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 |
|
|
parapente Tux's lil' helper
Joined: 28 Jul 2003 Posts: 140 Location: Greece
|
Posted: Sat Dec 13, 2003 9:35 pm Post subject: |
|
|
Χμμμ... ναι. Έχει δίκαιο. Ξέχασα να πώ ότι το ^M είναι ουσιαστικά ο χαρακτήρας Ctrl+M. Αν το αντικαταστήσεις στο IFS δεν θα χρειάζεσαι και τα "" |
|
Back to top |
|
|
|