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

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

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

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

Δημοσίευσηαπό Ilias95 » 08 Οκτ 2011, 14:08

clepto έγραψε:έτσι δουλεύει, το είχα δοκιμάσεις και εγώ αυτό, στο περίπου :P
είχα γράψει
Κώδικας: Επιλογή όλων
python -c 'import tes ; func()'
και δεν έπιανε...

Ε ναι. Δεν ξέρει ποια είναι η func() αν δεν την έχεις δηλώσει.
Ή πρέπει να υπάρχει μέσα στον κώδικα ή θα την πάρεις από κάποιο άρθρωμα με: module.function()
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό fkol k4 » 09 Ιαν 2012, 11:47

Για εσάς που ξέρετε από bash μία-δύο ερωτησούλες:
Για την αντικατάσταση ενός string σε ένα αρχείο μέσω τερματικού έχω βρει αυτή την εντολή;
Κώδικας: Επιλογή όλων
sed 's/string1/string2/g' example.txt

Αυτά που θέλω να ρωτήσω είναι:
- Αν το string1 είναι πχ η φράση παπάκι πάει στην ποταμιά και string2 η αρνάκι άσπρο και παχύ,θα πρέπει να χρησιμοποιήσω εισαγωγικά λόγω των κενών ή δεν χρειάζεται;
- Μπορώ να χρησιμοποιήσω wildcards στο example.txt; Μπορώ δηλαδή να χρησιμοποιήσω την εντολή για τα αρχεία *.txt ή τα αρχεία example???.txt ;

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

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

Δημοσίευσηαπό medigeek » 09 Ιαν 2012, 12:20

* Εννοείς έτσι;
Κώδικας: Επιλογή όλων
sed 's/"string 1"/"string 2"/g' example.txt

Δεν χρειάζονται, αν τα προσθέσεις θα ψάχνει χαρακτήρες εισαγωγικών στο κείμενο.
Τα εξωτερικά εισαγωγικα που έβαλες (single quotes) ως 's/bla/bla bla/g' είναι σωστό.

* To "g" είναι για επανάληψη δλδ. χωρίς το g αν έχεις δύο string 1 στην ίδια γραμμή θα αντικαταστήσει μόνο το πρώτο.
Αν είναι σε διαφορετικές γραμμές, θα τις αλλάξει και χωρίς το "g".

έγραψε:
$ echo -e "my string 1\nmy string 2"
my string 1
my string 2
$ echo -e "my string 1\nmy string 2" | sed -e 's/my string/moo/'
moo 1
moo 2


* Προτίμησε να εκτελείς το sed με -e. Έτσι μπορείς να προσθέσεις περισσότερες τροποποιήσεις:
Κώδικας: Επιλογή όλων
sed -e 's/string 1/string 2/' -e 's/other string/other string 2/' example.txt


* Για wildcards φυσικά, υποστηρίζεται σε βαθμό shell (το προσφέρει το bash): http://www.tuxfiles.org/linuxhelp/wildcards.html
* Μπορείς να αποθηκεύσεις αμέσως τις αλλαγές με την επιλογή -i
Αν χρησιμοποιήσεις -i.backup θα αποθηκεύσει το original αρχείο ως myfile.backup
Π.χ. backup:
Κώδικας: Επιλογή όλων
sed -i.backup -e 's/string 1/string 2/g' example*.txt

example*.txt -> Το original αρχείο θα αποθηκευθεί ως example*.txt.backup και τα αρχεία example*.txt θα τροποποιηθούν.
..no backup:
Κώδικας: Επιλογή όλων
sed -i -e 's/string 1/string 2/g' example*.txt

example*.txt -> Το original αρχείο δεν θα αποθηκευθεί και τα αρχεία example*.txt θα τροποποιηθούν.

* Αν για κάποιο λόγο θέλεις να κάνεις match τον χαρακτήρα slash "/", μπορείς να χρησιμοποιήσεις άλλο χαρακτήρα στη θέση του στο sed:
έγραψε:$ echo -e "http://www.moo.com\nhttp://www.moo2.com" | sed -e 's#http://##'
www.moo.com
www.moo2.com



* Υπάρχει μια λίστα με sed one-liners: http://sed.sourceforge.net/sed1line.txt - μπορεί να σου φανεί χρήσιμη :)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

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

