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

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

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

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

Δημοσίευσηαπό dancer_69 » 09 Ιουν 2012, 13:28

Υπάρχει η δυνατότητα χρήσης drag and drop, όπως γίνεται στα windows, όπου μπορεί να γίνει drag and drop ενος αρχείου σε ένα αρχείο batch, και να εκτελεστεί μια ενέργεια σε αυτό το αρχείο, στο bash?
Συγκεκριμένα, πρόκειται για το παρακάτω αρχείο αυτόματης εγκατάστασης πακέτου σε android, με τη χρήση του drag and drop το .apk πακέτου:
Κώδικας: Επιλογή όλων
@echo off
IF (%1)==() GOTO filenotexist
goto fileexist
else.
goto filenotexist

:fileexist
ECHO Attempting to install %1...
adb install %1
PAUSE
exit
:filenotexist
set /p filename=What is the filename:
ECHO .
ECHO ..
ECHO ...
ECHO Attempting to install %filename%...
adb install %filename%
PAUSE
exit

Μπορεί λοιπόν να γίνει κάτι παρόμοιο με ένα bash script?
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 16.04 xenial 4.4.0-21-generic 64bit (el_GR.UTF-8, XFCE xfce), Windows 7, Manjaro Linux (15.09) 4.2-x86_64, Manjaro Linux 4.2-x86_64
3 AMD FX 4300 3,8GHz ‖ RAM 8GiB ‖ Asrock 980DE3/U3S3
4 nVidia GF108 [GeForce GT 630] [10de:0f00] {nvidia}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
dancer_69
babeTUX
babeTUX
 
Δημοσιεύσεις: 102
Εγγραφή: 02 Αύγ 2009, 03:11
Εκτύπωση

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

Δημοσίευσηαπό simosx » 09 Ιουν 2012, 13:42

dancer_69 έγραψε:Υπάρχει η δυνατότητα χρήσης drag and drop, όπως γίνεται στα windows, όπου μπορεί να γίνει drag and drop ενος αρχείου σε ένα αρχείο batch, και να εκτελεστεί μια ενέργεια σε αυτό το αρχείο, στο bash?


Μπορείς να φτιάξεις ένα πρόγραμμα εντολών Nautilus, οπότε αρκεί πατήσεις δεξί κλικ στο .apk και να επιλέξεις από τη λίστα το πρόγραμμα εντολών «Εγκατάσταση στο κινητό» (θα χρειαστεί να το γράψεις).
Δες στο https://help.ubuntu.com/community/NautilusScriptsHowto για παράδειγμα.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

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

Δημοσίευσηαπό dancer_69 » 09 Ιουν 2012, 14:36

Καλό ακούγεται αυτό, θα το κοιτάξω.
Ευχαριστώ.
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 16.04 xenial 4.4.0-21-generic 64bit (el_GR.UTF-8, XFCE xfce), Windows 7, Manjaro Linux (15.09) 4.2-x86_64, Manjaro Linux 4.2-x86_64
3 AMD FX 4300 3,8GHz ‖ RAM 8GiB ‖ Asrock 980DE3/U3S3
4 nVidia GF108 [GeForce GT 630] [10de:0f00] {nvidia}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 01)
dancer_69
babeTUX
babeTUX
 
Δημοσιεύσεις: 102
Εγγραφή: 02 Αύγ 2009, 03:11
Εκτύπωση

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

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

Καλημέρα σας, με έχει πιάσει ένα κόλλημα τις τελευταίες μέρες να πειράζω την εμφάνιση του τερματικού μου. :angel:

Κι εμείς τι φταίμε θα μου πείτε. Ε, δεν φταίτε, αλλά ίσως ρίξετε καμία ιδεούλα...Εικόνα

