Δημοσιεύτηκε: 05 Ιουν 2014, 11:57
Έχω σε ένα φάκελο κάποια σκριπτ. 20 συγκεκριμένα. Είναι σε ζευγάρια. Έχουν ονόματα από μέρη του σπιτιού με τις λέξεις ΠΑΝΩ ή ΚΑΤΩ.
Δηλαδή : TRAPEZI ΠΑΝΩ, TRAPEZI ΚΑΤΩ, DOMATIO ΠΑΝΩ, DOMATIO ΚΑΤΩ, NTOYLAPI ΠΑΝΩ, NTOYLAPI ΚΑΤΩ κλπ.
Υπάρχει λόγος που είναι λατινικοί οι χαρακτήρες της πρώτης λέξεις και ελληνικοί οι δεύτεροι για τα πανω κάτω.
Αυτά είναι λοιπόν τα ονόματα των σεναρίων σε κάποιον φάκελο και τρέχουν μια χαρά όταν τα θέλω.
Θέλω κάποια στιγμή να μπορώ να τα αλλάξω και εκεί που τρέχει το .....ΚΑΤΩ, με ένα κλικ σε κάποιο σκριπτ (αυτό που προσπαθώ να φτιάξω)
να τρέξει το αντίστοιχο ΠΑΝΩ.
Δηλαδή τρέχει το DOMATIO ΚΑΤΩ, κάνω κλικ και εκτελείται το DOMATIO ΠΑΝΩ.
Ο τρόπος που σκέφτηκα είναι να βρίσκει το σκριπτ με χρήση της ps -A αν τρέχει κάποιο από αυτά τα σκριπτς και ποιο. Άλλωστε όταν τρέχει ένα από τα 20 αποκλείεται να τρέχει κάποιο από τα υπόλοιπα 19, είναι υπολογισμένο αυτό.
Απλά το σκριπτ να ξέρει ποιο "μέρος του σπιτιού" να τρέξει. Αν ας πούμε τρέχει το TRAPEZI ΚΑΤΩ, με το κλικ να τρέξει το TRAPEZI ΠΑΝΩ και όχι κάποιο άλλο. Αν τρέχει το DOMATIO ΚΑΤΩ, με το κλικ να τρέξει το DOMATIO ΠΑΝΩ.
Γι αυτό νομίζω ότι η ps -A είναι η καταλληλότερη. Τα υπόλοιπα νομίζω ότι πρέπει να είναι με τη sed. Να αφαιρεθουν οι αριθμοί από τη γραμμή της ps -A και να γίνει κάποια αντικαταστάση κειμένου στη λέξη ΚΑΤΩ και να γίνει ΠΑΝΩ. ΝΑ προστεθεί το σύμβολο \ μετά την πρώτη λέξη
για να μην υπάρχει κενό ως διεύθυνση όταν θα λες: exec DOMATIO ΠΑΝΩ ή ./DOMATIO ΠΑΝΩ αλλά να είναι
./DOMATIO\ ΠΑΝΩ.
Κάπως έτσι το σκέφτηκα:
Το συκεκριμένο λέει echo για δοκιμαστικούς λόγους όπως καταλαβαίνεις. Αντί για echo όμως αν του πω exec h ./ μου λέει
(αλλαγή) είναι το όνομα του σκριπτ που προσπαθώ.
Δες τι δίνει και η ps
και η
Βλέπεις; Καταφέρνω να παράγω τις λέξεις που θέλω (DOMATIO\ ΠΑΝΩ) αλλά δεν τρέχει μετά όπως το θέλω με exec. Και δεύτερον άντε και να έτρεχε,
δεν είναι σωστός τροπος έτσι. Αλλιώς πρέπει μάλλον να αφαιρέσω τα κενά και τους αριθμούς από αυτό: 25128 ? 00:00:00 ΔΟΜΑΤΙΟ ΚΑ?
Αλλά ζήτησα μόνο αυτό για να μην ζητάω ολόκληρο το σκριπτ έτοιμο. Μην με πεις και τεμπέλη!
Δηλαδή : TRAPEZI ΠΑΝΩ, TRAPEZI ΚΑΤΩ, DOMATIO ΠΑΝΩ, DOMATIO ΚΑΤΩ, NTOYLAPI ΠΑΝΩ, NTOYLAPI ΚΑΤΩ κλπ.
Υπάρχει λόγος που είναι λατινικοί οι χαρακτήρες της πρώτης λέξεις και ελληνικοί οι δεύτεροι για τα πανω κάτω.
Αυτά είναι λοιπόν τα ονόματα των σεναρίων σε κάποιον φάκελο και τρέχουν μια χαρά όταν τα θέλω.
Θέλω κάποια στιγμή να μπορώ να τα αλλάξω και εκεί που τρέχει το .....ΚΑΤΩ, με ένα κλικ σε κάποιο σκριπτ (αυτό που προσπαθώ να φτιάξω)
να τρέξει το αντίστοιχο ΠΑΝΩ.
Δηλαδή τρέχει το DOMATIO ΚΑΤΩ, κάνω κλικ και εκτελείται το DOMATIO ΠΑΝΩ.
Ο τρόπος που σκέφτηκα είναι να βρίσκει το σκριπτ με χρήση της ps -A αν τρέχει κάποιο από αυτά τα σκριπτς και ποιο. Άλλωστε όταν τρέχει ένα από τα 20 αποκλείεται να τρέχει κάποιο από τα υπόλοιπα 19, είναι υπολογισμένο αυτό.
Απλά το σκριπτ να ξέρει ποιο "μέρος του σπιτιού" να τρέξει. Αν ας πούμε τρέχει το TRAPEZI ΚΑΤΩ, με το κλικ να τρέξει το TRAPEZI ΠΑΝΩ και όχι κάποιο άλλο. Αν τρέχει το DOMATIO ΚΑΤΩ, με το κλικ να τρέξει το DOMATIO ΠΑΝΩ.
Γι αυτό νομίζω ότι η ps -A είναι η καταλληλότερη. Τα υπόλοιπα νομίζω ότι πρέπει να είναι με τη sed. Να αφαιρεθουν οι αριθμοί από τη γραμμή της ps -A και να γίνει κάποια αντικαταστάση κειμένου στη λέξη ΚΑΤΩ και να γίνει ΠΑΝΩ. ΝΑ προστεθεί το σύμβολο \ μετά την πρώτη λέξη
για να μην υπάρχει κενό ως διεύθυνση όταν θα λες: exec DOMATIO ΠΑΝΩ ή ./DOMATIO ΠΑΝΩ αλλά να είναι
./DOMATIO\ ΠΑΝΩ.
Κάπως έτσι το σκέφτηκα:
- Κώδικας: Επιλογή όλων
#!/bin/bash
if trexon_senario=$ ps -A | grep ΚΑ | sed 's/[^ ][^ ]*//' | sed 's/[^ ][^ ]*//' | sed 's/[^ ][^ ]*//' | sed 's/ //' | sed 's/ΚΑ?/ΠΑΝΩ/' | sed 's/[a-zA-Z]\+A/&\\/'
then echo $trexon
else echo "Δεν τρέχει τίποτα"
fi
Το συκεκριμένο λέει echo για δοκιμαστικούς λόγους όπως καταλαβαίνεις. Αντί για echo όμως αν του πω exec h ./ μου λέει
- Κώδικας: Επιλογή όλων
./αλλαγή: γραμμή 5: ./: Είναι κατάλογος
(αλλαγή) είναι το όνομα του σκριπτ που προσπαθώ.
Δες τι δίνει και η ps
- Κώδικας: Επιλογή όλων
malos@malos:~/scripts/ΣΠΙΤΙ$ ps -A
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:06 ksoftirqd/0
..........................................................
.........................................................
.............................................................
25128 ? 00:00:00 ΔΟΜΑΤΙΟ ΚΑ?
............................................................
και η
- Κώδικας: Επιλογή όλων
malos@malos:~/scripts/ΣΠΙΤΙ$ ps -A | grep ΚΑ | sed 's/[^ ][^ ]*//' | sed 's/[^ ][^ ]*//' | sed 's/[^ ][^ ]*//' | sed 's/ //' | sed 's/ΚΑ?/ΠΑΝΩ/' | sed 's/[a-zA-Z]\+A/&\\/'
DOMATIO\ ΠΑΝΩ
Βλέπεις; Καταφέρνω να παράγω τις λέξεις που θέλω (DOMATIO\ ΠΑΝΩ) αλλά δεν τρέχει μετά όπως το θέλω με exec. Και δεύτερον άντε και να έτρεχε,
δεν είναι σωστός τροπος έτσι. Αλλιώς πρέπει μάλλον να αφαιρέσω τα κενά και τους αριθμούς από αυτό: 25128 ? 00:00:00 ΔΟΜΑΤΙΟ ΚΑ?
Αλλά ζήτησα μόνο αυτό για να μην ζητάω ολόκληρο το σκριπτ έτοιμο. Μην με πεις και τεμπέλη!