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

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

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

Δημοσίευσηαπό parenthesis » 13 Ιούλ 2011, 21:03

Εχμ, μόλις ξεκίνησα ν'ασχολούμαι με το 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. Απ'ό,τι καταλαβαίνω, αντί να ψάχνει μόνο στους υποκαταλόγους του τρέχοντος καταλόγου, ψάχνει παντού...

[Δεν ξέρω αν είναι σωστό μέρος για το ποστ, αν όχι παρακαλώ κάποιος να το μεταφέρει...]
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

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

Δημοσίευσηαπό lucinos » 14 Ιούλ 2011, 10:02

Δοκίμασε απλά:
Κώδικας: Επιλογή όλων
   
filename=$1
find $PWD -maxdepth 2 -type f -name "$filename" -print


με την ευκαιρία πες μου την γνώμη σου για τον οδηγό που γράφω
viewtopic.php?f=53&t=18581
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

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

Δημοσίευσηαπό parenthesis » 14 Ιούλ 2011, 14:55

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

Και συγχαρητήρια για τον οδηγό, δεν τον είχα δει! Μαζεύτηκαν πολλά, θα πέσει μπόλικο διάβασμα τώρα... :-)
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Πολύ καλό
2 Dual boot:
  • Ubuntu 13.04 raring 3.8.0-34-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic
  • Fedora 19 Schrödinger’s Cat 3.13.5-101.fc19.x86_64 64bit (el_GR.utf8, gnome)
3 Intel Core i5-3337U CPU @ 1.80GHz ‖ RAM 3844 MiB ‖ TOSHIBA VCUAA - TOSHIBA SATELLITE U940
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 eth0: Realtek RTL8101E/RTL8102E Ethernet [10ec:8136] (rev 05) ⋮ wlan0: Intel Centrino Wireless-N 2230 [8086:0887] (rev c4)
Άβαταρ μέλους
parenthesis
punkTUX
punkTUX
 
Δημοσιεύσεις: 150
Εγγραφή: 06 Οκτ 2009, 22:47
Launchpad: mara_sdr
Εκτύπωση

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

Δημοσίευσηαπό anonarm » 18 Ιούλ 2011, 17:21

βρε παιδιά θα τρελαθώ δηλαδή!!!! κάνω τα εξής..


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

υπάρχουν και άλλοι φάκελοι άλλα χάριν συντομίας δείχνω το συγκεκριμένο πρόβλημα..
(είμαι πολύ καινούργιος με το ubuntu εχω διαβάσει τις τελευταίες μέρες πολλούς οδηγούς και μπορεί να έχω χάσει κάτι αλλά δεν μπορώ να καταλάβω γιατί δεν μπορώ να μπω στον φάκελο.) Ευχαριστώ εκ τον προτέρων!
1 Γνώσεις → Linux: Καθόλου ┃ Προγραμματισμός: Καθόλου ┃ Αγγλικά: Αρχάριος
2 Λειτουργικά → Ubuntu 11.04 natty 32bit (el_GR.UTF-8), Ubuntu 2.6.38-8-generic, Windows 7
3 Προδιαγραφές → 2x Intel Pentium Dual CPU E2160 1.80GHz ‖ RAM 2011 MiB ‖ ASUS INC. P5GC-MX
4 Κάρτες γραφικών: ATI RV610 [Radeon HD 2400 XT] [1002:94c1]
5 Δίκτυα: eth0: Atheros L2 Fast Ethernet [1969:2048] (rev a0)
anonarm
babeTUX
babeTUX
 
Δημοσιεύσεις: 17
Εγγραφή: 13 Ιούλ 2011, 15:16
Εκτύπωση

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

Δημοσίευσηαπό clepto » 18 Ιούλ 2011, 17:31

πρεπει να γραψεις Greekddl/
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό Qdata » 18 Ιούλ 2011, 18:36

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

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


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

Όπου ~ είναι το ίδιο με:
Κώδικας: Επιλογή όλων
/home/xristis
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

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

Δημοσίευσηαπό anonarm » 19 Ιούλ 2011, 13:46

Ευχαριστώ πολύ παίδες.. το έκανα.. ενώ τα είχα κάνει σχεδόν όλα οσα μου είπατε το λάθος μου ήταν το κεφαλαίο "G" εγω το έγραφα με μικρο.. απλά δεν θυμάμαι να διάβασα κάπου οτι παίζουν ρόλο τα κεφαλαία με τα μικρά!!
1 Γνώσεις → Linux: Καθόλου ┃ Προγραμματισμός: Καθόλου ┃ Αγγλικά: Αρχάριος
2 Λειτουργικά → Ubuntu 11.04 natty 32bit (el_GR.UTF-8), Ubuntu 2.6.38-8-generic, Windows 7
3 Προδιαγραφές → 2x Intel Pentium Dual CPU E2160 1.80GHz ‖ RAM 2011 MiB ‖ ASUS INC. P5GC-MX
4 Κάρτες γραφικών: ATI RV610 [Radeon HD 2400 XT] [1002:94c1]
5 Δίκτυα: eth0: Atheros L2 Fast Ethernet [1969:2048] (rev a0)
anonarm
babeTUX
babeTUX
 
Δημοσιεύσεις: 17
Εγγραφή: 13 Ιούλ 2011, 15:16
Εκτύπωση

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

Δημοσίευσηαπό Qdata » 19 Ιούλ 2011, 14:06

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


Το Linux κάνει διακρίσεις μεταξύ κεφαλαίων και μικρών χαρακτήρων(γραμμάτων) και όχι μόνο(πχ και στις εντολές). ;)
Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση

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

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

Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

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

Δημοσίευσηαπό learne/hack » 08 Μαρ 2012, 14:22

Μπράβο πολύ καλή δουλειά!!:)
Spoiler: show
1 Linux: Μέτριος ┃ Προγραμματισμός: Αρχάριος ┃ Αγγλικά: Αρχάριος
2 Ubuntu 11.10 oneiric 64bit (el_GR.UTF-8), Ubuntu 3.0.0-14-generic, Windows 7
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3963 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] (rev a2)
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
learne/hack
babeTUX
babeTUX
 
Δημοσιεύσεις: 25
Εγγραφή: 09 Οκτ 2009, 16:40
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Οδηγοί - How to - Tutorials