Δημοσίευσηαπό fkol k4 » 09 Ιαν 2012, 12:28

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

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

Δημοσίευσηαπό medigeek » 09 Ιαν 2012, 12:47

Όπως γουστάρεις, το ~ (tilde) είναι μια καλή επιλογή! Αυτό θα χρησιμοποιούσα κι εγώ

Υπάρχει και άλλος τρόπος να τα μετονομάσεις με την εντολή rename:
Κώδικας: Επιλογή όλων
rename -n -v 's///' *.backup


Αν θέλεις να προσθέσεις κάτι στην αρχή του αρχείου χρειάζεται ένα backreference:
έγραψε:$ rename -n -v 's/(.*)\.pdf/PDF_$1.pdf/' *.pdf
moo.pdf renamed as PDF_moo.pdf
mpdf.pdf renamed as PDF_mpdf.pdf

$ rename -n -v 's/(.*)\.pdf/.$1.pdf/' *.pdf
moo.pdf renamed as .moo.pdf
mpdf.pdf renamed as .mpdf.pdf


Αφαίρεσε το -n (άσε μόνο το -v) όταν είσαι σίγουρος πως θέλεις να γίνουν οι αλλαγές.
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

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

Δημοσίευσηαπό fkol k4 » 09 Ιαν 2012, 12:59

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

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

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

medigeek έγραψε:Καλωσόρισες. :) Φτιάξε την υπογραφή σου όπως περιγράφεται εδώ: viewtopic.php?f=2&t=279

learne/hack έγραψε:Πως μπορώ να μάθω bash scripting..;;;

viewtopic.php?f=9&t=367
http://tldp.org/LDP/Bash-Beginners-Guid ... index.html
http://tldp.org/LDP/abs/html/index.html


Σε ευχαριστώ πάρα πολύ φίλε για την απάντηση σου και το ενδιαφέρον. Αλλά τίποτα στα ελληνικά για να με διευκολύνει...;; :/
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
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 08 Μαρ 2012, 15:52

learne/hack έγραψε:
medigeek έγραψε:Καλωσόρισες. :) Φτιάξε την υπογραφή σου όπως περιγράφεται εδώ: viewtopic.php?f=2&t=279

learne/hack έγραψε:Πως μπορώ να μάθω bash scripting..;;;

viewtopic.php?f=9&t=367
http://tldp.org/LDP/Bash-Beginners-Guid ... index.html
http://tldp.org/LDP/abs/html/index.html


Σε ευχαριστώ πάρα πολύ φίλε για την απάντηση σου και το ενδιαφέρον. Αλλά τίποτα στα ελληνικά για να με διευκολύνει...;; :/

Το "Bash Guide for Begginers" έχει μεταφραστεί και στα ελληνικά: http://www.it.uom.gr/teaching/linux/bas ... sh-gr.html
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό medigeek » 08 Μαρ 2012, 15:55

learne/hack έγραψε:
Σε ευχαριστώ πάρα πολύ φίλε για την απάντηση σου και το ενδιαφέρον. Αλλά τίποτα στα ελληνικά για να με διευκολύνει...;; :/

Ο πρώτος σύνδεσμος είναι στα ελληνικά: viewtopic.php?f=9&t=367
Το osarena επίσης έγραψε αρκετά άρθρα: http://osarena.net/faqs/termatiko-des-t ... rizes.html
Για τα υπόλοιπα ίσως να βρεις ένα καλό βιβλίο.
[ Κι ένα βιβλίο για να μάθεις καλύτερα αγγλικά ίσως; - τα περισσότερα άρθρα τεχνολογίας είναι στ' αγγλικά δυστυχώς και θα σε βοηθήσει στην αναζήτηση αγγλικών ιστοσελίδων. :) ]
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

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

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

Σας ευχαριστώ πολύ για την βοήθεια σας αν και η αλήθεια είναι πως το πρώτο link : http://www.it.uom.gr/teaching/linux/bas ... sh-gr.html το βρήκα λίγο μετά ;) αλλά σας ευχαριστώ και για το osarena...medigekk. Να 'στε καλά παιδιά ευχαριστώ. :) Επίσης αν έχεις να προτείνεις και κανένα καλό βιβλίο που λες γιατί όχι.. :P ;)
Ευχαριστώ :)
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
Εκτύπωση

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

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

cron