Search the Community

Showing results for tags 'bash'.

The search index is currently processing. Current results may not be complete.
  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • HWBOX | Main
  • HWBOX | Forum
    • HwBox.gr Ανακοινώσεις & Ειδήσεις
    • News/Ειδήσεις
    • Reviews
    • The Poll Forum
    • Παρουσιάσεις μελών
  • Hardware
    • Επεξεργαστές - CPUs
    • Μητρικές Πλακέτες - Motherboards
    • Κάρτες Γραφικών - GPUs
    • Μνήμες - Memory
    • Αποθηκευτικά Μέσα - Storage
    • Κουτιά - Cases
    • Τροφοδοτικά - PSUs
    • Συστήματα Ψύξης - Cooling
    • Αναβαθμίσεις - Hardware
  • Peripherals
    • Οθόνες
    • Πληκτρολόγια & Ποντίκια
    • Ηχεία - Headsets - Multimedia
    • Internet & Networking
    • General Peripherals
  • Overclocking Area
    • HwBox Hellas O/C Team - 2D Team
    • HwBox Hellas O/C Team - 3D Team
    • Hwbot.org FAQ/Support
    • Benchmarking Tools
    • General Overclocking FAQ/Support
    • Hardware Mods
  • Software Area
    • Operating Systems
    • Drivers Corner
    • General Software
    • General Gaming
  • The Tech Gear
    • Mobile Computing
    • Smartphones
    • Tablets
    • Digital Photography & Cameras
  • Off Topic
    • Free Zone
    • XMAS Contest
  • HWBOX Trade Center
    • Πωλήσεις
    • Ζήτηση
    • Καταστήματα & Προσφορές

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Location


Homepage


Interests


Occupation


ICQ


AIM


Yahoo


MSN


Skype


CPU


Motherboard


GPU(s)


RAM


SSDs & HDDs


Sound Card


Case


PSU


Cooling


OS


Keyboard


Mouse


Headset


Mousepad


Console


Smartphone


Tablet


Laptop


Camera


Drone


Powerbank

