Title: Bash Scripting Post by: Καμένος on February 22, 2008, 16:11:26 pm Ξεκίνησα να διαβάζω bash scripting και είπα να ανοίξω τοπικ για συζήτηση - απορίες κτλ, αφού δε βρήκα κανένα άλλο!
Μπορούμε να ποστάρουμε και προγραμματάκια που φτιάξαμε για αν μοιράζεται η γνώση! Title: Re: Bash Scripting Post by: chggr005 on February 22, 2008, 21:29:41 pm Η Αλεξάνδρεια έχει κάποια καταπληκτικά βιβλία για bash scripting ;)
Title: Re: Bash Scripting Post by: Καμένος on February 25, 2008, 13:02:40 pm Βασικά εγώ διαβάζω το http://tldp.org/LDP/abs/abs-guide.pdf το οποίο είναι αρκετά καλό και έχει πολύ πράμα μέσα..
Λοιπόν η πρώτη απορία: Ήθελα να κάνω ένα script που θα έκανε search σε ένα φάκελο αναδρομικά προς τα μέσα και θα εμφάνιζε τα αρχεία (και τον φάκελο που βρίσκονταν) που το όνομά τους θα περιείχε μία λέξη. Υπάρχει ο απλός τρόπος: Code: echo $(ls -R | grep $word) αλλά δε μου κάνει γιατί δεν μπορώ να ξέρω σε ποιο φάκελο είναι το κάθε αρχείο (εκτός αν μου διαφεύγει κανένας τρόπος). Λοιπον έγραψα το παρακάτω: Code:
Το οποίο παίρνει 1 ή δύο ορίσματα. Το πρώτο είναι η λέξη για την οποία θα κάνει αναζήτηση και το δεύτερο είναι ο φάκελος από τον οποίο θα ξεκινήσει η αναζήτηση. Έφτιαξα μία συνάρτηση execute η οποία θα βρίσκει αναδρομικά τους φακέλους και τα περιεχόμενά τους και θα ελέγχει για τα αρχεία. Τα προβλήματα είναι: 1) Δουλεύει μόνο σε βάθος 1. Δηλαδή εμφανίζει τα αρχεία στον φάκελο που είμαι και στους φακέλους που είναι μέσα σε αυτόν. Σε μεγαλύτερο βάθος δεν πάει. Συγκεκριμένα στην execute η παρακάτω εντολή δουλεύει: if [ ! -z $(echo $j | grep $in1) ] ; then echo "$j --> $in2" ; fi αλλά η εντολή if [ -d $j ] όχι. Δηλαδή βρίσκει ποια αρχεία υπάρχουν αλλά αν υπάρχει φάκελος δεν τον αναγνωρίζει σαν φάκελο. Και δεν έχω ιδέα γιατί!! Πρόβλημα 2) Αν ένας φάκελος έχει κενό δεν βρίσκει τίποτα.. Προφανώς αυτό γίνεται διότι οι εντολές το παίρνουν σαν 2 ορίσματα. Υπάρχει εύκολος τρόπος να αντιμετωπιστεί ή πρέπει να γίνει manualy?? Title: deleted Post by: BOBoMASTORAS on February 25, 2008, 13:36:31 pm deleted
Title: Re: Bash Scripting Post by: Καμένος on February 25, 2008, 13:37:33 pm Δουλεύει indeed.
Πάντα υπάρχει συντομότερος δρόμος.. Πρόλα αυτά γιατί δε δούλευε το παραπάνω? Title: deleted Post by: BOBoMASTORAS on February 25, 2008, 13:38:44 pm deleted
Title: Re: Bash Scripting Post by: Verminoz on February 25, 2008, 13:41:26 pm Βασικά, πρέπει να μπαίνεις και να διαβάζεις τα man των εντολών. Εκεί μέσα βρίσκονται πολλές φορές οι πληροφορίες που χρειάζεσαι αλλά δυστυχώς αρκετά κρυμμένες. Θα ποστάρω κάτι που εγώ έσπασα το κεφάλι μου και έχασα μισή μέρα στο γοογλε και στα man για να το βρω. Τελικά το βρήκα στα man...
Η εντολή grep παίρνει πολλαπλά ορίσματα έτσι: grep -F -e 'orisma1' -e 'orisma2' -e 'orisma3'......κοκ Title: Re: Bash Scripting Post by: Aurelius on February 25, 2008, 16:33:45 pm Για πειτε καμια καλη ιδεα για κανα scriptακι???
Title: Re: Bash Scripting Post by: Aurelius on February 26, 2008, 14:35:22 pm Μπορουμε να το κανουμε και σε μορφη μινι - διαγωνισμου. Να βαζει καποιος μια ιδεα, και μεσα σε 1,2,3 μερες να προσπαθουμε να την υλοποιησουμε. Οποιος το κανει "καλυτερα", δηλαδη πιο απλο και πιο γρηγορο να "κερδιζει".
Title: Re: Bash Scripting Post by: Καμένος on February 26, 2008, 14:49:11 pm Καλό ακούγεται! Για πείτε καμιά ιδέα...
Title: Re: Bash Scripting Post by: Aurelius on February 26, 2008, 14:53:36 pm Βασικα, δεν ξερω και μεχρι τι μπορει να υλοποιηθει με bash scripting. Για παραδειγμα, να μην σου ανοιγει σαν email client τον evolution, αλλα οποιον θες εσυ, π.χ. thunderbird. Αυτο θα γινεται?
Title: Re: Bash Scripting Post by: Verminoz on February 26, 2008, 15:56:55 pm Βασικα, δεν ξερω και μεχρι τι μπορει να υλοποιηθει με bash scripting. Για παραδειγμα, να μην σου ανοιγει σαν email client τον evolution, αλλα οποιον θες εσυ, π.χ. thunderbird. Αυτο θα γινεται? Όταν λες να σου ανοίγει τι εννοεις? Όταν πατάς link στον browser? Title: Re: Bash Scripting Post by: Aurelius on February 26, 2008, 16:05:30 pm Ναι. Π.χ. ειναι ενα email σε μια σελιδα, και οταν το πατας, ανοιγει αυτοματα το evolution για να στειλεις σε εκεινη την διευθυνση email. Αντι να ανοιγει τον evolution, να ανοιγει καποιο αλλο προγραμμα. Αλλα δεν νομιζω να μπροει να γινει με bash script.
Title: Re: Bash Scripting Post by: SolidSNK on February 26, 2008, 18:11:41 pm Μέσα και γω :)
Title: Re: Bash Scripting Post by: Aurelius on February 27, 2008, 11:40:37 am Ε ωραια, πειτε καμια ιδεα. Μια αλλη ιδεα ειναι να κανει τα greeklish ελληνικα. Δεχεται κανονικα η κονσολα τα ελληνικα?
Title: Re: Bash Scripting Post by: Verminoz on February 27, 2008, 11:51:24 am Ε ωραια, πειτε καμια ιδεα. Μια αλλη ιδεα ειναι να κανει τα greeklish ελληνικα. Δεχεται κανονικα η κονσολα τα ελληνικα? Νομίζω δεν έχει πρόβλημα. Πάντως αυτό που θέτεις είναι προγραμματιστικό πρόβλημα και είναι και αρκετά σύνθετο γιατί δεν πρόκειται περί μιας απλής αντιστοίχισης γραμμάτων. Έχω μια άλλη ιδέα που για bash script ταιριάζει κουτί! Η ιδέα είναι η εξής: Υπάρχουν σε ένα φάκελο αρχεία mp3 ταξινομημένα σε υποφακέλους ανά καλλιτέχνη. Δουλειά του script θα είναι να τα πάρει όλα και να τα μετονομάσει σύμφωνα με τα tags τους και κάποιο συγκεκριμένο pattern (πχ. "Καλλιτέχνης - Άλμπουμ - 05 - Τραγούδι.mp3"). Σαν είσοδο θα παίρνει μόνο το directory που βρίσκονται οι φάκελοι... Πως σας φαίνεται??? Title: Re: Bash Scripting Post by: Aurelius on February 27, 2008, 11:59:26 am Καλο φαινεται και αυτο.
Η να αλλαζει τα tags με βαση καποια δεδομενα, για να μπαινουν σωστα στους διαφορους media players Title: Re: Bash Scripting Post by: Καμένος on February 27, 2008, 12:15:56 pm Έχω μια άλλη ιδέα που για bash script ταιριάζει κουτί! Η ιδέα είναι η εξής: Υπάρχουν σε ένα φάκελο αρχεία mp3 ταξινομημένα σε υποφακέλους ανά καλλιτέχνη. Δουλειά του script θα είναι να τα πάρει όλα και να τα μετονομάσει σύμφωνα με τα tags τους και κάποιο συγκεκριμένο pattern (πχ. "Καλλιτέχνης - Άλμπουμ - 05 - Τραγούδι.mp3"). Σαν είσοδο θα παίρνει μόνο το directory που βρίσκονται οι φάκελοι... Πως σας φαίνεται??? Μια χαρά φαίνεται! Να πούμε μέχρι τις 5 Μαρτίου? Με τι κριτήρια θα τα συγκρίνουμε? Πλήθος εντολών? Title: Re: Bash Scripting Post by: Aurelius on February 27, 2008, 12:26:05 pm Ενταξει, δεν θα τις βγαλουμε και να ις μετρησουυμε. Οποια λυση ειναι πιο κομψη.
Title: Re: Bash Scripting Post by: Καμένος on February 27, 2008, 12:33:20 pm ...
Ποια λύση φοράει καλύτερο κραγιόν ας πουμε??! Title: Re: Bash Scripting Post by: Aurelius on February 27, 2008, 12:39:00 pm Περιπου.
Title: Re: Bash Scripting Post by: Verminoz on February 27, 2008, 15:36:39 pm ... Ποια λύση φοράει καλύτερο κραγιόν ας πουμε??! Πωπω κρυάδες!!!! Ο νικητής κερδίζει ματζούνι! :P Title: Re: Bash Scripting Post by: pmousoul on February 29, 2008, 14:14:13 pm [διαφήμιση mode] Πήρε το μάτι μου ένα πολύ χρήσιμο βιβλίο για κονσόλα στην Αλεξάνδρεια... "A Practical Guide to Linux Commands, Editors, and Shell Programming" βέβαια δεν είναι σε pdf, αλλά θα μπορούσε να τρέξει σε win emulator, ίσως και με wine... πάντως αξίζει τον κόπο. [/διαφήμιση mode] Title: Re: Bash Scripting Post by: rhum on February 29, 2008, 14:53:11 pm βρε παιδια οχι scriptακι για greeklish και mp3-tagging.Υπαρχουν απειρα τετοιου ειδους εκει εξω...
Καμια πιο πρωτοτυπη ιδεα; Title: deleted Post by: BOBoMASTORAS on July 14, 2009, 02:12:08 am deleted
Title: Re: Bash Scripting Post by: λήθη on July 15, 2009, 14:18:16 pm Μπορεις να γραψεις ενα σκριπτακι που να αντικαθιστα τα spaces με underscores αν θυμαμαι καλα
και απο κει και περα να συνεχισεις θα δω αν μπορω να το βρω Title: deleted Post by: BOBoMASTORAS on July 15, 2009, 16:41:59 pm deleted
Title: Re: Bash Scripting Post by: pmousoul on July 15, 2009, 17:02:59 pm πάντως όταν θες να δώσεις στο terminal εντολή να μπεις σε ένα folder που έχει διαστήματα δίνεις π.χ. για το Many Documents την εντολή cd Many\ Documents/ :) Title: Re: Bash Scripting Post by: λήθη on August 27, 2009, 19:48:37 pm bob
Replace spaces in filenames with underscorees ls | while read f; do mv "$f" "${f// /_}";done |