Διαβάζοντας διάφορα κυρίως από εδώ, πειράζοντας λίγο τη γραμμή του prompt και λίγο το θέμα χρωμάτων του τερματικού, έχω προς το παρόν καταλήξει σε αυτή τη γραμμή για το prompt:
Κώδικας: Επιλογή όλων
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\d \@: \n\[\033[01;31m\]\h 6.0.5 (squeeze):\n\[\e[01;32m\]\u \[\e[01;35m\]@ \w \$\[\e[0m\] '
η οποία σε συνδυασμό με τα χρώματα που πείραξα , μου δίνει το παρακάτω αποτέλεσμα στο τερματικό:

Αυτό που θα ήθελα να ρωτήσω από όσους ξέρουν τον τρόπο, είναι το πως μπορώ να ενσωματώσω αυτόματα (αν γίνεται κάτι τέτοιο φυσικά) στο prompt κάποια στοιχεία από τις εντολές lsb_release ή/και uname -srm ή και κάποια άλλη εντολή, χωρίς να χρειάζεται να τα περνάω «με το χέρι».

Επίσης, θα ήθελα ν' αντικαταστήσω τη μεταβλητή \d στην αρχή της γραμμής με την \D.Από την man bash, προκύπτει:
Spoiler: show
Κώδικας: Επιλογή όλων
\D{format}
the format is passed to strftime(3) and the result is
inserted into the prompt string; an empty format results
in a locale-specific time representation. The braces are
required
μόνο που δεν μπορώ να καταλάβω τι τύπου θα πρέπει να είναι η σύνταξη μέσα στα braces, οπότε ότι και να έχω γράψει ως τώρα αναγνωρίζεται απλά ως string και τυπώνεται όπως φαίνεται.
Ποια θα έπρεπε να είναι η σύνταξή της ώστε να έχουμε ένα αποτέλεσμα "Ημερομηνία Μήνας Έτος";


EDIT:Αφήνοντας κενό το περιεχόμενο των braces στη μεταβλητή \D υπάρχει ένδειξη, διαπιστώνω όμως πως αυτή αφορά την ώρα και όχι την ημερομηνία, κάτι που θα έπρεπε να το είχα διαπιστώσει νωρίτερα διαβάζοντας το "an empty format results in a locale-specific time representation" της περιγραφής. Εικόνα

Επίσης, βρήκα (πχ εδώ) πως έχουμε τη δυνατότητα να χρησιμοποιήσουμε τη γραμμή


Κώδικας: Επιλογή όλων
PROMPT_COMMAND="<bash command>"
το οποίο μας βοηθά να εκτελέσουμε μια εντολή bash πριν εμφανιστεί το command prompt.

Οπότε, έτσι μπορώ να εμφανίσω τις πληροφορίες που θέλω.
Αυτό που θέλω στη συγκεκριμένη περίπτωση, είναι να ρωτήσω πως μπορώ να ρυθμίσω την εμφάνιση (χρώμα δηλαδή) της εξόδου της εντολής αυτής.



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

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

Δημοσίευσηαπό fkol k4 » 19 Ιουν 2012, 01:02

Λοιπόν, το βρήκα!! (Θέλω emoticon πανηγυρισμού :lol: :lol: )
Κάνοντας τη γραμμή του prompt
Κώδικας: Επιλογή όλων
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\D{%A %e %b %Y %H:%M.%S}\n\[\033[01;31m\]\[$(lsb_release -sd) - $(uname -rsm)\n\[\e[01;32m\]\u \[\e[01;35m\]@ \w \$\[\e[0m\] '
παίρνω το αποτέλεσμα
Κώδικας: Επιλογή όλων
Τρίτη 19 Ιούν 2012 00:52.16
Debian GNU/Linux 6.0.5 (squeeze) - Linux 3.4.0-fkol-debian-latest i686
debian-fkol-k4 @ ~ $
ή


Εικόνα Εικόνα Εικόνα


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

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

Δημοσίευσηαπό medigeek » 19 Ιουν 2012, 08:46

Νομίζω ότι με το PROMPT_COMMAND δεν κάνεις αυτό που θες. Αλλάζει τον τίτλο του παραθύρου:
http://askubuntu.com/questions/22413/ho ... inal-title

Ορίστε αυτό που χρησιμοποιώ εγώ:
https://forum.ubuntu-gr.org/viewtopic.php?f=45&t=19626
Κώδικας: Επιλογή όλων
PS1='┌─(\[\033[01;32m\]\u@\h\[\033[00m\])────────────────────────────────────────────────┐\n\
Directory: \[\033[01;34m\]\w\[\033[00m\]\n\
└─(\D{%Y-%m-%d})──(\t)───────────────────────────────────────────────┘\n\
\$ '


Μπορείς να εκτελέσεις εντολές μέσα στο PS1:
Κώδικας: Επιλογή όλων
PS1='`date`\n\
┌─(\[\033[01;32m\]\u@\h\[\033[00m\])───────────────────────────────────────────$
Directory: \[\033[01;34m\]\w\[\033[00m\]\n\
└─(\D{%Y-%m-%d})──(\t)───────────────────────────────────────────────┘\n\
\$ '


Ανοίγεις καινούργιο τερματικό και το δοκιμάζεις. :)
Κύπριος; Κόπιασε στο 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 » 19 Ιουν 2012, 09:13

Δεν ξέρω, αυτό το κομμάτι με την PROMPT_COMMAND δεν το πιάνω με τίποτα... :problem:
Διαβάζω εδώ, πως έχεις τη δυνατότητα να εκτελέσεις μια εντολή πριν εμφανιστεί το prompt, αλλά το μόνο που έχω καταφέρει είναι η echo :wtf: και μάλιστα όχι με μεταβλητή (για παράδειγμα την έξοδο της pwd), αλλά σε καθαρό string που μου είναι άχρηστο :wtf: , αυτό μπορώ να το κάνω και στο PS1 και μάλιστα με χρώμα.

medigeek έγραψε:Μπορείς να εκτελέσεις εντολές μέσα στο PS1:

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

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

Δημοσίευσηαπό pmav99 » 05 Σεπ 2012, 14:59

έστω ότι έχω ένα αρχείο στο εξής absolute path
Κώδικας: Επιλογή όλων
/home/user/foo_dir/foo_subdir/foo_file

Θέλω να κάνω μια εντολή για bash η οποία να αντιγράφει το συγκεκριμένο αρχείο σε μία θέση που θα δίνω εγώ σαν όρισμα. Δηλαδή να γράφω
Κώδικας: Επιλογή όλων
copy_foo ../custom_name

και να αντιγράφεται το αρχείο foo_file στον ανώτερο ιεραρχικά φάκελο με το όνομα custom_name.

Ουσιαστικά δηλαδή θέλω ένα alias για το
Κώδικας: Επιλογή όλων
cp /home/user/foo_dir/foo_subdir/foo_file ../custom_name
Όπου το custom_name είναι μεταβλητή

Ποιος μπορεί να βοηθήσει?
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 05 Σεπ 2012, 17:32

@pmav99
Δεν έχω ιδιαίτερες γνώσεις από bash scripting, αλλά νομίζω ότι το παρακάτω δουλεύει αν κατάλαβα σωστά τι θες να κάνεις.

Κώδικας: Επιλογή όλων
#!/bin/bash
#file: copy_foo

cp /home/user/foo_dir/foo_subdir/foo_file $1

Η μεταβλητή $1 είναι το πρώτο όρισμα που θα περάσεις απ' την command line τρέχοντας το copy_foo.
Αντίστοιχα μπορείς να χρησιμοποιήσεις τις $2, $3 κοκ.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό pmav99 » 05 Σεπ 2012, 18:06

Πολύ ωραία ευχαριστώ!
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

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

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