Δημοσιεύτηκε: 04 Δεκ 2009, 22:06
από nasosnik
Το παρακάτω είναι ένα test script για να παραμετροποιήσω ένα πρόγραμμα που γράφω.Το κάνω συνεχώς edit και το τρέχω για να δω την συμπεριφορά των εντολών.Το παραθέτω για να ρωτήσω κάποια πράγματα για συγκεκριμένα lines.
Κώδικας: Επιλογή όλων

#Testing bash
#!/bin/bash
echo "Running..."
cd ~/Desktop
wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.6.tar.gz
tar -zxvf sslstrip-0.6.tar.gz
mv sslstrip-0.6 sslstrip
gnome-terminal -e "ping www.google.com" &
gnome-terminal -e "amsn" &
gnome-terminal -e cd bin

Για να γίνω πιο συγκεκριμένος εξηγώ τι θέλω να κάνει το παραπάνω script: Θέλω να κατεβάσει το αρχείο sslstrip-0.6.tar.gz στο Desktop μου, να το αποσυμπιέσει και να το μετονομάσει σε sslstrip.Ύστερα θέλω να ανοίξουν 3 τερματικά και να κάνουν όπως φαίνεται παραπάνω ping,άνοιγμα aMSN και αλλαγή directory σε bin.Όλα γίνονται κανονικά εκτός από την τελευταία εντολή "gnome-terminal -e cd bin" στην οποία ανοίγει το 3ο τερματικό και παίρνω error "There was an error creating the child process for this terminal".

:?:(1) Από ότι έχω παρατηρήσει υπάρχουν εντολές που τρέχουν απ'ευθείας όπως η "cd" και η "ls" και άλλες που τρέχουν συνεχώς μέχρι να τις σταματήσει ο χρήστης όπως η "top" και η "ping".Επομένως στο τέλος των εντολών που συνεχίζουν να τρέχουν πρέπει να βάζω "&" για να μπορέσει να ξεκινήσει η επόμενη εντολή σε άλλο παράθυρο.Σωστό είναι αυτό?

:?:(2) Το πρώτο μέρος του script δηλαδή μέχρι και την εντολή "mv",τρέχει κανονικά αλλά το παράθυρο που εκτελείται μετά κλείνει.Πως γίνεται να το κρατήσω το παράθυρο αυτό ανοικτό?Παράδειγμα πως να τρέξω την "gnome-terminal -e "echo something"" και το παράθυρο που θα ανοίξει να μείνει ανοικτό?

:?:(3) Τα σύμβολα && και & στο τέλος μιας εντολής σημαίνουν "εκτέλεσε την επόμενη εντολή αν η παρούσα εκτελέστηκε με επιτυχία" και "εκτέλεσε την επόμενη εντολή χωρίς να περιμένεις την παρούσα να τελειώσει".Έτσι είναι ή κάνω λάθος?Επίσης αν στο τέλος της εντολής δεν έχει τίποτα από τα παραπάνω με ποιά λογική εκτελείται η επόμενη εντολή? (εννοώ την επόμενη γραμμή).

:?:(4) Τι σύμβολο πρέπει να χρησιμοποιήσω στο τέλος μιας εντολής για να πετύχω "εκτέλεσε την επόμενη εντολή χωρίς να περιμένεις την παρούσα να τελειώσει αλλά μόνο αν η παρούσα εκτελέστηκε με επιτυχία".Δηλαδή συνδιασμός των && και &.

:?:(5) Σε κάποιες περιπτώσεις όπως η επόμενη που παραθέτω σταματάω την εντολή "ping" που εκτελείται στο τερματικό με Ctrl+C και η εντολή σταματάει να εκτελείται στιγμιαία και αμέσως μετά ξεκινάει να εκτελείται πάλι από την αρχή.
Κώδικας: Επιλογή όλων
#!/bin/bash
cd ~/Desktop &&
ping www.google.com &
mkdir TEST


Ευχαριστώ προκαταβολικά :)