Found 3 results

  1. [NEWS_IMG=Το τερματικό του Linux στα Windows 10 και επίσημα!]http://www.hwbox.gr/images/news_images/microsoft2a.jpg[/NEWS_IMG] Η Microsoft, ανακοίνωσε στο Build 2016 πως θα φέρει το Bash shell του Linux στα Windows 10. Η νέα προσθήκη θα λάβει χώρα στο Anniversary Update που ετοιμάζει για τα Windows 10 κάποια στιγμή μέσα στο έτος. Η Microsoft συνεργάστηκε με την Canonical για να φέρει την γνωστή λειτουργία και στο περιβάλλον των Windows, δίνοντας έτσι τη δυνατότητα στους developers να φέρουν με μεγαλύτερη ευκολία τις εφαρμογές τους στα Windows κάτι που μέχρι σήμερα ήταν αρκετά πιο δύσκολο. Ο Kevin Gallo της Microsoft ανέφερε πως τα παραπάνω δεν αποτελούν μέρος κάποιου VM αλλά πρόκειται για "native υποστήριξη" μέσω της σχετικής εφαρμογής που θα πρέπει να κατεβάσουν οι χρήστες από το Windows Store, μόλις όμως το Anniversary Update γίνει διαθέσιμο. [img_alt=Το τερματικό του Linux στα Windows 10!]http://www.hwbox.gr/members/2195-albums570-picture61505.png[/img_alt] Διαβάστε περισσότερα εδώ... Και εδώ...
  2. Αρκετός κόσμος φοβάται την χρήση του τερματικού. Όμως πολλές φορές θα είναι ο σωτήρας σας, σε περίπτωση που κάτι θα έχει πάει στραβά. Το πρώτο και πιο βασικό που πρέπει να γνωρίζετε, είναι η εντολή ls (ελ ες) - προέρχεται από την λέξη list - που σας επιτρέπει να βλέπετε τα περιεχόμενα ενός directory. Για να μεταβείτε σε κάποιο dir χρησιμοποιείται την εντολή cd . Αλλά όλα αυτά είναι πολύ γενικά. Ας πάμε να εμβαθύνουμε: Σε αυτό το tutorial θα προσπαθησω να σας μάθω τις βασικές λειτουργίες του shell του Linux. Γνωστό ως bash (Bourne Again Shell). Θα δειξω παραδειγμα έτσι ώστε να μπορείτε να διαβαζετε το κείμενο χωρίς να μπαίνετε στον σκόπο να εκτελείτε τα παραδείγμα που έχω. Παρόλα αυτά σας συνιστώ να το κάνετε, γιατί έτσι θα μάθετε καλύτερα. Πάμε λοιπόν. Η πρώτη εντολή που θα μάθουμε είναι η εντολή ls (προφέρεται ελ ες - το γράφω γιατι ίσως μερικοί να μπερδεύουν το μικρό l με το κεφαλαίο I τα οποία είναι σχεδόν ίδια το Unix shell) και είναι συντομογραφία της λέξης list. Αν μιλούσαμε αγγλικά, τότε δεν θα ήθελε περεταίρω επεξήγηση το θέμα, γιατί θα ήταν προφανές ότι η ls κάνει list τα δεδομένα. Στα ελληνικά τώρα, η εντολή αυτή δείχνει σε μορφή λίστας τα δεδομένα που υπάρχουν τον καταλόγο που βρισκόμαστε. Για παράδειγμα εγω βρίσκομαι στον φακελο home και θα δωσω τωρα ls. Θα μου εμφανίσει ότι υπάρχει μεσα. $ ls amsn_received Desktop mailtext.odt myScripts none Μπορείτε να δείτε και περιεχόμενα άλλων φακέλων χωρίς να χρειάζεται να βρίσκεστε ήδη μέσα τους. Πχ εγω ειμαι οπως ειπα και πριν στο home dir, και θελω να δω τα περιεχόμενα το /etc/apt/ . $ ls /etc/apt apt.conf.d secring.gpg sources.list sources.list.d trustdb.gpg trusted.gpg Ας υποθέσουμε ότι θέλετε να κάνετε κάτι σαν αναζήτηση. Δηλαδή πχ θελω να μου δείξει η ls μονάχα τα *.odt αρχεία που υπάρχουν μέσα στο home dir μου και τίποτα άλλο άσχετο με αυτα. Βρίσκομαι ήδη στο dir άρα γράφω: $ ls *.odt mailtext.odt Οπως βλεπετε το μονο odt αρχειο που ειχα στο home ηταν το mailtext.odt . Επίσης, πάλι, μπορείτε να κάνετε το ίδιο και για άλλους φακέλους, χωρίς να χρειάζεται να είστε βρίσκεστε σε αυτούς. Πχ έσω ότι θέλω να δω πόσα αρχεία *.conf υπάρχουν μεσα στο καταλογο /etc/X11 . $ ls /etc/X11/*.conf /etc/X11/xorg.conf Το μονο αρχείο που υπάρχει ειναι το xorg.conf . Επίσης, μπορούμε να κάνουμε και το άλλο, να θελουμε να βρούμε όλα τα αρχεία τα οποία έχουν στο όνομά τους, την λέξη πχ config και βρίσκονται στο /boot dir. $ ls /boot/*config* /boot/config-2.6.27-10.slh.1-sidux-amd64 /boot/config-2.6.28-0.slh.2-sidux-amd64 Οπως βλεπετε τα παραπανω δυο αρχεία, έχουν μέσα στο όνομά του την λέξη config. Ολη την δουλειά την κάνει αυτός ο αστερίσκος που βάζουμε *. Λέγεται wildmark και ειναι τρομερά καλός για τετοιες χρήσεις της ls. Ας πάμε τώρα και στις παραμέτρους που παίρνει η ls. Ας δοκιμασουμε να δούμε τα δεδομένα που είδαμε πριν στο home σε καταγεγραμένα σε στήλες με αλφαβητική σειρά. Αυτο γίνεται χρησιμοποιώντας την παράμετρο -1 (αριθμός ένα) ή αλλιώς γράφοντας ολόκληρη την εντολή --format=single-column . $ ls -1 amsn_received Desktop mailtext.odt myScripts none ή όπως ειπα με ολοκληρο το path $ ls --format=single-column amsn_received Desktop mailtext.odt myScripts none Τώρα πάμε να δούμε ξανά τα ίδια περιεχόμενα αλλά με κόμμα ανάμεσα τους. Γι αυτό θα κανουμε χρήση της παραμέτρου -m ή αλλιως format=commas . $ ls -m amsn_received, Desktop, mailtext.odt, myScripts, none Τωρα θα μου πειτε, ποιος ο λογος να μπω στον κοπο να βλεπω ενα κομμα. klein mein δηλαδη. Αλλα αν γραφετε ενα script τότε μπορεί πραγματικά να χρειάζεται να είναι χορισμένα με κομμα και τότε είναι που θα με θυμηθείτε (-m απο την λέξη mnemonic). Πάμε τώρα σε κάτι καινουριο που δεν είδαμε μέχρι τώρα. Τα κρυφά αρχεία. Για να δείτε τα κρυφά αρχεία (που αρχίζουν με μια τελεία μπροστά απο το ονομά τους ) θα κάνετε χρήση της παραμέτρου -a ή αλλιώς -all. $ ls --all . .DCOPserver_pontos__0 .gnupg myScripts .. .DCOPserver_pontos_:0 .ICEauthority none .adobe Desktop .kde .openoffice.org2 .amsn .dmrc .kword.autosave.odt .profile amsn_received .elinks .local .qt .bash_history .fluxbox .macromedia .thumbnails .bash_logout .fontconfig mailtext.odt .viminfo .bashrc .gconf .mc .Xauthority .config .gconfd .mcop .xsession-errors .covers .gnome2 .mcoprc .dbus .gnome2_private .mozilla πολύ πράγμα τελικά εχω κρυφο στο home ε ; Χεχε, τωρα ομως βλεπουμε τα παντα - κρυφα και ακρυφα. Αν θελετε μονο τα κρυφα δεν εχετε παρα να γράψετε: $ ls -a . . .DCOPserver_pontos__0 .gnupg myScripts .. .DCOPserver_pontos_:0 .ICEauthority none .adobe Desktop .kde .openoffice.org2 .amsn .dmrc .kword.autosave.odt .profile amsn_received .elinks .local .qt .bash_history .fluxbox .macromedia .thumbnails .bash_logout .fontconfig mailtext.odt .viminfo .bashrc .gconf .mc .Xauthority .config .gconfd .mcop .xsession-errors .covers .gnome2 .mcoprc .dbus .gnome2_private .mozilla Και τώρα κάτι σημαντικό, αν θελετε να δείτε ποια απο αυτα τα αρχεία είναι κατάλογοι, εκτελέσιμα, συντομεύσεις κλπ . . . Δεν έχετε παρα να χρησιμοποιήσετε την παράμετρο -F ή --classify. Οπου θα πρεπει να ξερετε τον παρακατω πινακα: Χαρακτήρας Εννοια * Εκτελέσιμο / Κατάλογος @ Συμβολικός Σύνδεσμος (Συντόμευση) | FIFO = Socket Στο home μου έχω φακέλους. Για να δούμε: $ ls -F amsn_received/ Desktop/ mailtext.odt myScripts/ none/ Στο /bin θα πρέπει να υπάρχουν πολλα εκτελέσιμα αλλά και symbolic links για να δούμε: $ ls -F /bin bash* dash* kill* ping6* touch* bunzip2* date* ln* ps* true* busybox* dd* loadkeys* pwd* umount* bzcat* df* login* rbash@ uname* bzcmp@ dir* ls* readlink* uncompress* bzdiff* dmesg* lsmod* rm* unicode_start* bzegrep@ dnsdomainname* mkdir* rmdir* vdir* bzexe* dumpkeys* mknod* rnano@ which* bzfgrep@ echo* mktemp* run-parts* zcat* bzgrep* egrep* more* sed* zcmp* bzip2* false* mount* setfont* zdiff* bzip2recover* fgconsole* mountpoint* setupcon* zegrep* bzless@ fgrep* mt@ sh@ zfgrep* bzmore* fuser* mt-gnu* sh.distrib@ zforce* cat* grep* mv* sleep* zgrep* chgrp* gunzip* nano* stty* zless* chmod* gzexe* netstat* su* zmore* chown* gzip* open@ sync* znew* chvt* hostname* openvt* tailf* cp* ip* pidof@ tar* cpio* kbd_mode* ping* tempfile* Αυτος ο τρόπος είναι visual απεικόνιση του τύπου αρχείου. Υπάρχει και ο άλλος τρόπος που γίνεται με το χρωμα. Δηλαδή ανάλογα με το τι χρώμα θα είναι το αρχείο θα ξερουμε τι τύπος είναι. Αυτο γίνεται γράφοντας --color . Θα πρέπει όμως να ξέρετε τον παρακάτω πίνακα: Χρώμα Εννοια default shell color Κανονικό Αρχείο Πράσινο Εκτελέσιμο Μπλε Κατάλογος Magenta Symbolic Link Κίτρινο FIFO Magenta Socket Κόκκινο Συμπιεσμένο (tar,zip, deb, rpm) Magenta Φωτογραφία(jpg,gif,png, tiff) Magenta Μουσική(mp3,ogg,wav) Για να δείτε την πληρη λίστα dircolors --print-database(αν και αυτα που γραφω ειναι υπεραρκετα). Το πιο γαμάτο της υπόθεση είναι να συνδιάσετε την -F με την --color. Εκει αξίζει το θέαμα. $ ls -F --color amsn_received/ Desktop/ mailtext.odt myScripts/ none/ Στην αρχη είδατε τα περιέχομενα του καταλογου home στον οποιο και βρίσκομαι τώρα. Θα σας δείξω πως μπορείτε να βλέπετε τα περιεχόμενα του home αλλά και τα περιεχόμενα αυτών. $ ls -R .: amsn_received Desktop mailtext.odt myScripts none ./amsn_received: ./Desktop: konqbrowser.desktop sidux-irc.desktop trash.desktop media.desktop sidux-manual.desktop ./myScripts: example1.sh if.sh script1.sh script3.sh script5.sh hello.sh loop.sh script2.sh script4.sh script6.sh ./none: Οπως βλέπετε, εχουμε 4 φακέλους (amsn_received, Desktop, myScripts, none) και βλέπετε και τα περιέχομενα αυτών. Επίσης αν υπάρχαν και φάκελοι σε αυτους τότε θα τους βλέπατε και αυτούς. Και τωρα αρχίζουν τα δύσκολα. Μην μασας όμως, τι hardcore geek θα γίνεις αν δεν ξέρεις file δικαίωμαs και ownerships. Χμ ; Η Εντολή που ειναι η πιο συχνή της ls είναι η παράμετρος -l γνωστή και ως --format=long ). Παμε με παραδείγματα: $ ls -l total 52 drwx------ 2 blackslash13 blackslash13 4096 2008-12-28 23:30 amsn_received drwxr-xr-x 2 blackslash13 blackslash13 4096 2008-12-27 13:00 Desktop -rw-r--r-- 1 blackslash13 blackslash13 34459 2008-12-29 15:23 mailtext.odt drwxr-xr-x 2 blackslash13 blackslash13 4096 2008-12-28 23:08 myScripts drwxr-xr-x 2 root root 4096 2008-12-27 09:35 none Ας πάρουμε την "drwx------ 2 blackslash13 blackslash13 4096 2008-12-28 amsn_received" Κοιτάμε απο Δεξιά προς τα Αριστερά. Το αρχείο λέγεται amsn_received. Τροποποιήθηκε ή δημιουργήθηκε στις 23:30 τον Δεκέμβριο στις 28, έτους 2008 (2008-12-28). Το μέγεθος που καταλαμβάνει στον δίσκο είναι 4096 bytes. Πιο δίπλα έχουμε τον owner που είναι ο blackslash13(εγώ) και το group (blackslash13) . Αλλα άτομα που ειναι στο group εκτός απο μενα έχουν κ αυτά κάποια πρόσβαση στο αρχείο. Το τελευταίο μέρος ειναι ένας κωδικός μιας σκοτεινής εποχής. Υπάρχουν 10 αλφαριθμητικά εκει, χωρισμενα σε 4 ομάδες. Πρώτη ομάδα: Ενα γράμμα (εδω ειναι το d) Δευτερη ομάδα: 3 γράμματα (εδώ είναι rwx) Τριτη ομάδα: 3 γράμματα (εδώ είναι --- δηλαδη τιποτα) Τεταρτη ομάδα: 3 γράμματα (εδώ είναι --- δηλαδη παλι τιποτα) Η πρώτη ομάδα σου λέει για τον τύπο του αρχείου (directory, exacutable κλπ). Το οποίο μπορείς να το δείς και αλλιώς γράφοντας εναν συνδιασμό ls- lF --color . Αλλιώς θα πρέπει να ξερετε τον παρακάτω πίνακα: Χαρακτήρας Εννοια - κανονικο αρχειο - Εκτελέσιμο d Κατάλογος (directory) l Συντόμευση (symbolic link) s Socket b block device (πχ sda1 κλπ) c character device p Named pipe για να παρετε μια ιδέα κάντε ενα ls -l /dev να δείτε τι παίζει. $ ls -l /dev total 0 crw-rw---- 1 root video 10, 175 2008-12-29 16:31 agpgart crw-rw---- 1 root audio 14, 4 2008-12-29 16:31 audio drwxr-xr-x 2 root root 80 2008-12-29 16:30 bsg drwxr-xr-x 3 root root 60 2008-12-29 16:30 bus lrwxrwxrwx 1 root root 4 2008-12-29 16:30 cdrom -> scd0 lrwxrwxrwx 1 root root 4 2008-12-29 16:30 cdrw -> scd0 crw------- 1 root root 5, 1 2008-12-29 14:31 console lrwxrwxrwx 1 root root 11 2008-12-29 16:31 core -> /proc/kcore crw-rw---- 1 root root 10, 63 2008-12-29 16:30 cpu_dma_latency drwxr-xr-x 6 root root 120 2008-12-29 16:30 disk drwxr-xr-x 2 root root 60 2008-12-29 14:31 dri crw-rw---- 1 root audio 14, 3 2008-12-29 16:31 dsp lrwxrwxrwx 1 root root 4 2008-12-29 16:30 dvd -> scd0 lrwxrwxrwx 1 root root 4 2008-12-29 16:30 dvdrw -> scd0 crw-rw---- 1 root video 29, 0 2008-12-29 16:30 fb0 lrwxrwxrwx 1 root root 13 2008-12-29 16:31 fd -> /proc/self/fd crw-rw-rw- 1 root root 1, 7 2008-12-29 16:30 full crw-rw---- 1 root fuse 10, 229 2008-12-29 14:31 fuse srwxrwxrwx 1 root root 0 2008-12-29 14:31 gpmctl crw-rw---- 1 root root 10, 228 2008-12-29 16:30 hpet prw------- 1 root root 0 2008-12-29 16:30 initctl drwxr-xr-x 3 root root 280 2008-12-29 16:31 input crw-rw---- 1 root root 1, 11 2008-12-29 16:30 kmsg srw-rw-rw- 1 root root 0 2008-12-29 14:31 log brw------- 1 root root 7, 0 2008-12-29 16:31 loop0 lrwxrwxrwx 1 root root 13 2008-12-29 16:31 MAKEDEV -> /sbin/MAKEDEV drwxr-xr-x 2 root root 60 2008-12-29 16:30 mapper crw-rw---- 1 root root 10, 227 2008-12-29 16:30 mcelog crw-r----- 1 root kmem 1, 1 2008-12-29 16:30 mem crw-rw---- 1 root audio 14, 0 2008-12-29 16:31 mixer drwxr-xr-x 2 root root 60 2008-12-29 16:31 net crw-rw---- 1 root root 10, 62 2008-12-29 16:30 network_latency crw-rw---- 1 root root 10, 61 2008-12-29 16:30 network_throughput crw-rw-rw- 1 root root 1, 3 2008-12-29 16:30 null crw-r----- 1 root kmem 1, 4 2008-12-29 16:30 port crw------- 1 root root 108, 0 2008-12-29 16:31 ppp crw-rw---- 1 root root 10, 1 2008-12-29 16:30 psaux crw-rw-rw- 1 root root 5, 2 2008-12-29 16:48 ptmx drwxr-xr-x 2 root root 0 2008-12-29 16:30 pts crw-rw-rw- 1 root root 1, 8 2008-12-29 16:30 random lrwxrwxrwx 1 root root 4 2008-12-29 16:31 root -> sda1 lrwxrwxrwx 1 root root 4 2008-12-29 16:31 rtc -> rtc0 crw-rw---- 1 root audio 252, 0 2008-12-29 16:31 rtc0 brw-rw---- 1 root cdrom 11, 0 2008-12-29 16:30 scd0 brw-rw---- 1 root disk 8, 0 2008-12-29 16:30 sda brw-rw---- 1 root disk 8, 1 2008-12-29 14:31 sda1 brw-rw---- 1 root disk 8, 2 2008-12-29 16:30 sda2 brw-rw---- 1 root disk 8, 3 2008-12-29 16:30 sda3 crw-rw---- 1 root audio 14, 1 2008-12-29 16:31 sequencer crw-rw---- 1 root audio 14, 8 2008-12-29 16:31 sequencer2 crw-rw---- 1 root root 21, 0 2008-12-29 16:30 sg0 crw-rw---- 1 root cdrom 21, 1 2008-12-29 16:30 sg1 drwxrwxrwt 3 root root 60 2008-12-29 14:31 shm crw-rw---- 1 root root 10, 231 2008-12-29 16:30 snapshot drwxr-xr-x 2 root root 180 2008-12-29 16:31 snd lrwxrwxrwx 1 root root 24 2008-12-29 16:31 sndstat -> /proc/asound/oss/sndstat lrwxrwxrwx 1 root root 4 2008-12-29 16:30 sr0 -> scd0 lrwxrwxrwx 1 root root 15 2008-12-29 16:31 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 2008-12-29 16:31 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 2008-12-29 16:31 stdout -> /proc/self/fd/1 crw-rw-rw- 1 root root 5, 0 2008-12-29 16:30 tty crw-rw---- 1 root root 4, 0 2008-12-29 16:30 tty0 crw------- 1 root root 4, 1 2008-12-29 14:31 tty1 crw-rw---- 1 root root 4, 10 2008-12-29 16:30 tty10 crw-rw---- 1 root root 4, 11 2008-12-29 16:30 tty11 crw-rw---- 1 root root 4, 12 2008-12-29 16:30 tty12 crw-rw---- 1 root root 4, 13 2008-12-29 16:30 tty13 crw-rw---- 1 root root 4, 14 2008-12-29 16:30 tty14 crw-rw---- 1 root root 4, 15 2008-12-29 16:30 tty15 crw-rw---- 1 root root 4, 16 2008-12-29 16:30 tty16 crw-rw---- 1 root root 4, 17 2008-12-29 16:30 tty17 crw-rw---- 1 root root 4, 18 2008-12-29 16:30 tty18 crw-rw---- 1 root root 4, 19 2008-12-29 16:30 tty19 crw------- 1 root root 4, 2 2008-12-29 14:31 tty2 crw-rw---- 1 root root 4, 20 2008-12-29 16:30 tty20 crw-rw---- 1 root root 4, 21 2008-12-29 16:30 tty21 crw-rw---- 1 root root 4, 22 2008-12-29 16:30 tty22 crw-rw---- 1 root root 4, 23 2008-12-29 16:30 tty23 crw-rw---- 1 root root 4, 24 2008-12-29 16:30 tty24 crw-rw---- 1 root root 4, 25 2008-12-29 16:30 tty25 crw-rw---- 1 root root 4, 26 2008-12-29 16:30 tty26 crw-rw---- 1 root root 4, 27 2008-12-29 16:30 tty27 crw-rw---- 1 root root 4, 28 2008-12-29 16:30 tty28 crw-rw---- 1 root root 4, 29 2008-12-29 16:30 tty29 crw------- 1 root root 4, 3 2008-12-29 14:31 tty3 crw-rw---- 1 root root 4, 30 2008-12-29 16:30 tty30 crw-rw---- 1 root root 4, 31 2008-12-29 16:30 tty31 crw-rw---- 1 root root 4, 32 2008-12-29 16:30 tty32 crw-rw---- 1 root root 4, 33 2008-12-29 16:30 tty33 crw-rw---- 1 root root 4, 34 2008-12-29 16:30 tty34 crw-rw---- 1 root root 4, 35 2008-12-29 16:30 tty35 crw-rw---- 1 root root 4, 36 2008-12-29 16:30 tty36 crw-rw---- 1 root root 4, 37 2008-12-29 16:30 tty37 crw-rw---- 1 root root 4, 38 2008-12-29 16:30 tty38 crw-rw---- 1 root root 4, 39 2008-12-29 16:30 tty39 crw------- 1 root root 4, 4 2008-12-29 14:31 tty4 crw-rw---- 1 root root 4, 40 2008-12-29 16:30 tty40 crw-rw---- 1 root root 4, 41 2008-12-29 16:30 tty41 crw-rw---- 1 root root 4, 42 2008-12-29 16:30 tty42 crw-rw---- 1 root root 4, 43 2008-12-29 16:30 tty43 crw-rw---- 1 root root 4, 44 2008-12-29 16:30 tty44 crw-rw---- 1 root root 4, 45 2008-12-29 16:30 tty45 crw-rw---- 1 root root 4, 46 2008-12-29 16:30 tty46 crw-rw---- 1 root root 4, 47 2008-12-29 16:30 tty47 crw-rw---- 1 root root 4, 48 2008-12-29 16:30 tty48 crw-rw---- 1 root root 4, 49 2008-12-29 16:30 tty49 crw------- 1 root root 4, 5 2008-12-29 14:31 tty5 crw-rw---- 1 root root 4, 50 2008-12-29 16:30 tty50 crw-rw---- 1 root root 4, 51 2008-12-29 16:30 tty51 crw-rw---- 1 root root 4, 52 2008-12-29 16:30 tty52 crw-rw---- 1 root root 4, 53 2008-12-29 16:30 tty53 crw-rw---- 1 root root 4, 54 2008-12-29 16:30 tty54 crw-rw---- 1 root root 4, 55 2008-12-29 16:30 tty55 crw-rw---- 1 root root 4, 56 2008-12-29 16:30 tty56 crw-rw---- 1 root root 4, 57 2008-12-29 16:30 tty57 crw-rw---- 1 root root 4, 58 2008-12-29 16:30 tty58 crw-rw---- 1 root root 4, 59 2008-12-29 16:30 tty59 crw------- 1 root root 4, 6 2008-12-29 14:31 tty6 crw-rw---- 1 root root 4, 60 2008-12-29 16:30 tty60 crw-rw---- 1 root root 4, 61 2008-12-29 16:30 tty61 crw-rw---- 1 root root 4, 62 2008-12-29 16:30 tty62 crw-rw---- 1 root root 4, 63 2008-12-29 16:30 tty63 crw-rw---- 1 root root 4, 7 2008-12-29 16:30 tty7 crw-rw---- 1 root root 4, 8 2008-12-29 16:30 tty8 crw-rw---- 1 root root 4, 9 2008-12-29 16:30 tty9 crw-rw---- 1 root dialout 4, 64 2008-12-29 16:30 ttyS0 crw-rw---- 1 root dialout 4, 65 2008-12-29 16:30 ttyS1 crw-rw---- 1 root dialout 4, 66 2008-12-29 16:30 ttyS2 crw-rw---- 1 root dialout 4, 67 2008-12-29 16:30 ttyS3 crw-rw-rw- 1 root root 1, 9 2008-12-29 14:31 urandom crw-rw---- 1 root root 253, 1 2008-12-29 16:30 usbdev1.1_ep00 crw-rw---- 1 root root 253, 0 2008-12-29 16:30 usbdev1.1_ep81 crw-rw---- 1 root root 253, 3 2008-12-29 16:30 usbdev2.1_ep00 crw-rw---- 1 root root 253, 2 2008-12-29 16:30 usbdev2.1_ep81 crw-rw---- 1 root root 253, 19 2008-12-29 16:30 usbdev2.2_ep00 crw-rw---- 1 root root 253, 14 2008-12-29 16:30 usbdev2.2_ep02 crw-rw---- 1 root root 253, 16 2008-12-29 16:30 usbdev2.2_ep03 crw-rw---- 1 root root 253, 18 2008-12-29 16:30 usbdev2.2_ep04 crw-rw---- 1 root root 253, 12 2008-12-29 16:30 usbdev2.2_ep81 crw-rw---- 1 root root 253, 13 2008-12-29 16:30 usbdev2.2_ep82 crw-rw---- 1 root root 253, 15 2008-12-29 16:30 usbdev2.2_ep83 crw-rw---- 1 root root 253, 17 2008-12-29 16:30 usbdev2.2_ep84 crw-rw---- 1 root root 253, 5 2008-12-29 16:30 usbdev3.1_ep00 crw-rw---- 1 root root 253, 4 2008-12-29 16:30 usbdev3.1_ep81 crw-rw---- 1 root root 253, 7 2008-12-29 16:30 usbdev4.1_ep00 crw-rw---- 1 root root 253, 6 2008-12-29 16:30 usbdev4.1_ep81 crw-rw---- 1 root root 253, 9 2008-12-29 16:30 usbdev5.1_ep00 crw-rw---- 1 root root 253, 8 2008-12-29 16:30 usbdev5.1_ep81 crw-rw---- 1 root root 253, 11 2008-12-29 16:30 usbdev6.1_ep00 crw-rw---- 1 root root 253, 10 2008-12-29 16:30 usbdev6.1_ep81 crw-rw---- 1 root root 7, 0 2008-12-29 16:30 vcs crw-rw---- 1 root root 7, 1 2008-12-29 16:30 vcs1 crw-rw---- 1 root root 7, 2 2008-12-29 14:31 vcs2 crw-rw---- 1 root root 7, 3 2008-12-29 14:31 vcs3 crw-rw---- 1 root root 7, 4 2008-12-29 14:31 vcs4 crw-rw---- 1 root root 7, 5 2008-12-29 14:31 vcs5 crw-rw---- 1 root root 7, 6 2008-12-29 14:31 vcs6 crw-rw---- 1 root root 7, 7 2008-12-29 14:31 vcs7 crw-rw---- 1 root root 7, 128 2008-12-29 16:30 vcsa crw-rw---- 1 root root 7, 129 2008-12-29 16:30 vcsa1 crw-rw---- 1 root root 7, 130 2008-12-29 14:31 vcsa2 crw-rw---- 1 root root 7, 131 2008-12-29 14:31 vcsa3 crw-rw---- 1 root root 7, 132 2008-12-29 14:31 vcsa4 crw-rw---- 1 root root 7, 133 2008-12-29 14:31 vcsa5 crw-rw---- 1 root root 7, 134 2008-12-29 14:31 vcsa6 crw-rw---- 1 root root 7, 135 2008-12-29 14:31 vcsa7 crw-rw---- 1 root root 10, 130 2008-12-29 16:31 watchdog prw-r----- 1 root adm 0 2008-12-29 16:47 xconsole crw-rw-rw- 1 root root 1, 5 2008-12-29 16:30 zero Δευτερη ομάδα: rwx ο owner blackslash13 μπορεί να read , write,eXectute το αρχείο. Τρίτη Ομάδα: --- Το group blackslash13 δεν μπορει να κανει τίποτα. Τεταρτη ομάδα: Ενας άλλος ξένος δεν μπορεί επίσης να κανει τίποτα Μια παρατήρηση εδω: Τι σημαίνει execute σε ενα directory (αντε σε αρχειο το καταλαβαινω αλλα σε φακελο ; ). Αυτο σημαίνει να μπορειτε να επεμβείτε σε αρχεια που εχει μεσα πχ να τα σβήσετε κλπ. Για περισσότερα (υπαρχουν πολλα στο θεμα) για perimissions θα βρειτε στο google. Ας φύγουμε απο δω και να πάμενα δούμε πως μπορείτε να βλέπετε με ανάποδη σειρα τα δεδομένα (το τελευταίο πρώτο και το πρώτο τελευταίο). Με την παραμετρο -r (μικρο ομως) ή αλλιως --reverse $ ls amsn_received Desktop mailtext.odt myScripts none $ ls -r none myScripts mailtext.odt Desktop amsn_received Ενα άλλο πολύ σημαντικό που πρέπει να ξέρετε είναι πως θα κατηγοριοποίετε τα δεδομένα. Πχ να βλεπετε ολα μαζι τους φακελου, ολα μαζι τα odt, ολα μαζι τα png κλπ κλπ. Αυτο γίνεται με την παράμετρο -Χ ή αλλιως --sort=extension Ας κάνουμε εναν συνδιασμο εδω. Θελω να δω χρώμα, να είναι κάθετα , και κατηγοροποιημένα αναλογα με το είδος το οποίο να φαίνται και visual. $ ls -1FX --color /etc/X11 app-defaults/ default-display-manager fluxbox/ fonts/ X@ xinit/ xkb/ Xresources/ xserver/ Xsession* XvMCConfig xorg.conf xorg.conf-bu-2008-12-27-18:12:26 Xwrapper.config Xsession.d/ Xsession.options rgb.txt Το χρώμα βοηθάει πολύ στην αμεση αντίληψη των πραγμάτων. Δυστυχως δεν εχω καπου καποιον αλλο φακελο με εικονες κειμενο κλπ για να φανει καλύτερα το παράδειγμα. Ενας άλλος τρόπος κατηγοριοποίησης των δεδομένων είναι σαφώς η ημερομηνία! Αυτό γίνεται με την παράμετρο -t ή --sort=time . Αν θελετε να βλέπετε καιτην ώρα τότε πρεπει να γράψετε και την εντολή l (long) επειδη μονο σε αυτή φαίνεται η ώρα. $ ls -t mailtext.odt amsn_received myScripts Desktop none $ ls -lt total 52 -rw-r--r-- 1 blackslash13 blackslash13 34459 2008-12-29 15:23 mailtext.odt drwx------ 2 blackslash13 blackslash13 4096 2008-12-28 23:30 amsn_received drwxr-xr-x 2 blackslash13 blackslash13 4096 2008-12-28 23:08 myScripts drwxr-xr-x 2 blackslash13 blackslash13 4096 2008-12-27 13:00 Desktop drwxr-xr-x 2 root root 4096 2008-12-27 09:35 none Αν θέλετε να δείτε ανάποδα, με πρώτο το πιο παλιό αρχείο τότε χρησιμοποιήστε και το -r (reverse). Αλλο σημαντικό είδος κατηγοροποιήσης αν ψάχνετε ενα πολυ μεγάλο ή πολύ μικρό αρχείο είναι αυτός του μεγεθούς. Που γίνετε μέσω της παραμέτρου -S ή --sort=size . Παλι αν θελουμε να βλεπουμε και το μεγεθος τοτε παλι θα κανουμε συνδιασμο με την -l (long) $ ls -lS /etc/X11 total 80 -rw-r--r-- 1 root root 17394 2008-10-05 21:06 rgb.txt drwxr-xr-x 2 root root 4096 2008-12-27 20:40 app-defaults drwxr-xr-x 2 root root 4096 2008-12-29 02:18 fluxbox drwxr-xr-x 6 root root 4096 2008-12-27 20:40 fonts drwxr-xr-x 2 root root 4096 2008-12-23 01:06 xinit drwxr-xr-x 2 root root 4096 2008-12-23 01:02 xkb drwxr-xr-x 2 root root 4096 2008-12-23 01:00 Xresources drwxr-xr-x 2 root root 4096 2008-12-23 01:06 xserver drwxr-xr-x 2 root root 4096 2008-12-27 21:20 Xsession.d -rwxr-xr-x 1 root root 3517 2008-03-08 06:13 Xsession -rw-r--r-- 1 root root 1874 2008-12-27 18:12 xorg.conf -rw-r--r-- 1 root root 1843 2008-12-27 18:12 xorg.conf-bu-2008-12-27-18:12:26 -rw------- 1 root root 614 2008-12-23 01:00 Xwrapper.config -rw-r--r-- 1 root root 265 2007-02-13 12:02 Xsession.options -rw-r--r-- 1 root root 13 2008-12-27 09:26 default-display-manager lrwxrwxrwx 1 root root 13 2008-12-23 01:06 X -> /usr/bin/Xorg -rw-r--r-- 1 root root 13 2008-12-27 18:12 XvMCConfig Επειδή όμως κανενας δεν ειναι ανώμαλος να καταλαβαίνει ποσα GB αντιστοιχουν σε bytes κατευθειαν αλλα υστερα απο λιγη σκεψη τοτε σαφως δεν ειναι και πολυ καλος ο τροπος να βλεπουμε μονο σε bytes. Θα το κανουμε λοιπον να φαινεται σε k, M, G, T αναλογα. Με την παράμετρο -h ή --human-readable $ ls -lhS /etc/X11 total 80K -rw-r--r-- 1 root root 17K 2008-10-05 21:06 rgb.txt drwxr-xr-x 2 root root 4.0K 2008-12-27 20:40 app-defaults drwxr-xr-x 2 root root 4.0K 2008-12-29 02:18 fluxbox drwxr-xr-x 6 root root 4.0K 2008-12-27 20:40 fonts drwxr-xr-x 2 root root 4.0K 2008-12-23 01:06 xinit drwxr-xr-x 2 root root 4.0K 2008-12-23 01:02 xkb drwxr-xr-x 2 root root 4.0K 2008-12-23 01:00 Xresources drwxr-xr-x 2 root root 4.0K 2008-12-23 01:06 xserver drwxr-xr-x 2 root root 4.0K 2008-12-27 21:20 Xsession.d -rwxr-xr-x 1 root root 3.5K 2008-03-08 06:13 Xsession -rw-r--r-- 1 root root 1.9K 2008-12-27 18:12 xorg.conf -rw-r--r-- 1 root root 1.8K 2008-12-27 18:12 xorg.conf-bu-2008-12-27-18:12:26 -rw------- 1 root root 614 2008-12-23 01:00 Xwrapper.config -rw-r--r-- 1 root root 265 2007-02-13 12:02 Xsession.options -rw-r--r-- 1 root root 13 2008-12-27 09:26 default-display-manager lrwxrwxrwx 1 root root 13 2008-12-23 01:06 X -> /usr/bin/Xorg -rw-r--r-- 1 root root 13 2008-12-27 18:12 XvMCConfig Αυτα ειχα να σας πω για την εντολη ls. Μπορείτε να πειραματιστείτε και να κάνετε αυτό που σας αρέσει και βγάζεται και λέξεις (πχ ls- faux ή ls -tail ή ls -halF κλπ). Μπορείτε επίσης να αλλαξετε το ~/.bashrc ώστε οταν πατάτε ls να εκτελείται πχ η ls -F αντί για την απλη ls. θα γραψετε alias ls='ls -F' ή πχ αντι να γραφεται ls- 1F να γράφετε κατευθειαν l1 θα γραψετε τοτε alias l1='ls -1F' Ελπίζω να βοήθησα να αποκτήσετε μία πιο ολοκληρωμένη εικόνα.
  3. Τι γινετε οταν μπορειτε να συνδιασετε την δυναμη της python και του bash ; Τα πραγματα ειναι αρκετά ενδιαφέροντα, αφού χρήστης έχει την δυνατότητα να γράψει δικά του python scripts που θα τον βοηθήσουν στην λειτουργια του λειτουργικού του συστήματος. Για παράδειγμα αν εχει καποες καθημερινες λειτουργιες, όπως πχ να κανει update το apt-get να, να βλεπει mails, να . να .. να ... να ... Αντι να θυμαται απέξω ολες τις εντολες στην κονσολα, θα μπορει το κανει ευκολα και γρήγορα με εναν δικο του πινακα ελεγχου. Πχ οτι θελει να προσθετει χρητες, και δεν θυμαται την εντολη που ειναι ενα μακαρονι απο εδω εως την αλλη ακρη του post αυτου, τοτε μπορει να αυτοματοποιησει την διαδικασια με ενα script. Τετοια script ειναι κυριολεκτικα γεματο το linux ειτε με perl ειτε με python ειτε με C. Μερικα απο αυτα εχουν γινει πολυ διασημα, όπως για παραδειγμα το envy που κανει εγκατασταση τους drivers για την καρτα γραφικων σας. Μπορειτε να γραψετε και εσεις το δικο σας script και ετσι που ξερετε, μπορει να ειναι τοσο καλο και χρησιμο που να σας κανει υπερηφανους μια μερα. Λοιπον, τι χρειαζετε να ξερετε: python και bash commands. Γι αυτο το post τα παραδειγμα που θα κανω δεν ειναι τιποτα το ιδιατερο οποτε εισαι Οκ με λιγες γνωσεις. Δηλαδη και να μην ξερετε python, και να ξερετ καποια αλλη γλωσσα δεν υπαρχει προβλημα θα την εξηγησω λιγο εδω, σρκει ομως να μην ειστε τελειος ασχετος απο προγραμματισμο γιατι τοτε δεν θα καταλαβετε τιποτα. Λοιπόν παμε να μαθουμε λιγο python. Καταρχας κατεβαστε την οσοι δεν την εχετε με την εντολη sudo apt-get install python ή ψαξε την στο Synaptic. Ανοιξτε ενα terminal και δωσε python. panos@panos-laptop:~$ python Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Θα δειτε λογικο το παραπανω ^^^^ Αυτο ειναι ενα interactive interpreter. οτι εντολη γραφετε την εκτελει αμεσως., Πχ δωσε: print "thelab rocks" Στην python δεν υπαρχουν curly braces να ξεχωριζουν ποτε τελειωνει και ποτε αρχιζει ενα code block αλλα το κανετε εσεις με το tab space. πχ μια function αρχιζει με την λεξη def και στο τελος εχει ανωκατω τελεια def function_name(parameters): blah_blah blah blah Οι συνθηκε ελεγχου με το κλασσικο if statement υλοποιειται παλι ετσι μονο που μπαινει και μια λεξουλα που λεγεται ord οταν το x ειναι τυπου char, και παραλειπεται οταν ειναι αριθμος. πχ if x == ord('2'): blah blah else: blah blah και τωρα που πειρατε μια γευση απο υλοποιηση συντακτικου ας κανουμε ενα παραδειγμα: >>> def thelab(x): ... if x == 1: ... print "TheLab.gr rocks" ... else: ... print "TheLab.gr sucks" ... >>> thelab(1) TheLab.gr rocks >>> thelab(0) TheLab.gr sucks >>> Αυτα νομιζω αρκουν. Αχ εχετε καποιες αλελς αποριες υπαρχει και το google. ==================================================== Για να γραψουμε τα προγραμματα μας και να φαινονται ομορφα θα κανουμε χρηση της βιβλιοθηκης ncurses. Ετσι οχι οτι θα εχουμε τιποτα τρελα γραφικα αλλα μια πιο ομορφη κονσόλα. Ανοιξτε πχ το kate ή το gedit γραφοντας πρώτα απο ολα θα γράψετε την παρακατω γραμμή έτσι ώστε να μπορείτε να εκτελείτε το προγραμμα σας καθολικά μέσα απο το sbin (θα σας πω στην πορεια) #!/usr/bin/env python Δεύτερον για να συνδιάσετε εντολές από το /usr/bin στο προγραμμά σας δώστε: from os import system Τώρα ήρθε η ώρα να αρχικοποιησουμε τις ncurses οποτε γράφουμε: import curses ========================================================================= Ας υποθεσουμε τωρα οτι θελουμε εναπρογραμμα που θα μας λεει πληροφοριες του cpu. αυτο υπαρχει ομως, γραφοντας cat /proc/cpuinfo οποτε θα με ρωτησετε ποιος ο λογος να γραψω ενα προγραμμα που θα κανει το ιδιο ; Μπορειτε να γραψετε λοιπον μια συλλογη απο προγραμματε για συντομευσεις, δηλαδη πατωντας το ενα να παιζει το ταδε, προγραμμα, πατωντας το 2, παιζει το αλλο. ή για παραδειγμα να κανετε αναζητηση στο cat /proc/cpuinfo ετσι ώστε να σας εμφανίζει μόνο αυτά που θέλετε (πχ με τη νεντολη cat /proc/cpuinfo | grep cpu ) Οποτε εγω θα σας φτιαξω ενα απλο τετοιο προγραμμα και μετα εσεις μπορειτε να κανετε οτι θελετε παραπανω. Απλα για παρετε μια γεύση, πως υλοποιειτε κατι τετοιο. ========================================================================= Φανταστείτε οτι γραφετε C++ και οτι το παρακατω ειναι ειναι η main σας x = 0 while x != ord('2'): # Όσο το χ δεν ειναι 2 screen = curses.initscr() # δημιουργει ενα instance της class curses με constructor την τιμη του initscr() screen.clear() # Αφου έχει φτιαχτεί το περιβάλλον ncurses, το περνάει ένα καθάρισμα screen.border(0) # Περίγραμμα με μια γραφή για πιο όμορφο ντεκόρ screen.addstr(2, 2, "Please enter a number") #εκτυπωνει το string στην οθόνη με συντεταγμένες x=2, y =2 screen.addstr(4, 4, "1 - Daily Tasks") screen.addstr(5, 4, "2 - Exit") screen.refresh() #Για να εμφανιστού όλα τα παραπάνω κάνουμε refresh x = screen.getch() # Αποθηκεύει την επιλογή μας (1,2,3) κάτι σαν το cin της C++ ή το scanf της C if x == ord('1'): #Αν έχετε δώσει 1 νωρίτερα curses.endwin() #Καταρχάς κλείσε το τρέχον curses παράθυρο (την δινω παντα πριν απο μια εντολη system) system("clear") # η εντολή clear του linux - καθαρίζει το console - terminal a = system("sudo apt-get update") #η κλασσικη εντολή της οποια το αποτελεσμα το βαζω στο α για ελεγχο αργοτερα print " " if a == 0: #Ο ελεγχος που σας ελεγα print "Command Executed" else: print "Command Faild" raw_input("Press Enter") #Κάτι σαν το system("PAUSE") αν έχετε ακουστά print " " system("clear") #αφού τελειώσα την δουλειά μου, κανω και ένα clear curses.endwin() #κλείνω και το παραθυρο και ταυτοχρονα και το προγραμμα Για να δωσετε λοιπον εντολη του συστημα γράφετε system("blah-blah-blah-blah") Για να κανουμε τώρα ενα βημα παραπανω, και να φτιάξουμε μια function να κανει αυτην δουλεια. Δηλαδη είδαμε οτι για να εκτελεσουμε μια εντολή απο το συστημα πρέπει να κάνουμε τα εξής βήματα: 1)curses.endwin() #Καταρχάς κλείσε το τρέχον curses παράθυρο (την δινω παντα πριν απο μια εντολη system) 2)system("clear") # η εντολή clear του linux - καθαρίζει το console - terminal 3)a = system("η εντολή") #η κλασσικη εντολή της οποια το αποτελεσμα το βαζω στο α για ελεγχο αργοτερα 4)print " " #για ομορφια 5)if a == 0: #Ο ελεγχος που σας ελεγα print "Command Executed" else: print "Command Faild" 6)raw_input("Press Enter") #Κάτι σαν το system("PAUSE") αν έχετε ακουστά 7) print " " #για ομορφια Πάμε λοιπόν να ξαναγράψουμε το ίδιο: #!/usr/bin/env python from os import system import curses def execute_cmd(cmd_string): system("clear") a = system(cmd_string) #θα πάρει την εντολή από το κύριο πρόγραμμα print " " if a == 0: print "Command Executed" else: print "Command Faild" raw_input("Press Enter") print " " x = 0 while x != ord('2'): screen = curses.initscr() screen.clear() screen.border(0) screen.addstr(2, 2, "Please enter a number") screen.addstr(4, 4, "1 - Daily Tasks") screen.addstr(5, 4, "2 - Exit") screen.refresh() x = screen.getch() if x == ord('1'): curses.endwin() execute_cmd("sudo apt-get update") # το sudo apt-get install ειναι στο cmd_string στην περιπτωση αυτη system("clear") curses.endwin() ========================================================================= Τι γίνετε όμως όταν θέλετε να κάνετε μια εντολη interactive ; Ας φτιαξουμε μια function που εμφανιζει την ερωτηση στον χρηστη και ταυτοχρονα επιστρέφει και το input που έδωσε ο χρηστης. Ειμαστε λοιπον στο σημειο όπου ρωταει το προγραμμα: 1 - Αυτο 2- Μηπως Αυτο 3 - exit Εμεις θέλουμε για παραδειγμα, αν πατησει το 1. Να του γινει μια ερωτηση και να πληκτρολογισει ο user την απαντηση. Πχ να του ρωτηση ποιο ειναι το username ; Αυτος να το γραψει Και μετα να εχουμε ενα προγραμμα που θα κανει πχ ls username Αυτο εννοω interactive Οποτε αυτη η function αφου θελουμε να εκτυπωνει το μυνημα που θα ρωταει κατι σιγουρα θα το παιρνει ως παραμετρο. Μετά θελουμε να καθαριζει την οθονη, να φτιαχνει παλι το ντεκορ οπως ηταν και να εμφανιζονται ολα αυτα οπως και πριν Να εμφανιζει την ερωτηση-παραμετρο Να διαβαζει την απαντηση του χρηστη Να επιστρεφει την απαντηση Πάμε λοιπον: def get_param(prompt_string): screen.clear() # καθαρίζει το screen απο το 1 - Αυτο, 2 - Μηπως αυτο, 3 - exit και οτι ντεκορ ειχαμε κλπ κλπ screen.border(0) #ξανα βαζει το πλαισιο ντεκορ screen.addstr(2, 2, prompt_string) #ρωτάει τον χρήστη screen.refresh() #Εμφανιζει ολα τα παραπανω ^^^^ στην οθονη, γιατι αν το γραψετε, δεν βλεπετε τιποτα input = screen.getstr(10, 10, 60) # διαβαζει την απαντηση του χρηση με συντεταγμενες x=10, y=10, και η απαντηση 60χαρακτηρων return input #επιστρεφει το input Αυτη ειναι η function μας. Μεσα στην "main" θα εκχωρειτε σε μια μεταβλητη που θα αναφερετε λογικα στην ερωτηση, πχ Τοσο απλό. Η φράση enter the username ειναι το prompt_string. Εμφανιζετε στην οθονη. Πληκτρολογει ο χρηστης την απαντηση, και αυτη επιστρεφετε και αποθηκευεται στην μεταβλητη username ------ Ας γράψουμe λοιπον ένα τελικο script που θα εχει και τις δυο functions μεσα #!/usr/bin/env python from os import system import curses def get_param(prompt_string): screen.clear() screen.border(0) screen.addstr(2, 2, prompt_string) screen.refresh() input = screen.getstr(3, 2, 60) return input def execute_cmd(cmd_string): system("clear") a = system(cmd_string) print "" if a == 0: print "Command Executed" else: print "Command Faild" raw_input("Press Enter") print "" x = 0 while x != ord('2'): screen = curses.initscr() screen.clear() screen.border(0) screen.addstr(2, 2, "Please enter a number") screen.addstr(4, 4, "1 - Open Firefox") screen.addstr(5, 4, "2 - Exit") screen.refresh() x = screen.getch() if x == ord('1'): url = get_param("Please enter the URL eg www.thelab.gr ") curses.endwin() execute_cmd("firefox " + url) #ο interactive συνδιασμος system("clear") curses.endwin() ================================== Σε εισαγωγικα δινουμε την εντολη και ενα κενο πριν το τελευταιο γιατι αλλιως θα εκτελεσει firefoxwww.thelab.gr - δηλαδη μια μπουρδα. Μετα γραφουμε + την παραμετρο που θελουμε. Καντε save ως fifis.py στο home directory σας. Για να μην δινετε συνεχεια python fifis.py αλλα να δινετε fifis και να τρεχει σαν προγραμμα τότε: panos@panos-laptop:~$ sudo -i root@panos-laptop:~# cd /home/panos root@panos-laptop:/home/panos# chmod +x fifis.py root@panos-laptop:/home/panos# mv fifis.py /usr/sbin/fifis root@panos-laptop:/home/panos# fifis προσοχη οταν κανετε chmod το + και το x ειναι ειναι ενωμενα χωρις κενο ενδιαμεσα τους.