Τα πάντα για το Bash...

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

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

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό Learner » 08 Οκτ 2014, 12:39

spyroskaftanis έγραψε:Για να σου εξηγήσω καλύτερα τι θέλω να κάνω, έχω ένα c++ προγραμματάκι με qt και όταν κλικάρω κάποιο κουμπί καλώ το script μέσω της system(). Οπότε το script ενεργοποιείται τότε·δε το εξήγησα καλά πριν.

Ναι,
εγώ νόμιζα ότι είχες φτιάξει κάποιο application.desktop κουμπί (launcher) που πατούσες, καλούσε το script...κλπ. Οπότε, πάρτο ως debugging το παραπάνω, διότι c++ , qt ..κλπ δεν γνωρίζω. Δεν ασχολούμαι.

Πάντως, σε τέτοιες περιπτώσεις είναι καλό να ποστάρεις όλο το concept που έχεις δημιουργήσει, διότι το λάθος μπορεί να βρίσκεται οπουδήποτε.
About Me
NickTux@GitHub

Spoiler: show
1. Ubuntu 18.04 LTS
2. Intel Core i3 CPU M 380 2.53GHz ‖ RAM 6GB ‖ Acer Aspire 5733
3. Intel Integrated Graphics [8086:0046] {i915}
4. wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Άβαταρ μέλους
Learner
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 9765
Εγγραφή: 08 Νοέμ 2010, 21:24
Τοποθεσία: Αθήνα
Launchpad: nicktux
IRC: NickTux
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό spyroskaftanis » 08 Οκτ 2014, 14:18

Ευχαριστώ πολύ για τη βοήθεια. Έκανα τρελή πατέντα τελικά.

Κώδικας: Επιλογή όλων
PASSWD=$(zenity --password --title=Authentication)

echo "echo $PASSWD | sudo -S cp InstallerCreator64bit /usr/bin" > temp
konsole -e bash temp


Πέρασα την εντολή με το pipe σε ένα αρχείο temp (scipt) το οποίο το έδωσα μετά στο konsole (δουλεύει επίσης με τον ίδιο τρόπο και στο xterm, στο gnome-terminal όχι). Στην ουσία το πέρασμα του κωδικού δε μπορεί να εκτελεστεί στον αέρα, γιατί το sudo διαβάζει κωδικό μόνο από το stdin της κονσόλας! :)
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: C/C++,Java, Bash, Android┃ Αγγλικά: Μέτρια (B2) | Γαλλικά: Λίγα (Β1)
Λειτουργικό σε Η/Υ ϰ μοντέλο: |ext4| Fedora 20 σε multirama notbook
Προδιαγραφές ⇛ CPU- Intel(R) Core(TM) 2 Duo @ 2.00GHz│ RAM 2GB │Intel Corporation Mobile GM965/GL960|
my personal blog: http://skaftanis.blogspot.com
my fedora blog : http://fedora-gr.blogspot.com/
My New Project: http://showmeyourcode.co.nf/
CEID upatras 3rd year student.
Άβαταρ μέλους
spyroskaftanis
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 538
Εγγραφή: 23 Φεβ 2009, 22:04
Τοποθεσία: Αργολίδα
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό fkol k4 » 08 Οκτ 2014, 16:23

Μία λύση χωρίς πατέντα θα ήταν να ψάξεις αν είναι εγκαταστημένο κάποιο από τα gksudo|kdesudo και να χρησιμοποιήσεις αυτό αντί του απλού sudo, αλλά πιστεύω ακόμη καλύτερα θα ήταν να χρησιμοποιήσεις το pkexec για την εντολή, υπάρχει (νομίζω) σε όλα τα συστήματα και έχει δικό του παράθυρο για την είσοδο του κωδικού.
Ένα ακόμη θετικό είναι πως δεν χρειάζεται να αποθηκεύεις τον κωδικό στο script.
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό lepidas » 14 Δεκ 2014, 15:06

μια ερώτηση:

