Σελίδα 11 από 13

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 13 Ιούλ 2011, 21:03
από parenthesis
Εχμ, μόλις ξεκίνησα ν'ασχολούμαι με το bash και έχω κάποιες απορίες. Βασικά, θέλω να γράψω ένα scriptάκι που θα δέχεται από το τερματικό το όνομα ενός αρχείου και θα ψάχνει να το βρει στον τρέχοντα κατάλογο και σε όλους τους υποκαταλόγους του (πρώτου επιπέδου). Αν το βρει, να εμφανίζει την τοποθεσία του.
Η μια λύση είναι να χρησιμοποιήσω την find, κάπως έτσι :
Κώδικας: Επιλογή όλων
filename=$1
find . -maxdepth 2 -type f -name "$filename" -print

Αλλά δεν ξέρω τι να κάνω για να μου εκτυπώνει την πλήρη διαδρομή του αρχείου. Κι επίσης, πώς θα γίνει να τροποποιήσω τον κώδικα ώστε να εμφανίζει μήνυμα "not found" αν δε βρει τπτ?

Η άλλη λύση που σκέφτηκα είναι αυτή :
Κώδικας: Επιλογή όλων
filename=$1
folder=$(pwd)

if [ ! -f "$filename" ]; then
    for dir in $folder/*; do
        if [ -d "$dir" ]; then
            cd "$dir"
            if [ ! -f "$filename" ]; then
                found=false
            else
                found=true
                echo "found"
                locate $filename
            fi
        fi
    done
    if [ $found != true ]; then
        echo "not found"
    fi
else
    locate $filename
fi

Εδώ, πάλι, κάτι δεν πάει καλά με την for. Απ'ό,τι καταλαβαίνω, αντί να ψάχνει μόνο στους υποκαταλόγους του τρέχοντος καταλόγου, ψάχνει παντού...

[Δεν ξέρω αν είναι σωστό μέρος για το ποστ, αν όχι παρακαλώ κάποιος να το μεταφέρει...]

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιούλ 2011, 10:02
από lucinos
Δοκίμασε απλά:
Κώδικας: Επιλογή όλων
   
filename=$1
find $PWD -maxdepth 2 -type f -name "$filename" -print


με την ευκαιρία πες μου την γνώμη σου για τον οδηγό που γράφω
viewtopic.php?f=53&t=18581

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 14 Ιούλ 2011, 14:55
από parenthesis
Ωπ, ευχαριστώ πολύ! Μήπως επίσης μπορείς να μου πεις τι πρόβλημα έχει η for στο 2ο script και δεν κάνει αυτό που θέλω (δλδ να ψάχνει μόνο στους υποκαταλόγους του καταλόγου που βρίσκεται ο χρήστης)?

Και συγχαρητήρια για τον οδηγό, δεν τον είχα δει! Μαζεύτηκαν πολλά, θα πέσει μπόλικο διάβασμα τώρα... :-)

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 18 Ιούλ 2011, 17:21
από anonarm
βρε παιδιά θα τρελαθώ δηλαδή!!!! κάνω τα εξής..


a***@a***-System-Product-Name:~$ ls
examples.desktop Ubuntu One
* Διαγράφηκε * Έγγραφα
a***@a***-System-Product-Name:~$ cd * Διαγράφηκε *
bash: cd: greekdl: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος

υπάρχουν και άλλοι φάκελοι άλλα χάριν συντομίας δείχνω το συγκεκριμένο πρόβλημα..
(είμαι πολύ καινούργιος με το ubuntu εχω διαβάσει τις τελευταίες μέρες πολλούς οδηγούς και μπορεί να έχω χάσει κάτι αλλά δεν μπορώ να καταλάβω γιατί δεν μπορώ να μπω στον φάκελο.) Ευχαριστώ εκ τον προτέρων!

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 18 Ιούλ 2011, 17:31
από clepto
πρεπει να γραψεις Greekddl/

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 18 Ιούλ 2011, 18:36
από Qdata
Όπως σου είπε και ο clepto πρέπει να δώσεις:
Κώδικας: Επιλογή όλων
cd * Διαγράφηκε */

Αυτό ισχύει στην περίπτωση που ο φάκελος στον οποίο θέλεις να μετακινηθείς είναι στην τρέχον τοποθεσία.Αν βρίσκετε πχ στο home σου(/home/xristis) για να μετακινηθείς πχ στον κατάλογο /var/www θα δώσεις όλη την διαδρομή και όχι σκέτο www/ .Δηλαδή θα δώσεις:
Κώδικας: Επιλογή όλων
cd /var/www


Επίσης όταν ένας κατάλογος βρίσκετε μέσα στον προσωπικό σου φάκελο μπορείς να μετακινηθείς σε αυτόν και έτσι:
Κώδικας: Επιλογή όλων
cd ~/* Διαγράφηκε *

Όπου ~ είναι το ίδιο με:
Κώδικας: Επιλογή όλων
/home/xristis

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 19 Ιούλ 2011, 13:46
από anonarm
Ευχαριστώ πολύ παίδες.. το έκανα.. ενώ τα είχα κάνει σχεδόν όλα οσα μου είπατε το λάθος μου ήταν το κεφαλαίο "G" εγω το έγραφα με μικρο.. απλά δεν θυμάμαι να διάβασα κάπου οτι παίζουν ρόλο τα κεφαλαία με τα μικρά!!

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 19 Ιούλ 2011, 14:06
από Qdata
anonarm έγραψε:Ευχαριστώ πολύ παίδες.. το έκανα.. ενώ τα είχα κάνει σχεδόν όλα οσα μου είπατε το λάθος μου ήταν το κεφαλαίο "G" εγω το έγραφα με μικρο.. απλά δεν θυμάμαι να διάβασα κάπου οτι παίζουν ρόλο τα κεφαλαία με τα μικρά!!


Το Linux κάνει διακρίσεις μεταξύ κεφαλαίων και μικρών χαρακτήρων(γραμμάτων) και όχι μόνο(πχ και στις εντολές). ;)

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 21 Ιούλ 2011, 09:39
από lucinos

Re: Τερματικό για...αρχάριους!

ΔημοσίευσηΔημοσιεύτηκε: 08 Μαρ 2012, 14:22
από learne/hack
Μπράβο πολύ καλή δουλειά!!:)