Κώδικας: Επιλογή όλων
sed -i "19i $a" height.html

με αυτό γράφει τη μεταβλητή a στη γραμμή 19, ποιά είναι η σύνταξη για παραπανω απο 1 μεταβλητή σε πολλές σειρές στο ίδιο αρχείο?

δλδ δε θελω να γραψω ενα σκριπτ τετοιου τύπου γιατι έχω περίπου 80 μεταβλητες
Κώδικας: Επιλογή όλων
sed -i "19i $a" height.html
sed -i "21i $b" height.html
sed -i "24i $c" height.html
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό Tassos10 » 14 Δεκ 2014, 15:09

Δεν είμαι και κανένα τρομερός στο bash + το ότι δεν είμαι σίγουρος πως έχω καταλάβει απόλυτα, αλλά με μια επανάληψη for ;
π.χ. :
Κώδικας: Επιλογή όλων
#!/bin/bash
for i in $( ls ); do
    echo item: $i
done
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό lepidas » 14 Δεκ 2014, 15:17

δε νομίζω μπορεί να μπει μέσα σε loop το συγκεκριμένο γιατι ο αριθμος της γραμμης δεν εχει καποια ακολουθια/λογικη επαναληψη
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό fkol k4 » 14 Δεκ 2014, 15:21

lepidas έγραψε:δλδ δε θελω να γραψω ενα σκριπτ τετοιου τύπου γιατι έχω περίπου 80 μεταβλητες


Οι μεταβλητές αυτές ακολουθούν κάποιον κανόνα ώστε να μπορούν να υπολογιστούν;
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό lepidas » 14 Δεκ 2014, 15:38

fkol k4 έγραψε:
lepidas έγραψε:δλδ δε θελω να γραψω ενα σκριπτ τετοιου τύπου γιατι έχω περίπου 80 μεταβλητες


Οι μεταβλητές αυτές ακολουθούν κάποιον κανόνα ώστε να μπορούν να υπολογιστούν;
οχι,
αυτό που φαντάζομαι είναι να γράψω 20 γραμμές του τύπου (προφανως χρησιμοποιώ λάθος συντακτικό)

Κώδικας: Επιλογή όλων
sed -i "19i $a", "21i $b", "22i $c", "24i $d" height.html
sed -i "34i $atop", "42i $btop", "66i $ctop", "67i $dtop" height.html


ετσι θα μπορουσα να γραψω 20 γραμμες μεσα στο σκριπτ
το προβλημα μου ειναι οτι δεν ξερω τη σωστη σύνταξη για το παραπάνω
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό lepidas » 14 Δεκ 2014, 15:41

δηλαδή σε μια γραμμή να γραφει στη γραμμη 19 τη μεταβλητη a, στη γραμμη 21 να γραφει τη μεταβλητη b, στη γραμμη 24 να γραφει τη μεταβλητη c, στη γραμμη 25 να γραφει τη μεταβλητη d, ολα αυτα στο αρχειο height.html
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: Τα πάντα για το Bash...

Δημοσίευσηαπό fkol k4 » 14 Δεκ 2014, 16:19

Οκ.

Tότε θα μπορούσες να χρησιμοποιήσεις 2 μεταβλητές τύπου array. Στην πρώτη θα υπάρχουν οι γραμμές προς αλλαγή και στη 2η οι μεταβλητές που θέλεις. Μετά, μπορείς να χρησιμοποιήσεις μαι λούπα που να κάνει indexing και στις δύο και να καλεί τη sed Πχ:
Μορφοποιημένος Κώδικας: Επιλογή όλων
array_1=("21i" "24i" "25i" ... "42i")
array_2=(a b c ... z)

for i in ${array_1[@]}; do
sed -i "${array_1[i]} ${array_2[i]}" height.html
done


Σε python ίσως να ήταν πιο απλό μιας και μπορείς να χρησιμοποιήσεις ένα dictionary αντί δύο arrays, αλλά πάνω κάτω θα ήταν η ίδια ιδέα.
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

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

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron