Εργαλεία Χρήστη

Εργαλεία ιστότοπου


unix_intro

Γνωριμία με το Unix

Εισαγωγή

Το Unix ή UNIX είναι λειτουργικό σύστημα Ηλεκτρονικών Υπολογιστών, το οποίο αναπτύχθηκε κατά τις δεκαετίες του 1960 και του 1970 από ομάδα εργαζομένων των εργαστηρίων Μπελ (Bell Labs) της εταιρείας AT T, στην οποία συμμετείχαν, μεταξύ άλλων, οι Κεν Τόμσον (Ken Thompson), Ντένις Ρίτσι (Dennis Ritchie) και Ντάγκλας Μακιλρόι (Douglas McIlroy). Σήμερα τα συστήματα Unix έχουν χωριστεί σε πολλούς κλάδους και αναπτύσσονται τόσο από την AT T όσο και από άλλους εμπορικούς παράγοντες, όπως και από αρκετούς μη κερδοσκοπικούς οργανισμούς, όπως το πρόγραμμα GNU. περισσότερα...

Ιστορικό

Στη δεκαετία του 1960 το MIT, η AT T στα εργαστήρια Μπελ, και η General Electric εργάζονταν πάνω σε ένα πειραματικό λειτουργικό σύστημα που λεγόταν Multics (Multiplexed Information and Computing Service), το οποίο είχε σχεδιαστεί ώστε να τρέχει στη σειρά υπολογιστών mainframe GE-645. (Τελικά το Multics έγινε εμπορικό προϊόν, αν και οι πωλήσεις δεν έφτασαν τις προσδοκίες.) Το Multics ήταν ένα διαδραστικό λειτουργικό σύστημα με πολλές νέες δυνατότητες, όπως η αυξημένη ασφάλεια. Τα εργαστήρια Μπέλ της AT T αποσύρθηκαν από το πρόγραμμα Multics και ανέπτυξαν τους πόρους τους αλλού. Ένας από τους προγραμματιστές στην ομάδα των εργαστηρίων Μπελ, ο Κεν Τόμσον, συνέχισε να αναπτύσσει λογισμικό για τον μεγάλο υπολογιστή (mainframe) GE-645, και έγραψε ένα παιχνίδι για τον υπολογιστή αυτό, το Space Travel. περισσότερα...

Πρώτη Eπαφή

Ενα λειτουργικό UNIX είναι απο σχεδιασμού του κατασκευασμένο να εξυπηρετεί πολλούς χρήστες ταυτόχρονα και μάλιστα με πολλές και διαφορετικές διεπαφές χρήσης.Η πιο απλή διεπαφή που έχει ένας χρήστης που καθεται μπροστα σε τον υπολογιστή ειναι το κέλυφος (shell) γραμμής εντολων (κάτι σαν το παλιο DOS που ίσως έχετε διδαχτεί). Τον ίδιο έλεγχο μπορεί να έχει ο χρήστης διαδικτυακα απο οπουδήποτε χρησιμοποιώντας την υπηρεσία κρυπτογραφημένου κέλυφους (secure shell) και το αντίστοιχο πρόγραμμα πελάτη στον υπολογιστή του (putty) (βλπ. Putty) το οποίο μπορείτε να κατεβάσετε από εδώ.

Το σύστημα για να εξασφαλίσει την ιδιωτικότητα του καθε χρήστη πάντα ζητάει ονομα χρήστη login και κωδικό password. O κάθε χρήστης έχει εναν δικό του προσωπικό χώρο στο σύστημα αρχείων (unix file system)

Από την στιγμή που τα διαπιστευτήρια γίνουν δεκτά ο χρήστης βρίκεται σε ένα κέλυφος (bash-2.05b$) και μπορεί να δίνει εντολές στο σύστημα και να διαχειρίζεται αρχεία μέσα στον προσωπικό του χώρο στον δίσκο και να χρησιμοποιήσει μια πληθώρα εργαλείων για να προγραμματίσει σε διάφορες γλώσσες, να κατεβάσει αρχεία να φτιάξει διαδικτυακες εφαρμογές να διαχειριστεί δεδομένα και να συνδεθεί σε βάσεις δεδομένων αλλά και να λειτουργήσει περίπλοκες εφαρμογές. Κύριος περιορισμός είναι ότι στην οθόνη μπορούμε να έχουμε όλα μας τα δεδομένα σε αναπαράσταση αρθμών κειμένων και συμβόλων. Έτσι λοιπόν για παράδειγμα σε μια εφαρμογή επιτήρησης εναέριου χώρου που τρέχει σε ένα αεροδρόμιο οι θέσεις των αεροπλάνων είναι απλά αριθμητικές συντεταγμένες στην οθόνη, ενώ σε μια εφαρμογή χρηματιστηρίου τρέχουν οι τιμές των μετοχών στην οθόνη μας. Όλα τα στοιχειώδη εργαλεία συνοδεύονται από τα αντίστοιχα πολύ καλά εγχειρίδια χρήσης τους (man pages) που βοηθούν τον χρήστη να τα μάθει αρχίζοντας κυριολεκτικά από το μηδέν.

Αντίστοιχα η διαπεφή, είτε τοπική είτε διαδικτυακή, μπορεί να γίνει στο επίπεδο γραφικών (X Windows) και ο χρήστης να έχει ενα πληρες γραφικό περιβάλλον. Σε αυτό το επίπεδο οι εφαρμογές και τα εργαλεία ντύνονται με γνωριμο φιλικο και γραφικό τρόπο απεικόνισης και γίνονται πολύ πιο εύχρηστες. Έτσι χτίζεται πάνω στα προαναφερθέντα παραδείγματα εφαρμοφγών έναν επίπεδο που απεικονίζει τις θέσεις των αεροσκαφών και τις τιμές του χρηματιστηρίου με γραφικά στην οθόνη.

Μιά άλλη διεπαφή χρήσης είναι η υπηρεσία κρυπτογραφημένης διαχείρισης αρχείων (secure ftp) που μας εξυπηρετεί όταν χρειαζόμαστε να μεταφέρουμε αρχεία από τον υπολογιστή μας στο σπίτι, στον προσωπικό μας χώρο στο UNIX. Για να το πετύχουμε αυτό θα χρειαστούμε στον υπολογιστή μας ένα πρόγραμμα πελάτη secure ftp πχ. το (βλπ. WinSCP) το οποίο μπορείτε να κατεβάσετε από εδώ.

Ο UNIX Εξυπηρετητής του Τμήματος

Το μηχάνημα που εξυπηρετεί τους προπτυχιακούς φοιτητές λέγεται Προμηθέας : promitheas.dmst.aueb.gr. Πρόκειται για έναν τετραπύρηνο υπολογιστή με FREEBSD UNIX λειτουργικό σύστημα. Φιλοξενεί τους περίπου 2000 προπτυχιακους και μεταπτυχιακους φοιτητές μας. Προσφέρει μια πληθωρα προγραμματιστικών γλωσσών C,C++,java,fortran77, perl, php και αποτελεί την πλατφόρμα υποδομής για τους προσωπικούς ιστότοπους-σελίδες των φοιτητών, ηλεκτρονικά καταστήματα, blogs και βάσεις δεδομένων. Δέχεται τα ίδια διαπιστευτήρια (username passwd) που δέχεται και ο εξυπηρετητής ηλεκτρονικής αλληλογραφίας του Τμήματος ΔΕΤ. Σκοπός ύπαρξης του μηχανήματος είναι να παρέχει ένα εργαλείο τριβής και πειραματισμού στον φοιτητή που θέλει να επεκτείνει τις γνώσεις του πέρα από το ακαδημαϊκό πρόγραμμα του Τμήματος.

Βασικές Εντολές

Υπάρχουν πραγματικά πάρα πολλές εντολές στην διάθεση του χρήστη όπως ακριβώς υπάρχουν πάρα πολλά εργαλεία στη διάθεση ενός μηχανικού. Κανένας δεν ειναι υποχρεωμένος να τις ξέρει όλες. Ολοι οι χρήστες ξεκινάνε με κάποιες βασικές εντολές και αργότερα ανάλογα με το τι χρειάζονται αναζητούν και μαθαίνουν αυτά που χρειάζονται.

bash-2.05b$ είναι το όνομα του κέλυφους που σας υποδέχεται και περιμένει τις εντολές σας.

Print Working Directory: Δείξε μου σε ποιόν φάκελο είμαι.

bash-2.05b$ pwd
/usr/home/sgrig

LiSt, MaKDIR, ChangeDirectory: Δείξε μου τι έχει ο φάκελος που είμαι, φτιάξε εκεί μέσα έναν νέο φάκελο, και μπες μέσα σε αυτόν και δείξε μου τι περιέχει, βγές στον από πάνω φακελο.

bash-2.05b$ ls -la
total 22
drwxr-xr-x    2 sgrig  Students2011   512 Dec 18  2007 .
drwxr-xr-x  147 root      wheel         2560 Oct  6 16:09 ..
-rw-r--r--    1 sgrig  Students2011   767 Dec 18  2007 .cshrc
-rw-r--r--    1 sgrig  Students2011   248 Dec 18  2007 .login
-rw-r--r--    1 sgrig  Students2011   158 Dec 18  2007 .login_conf
-rw-------    1 sgrig  Students2011   373 Dec 18  2007 .mail_aliases
-rw-r--r--    1 sgrig  Students2011   331 Dec 18  2007 .mailrc
-rw-r--r--    1 sgrig  Students2011   797 Dec 18  2007 .profile
-rw-------    1 sgrig  Students2011   276 Dec 18  2007 .rhosts
-rw-r--r--    1 sgrig  Students2011   975 Dec 18  2007 .shrc
bash-2.05b$ mkdir myfolder
bash-2.05b$ cd myfolder
bash-2.05b$ ls -la
total 4
drwxr-xr-x  2 sgrig  Students2011  512 Oct 13 12:54 .
drwxr-xr-x  3 sgrig  Students2011  512 Oct 13 12:55 ..
bash-2.05b$ cd ..
bash-2.05b$ 

Δειξε μου το εγχειρίδιο χρήσης της εντολής 'ls'

bash-2.05b$ man ls 

LS(1)                   FreeBSD General Commands Manual                  LS(1)

NAME
     ls -- list directory contents

     SYNOPSIS
          ls [-ABCFGHILPRSTUWZabcdfghiklmnopqrstuwx1] [file ...]
      
          DESCRIPTION
          For each operand that names a file of a type other than directory, ls
          displays its name as well as any requested, associated information. For
          each operand that names a file of type directory, ls displays the names
          of files contained within that directory, as well as any requested, asso- 
          ciated information............. (more)

Για να προχωρήσουμε στην επόμενη σελίδα πατάμε space ενώ για να "φύγουμε" από μιά σελίδα βοήθειας και να επιστρέψουμε στο κέλυφος ενολών πατάμε απλά "q" από το "quit".

Προτεινέ μου εντολές εργαλεία σχετικά με ημερολόγια (calendar), πες μου πότε έπεσε το Ορθόδοξο Πάσχα το 2011.

bash-2.05b$ apropos calendar
cal(1), ncal(1)          - displays a calendar and the date of easter
calendar(1)              - reminder service
easterg(3), easterog(3), easteroj(3), gdate(3), jdate(3), ndaysg(3), ndaysj(3), week(3), 
weekday(3) - Calendar arithmetic for the Christian era
bash-2.05b$ ncal -o
April 24 2011
  • Βρείτε πότε πέφτει το Ορθόδοξο Πάσχα το 2012; (man calendar)
  • Ποιοί χρήστες είναι συνδεδεμένοι στον Προμηθέα; (apropos who)
  • Μπορώ να μιλήσω μαζί τους; (apropos talk)
  • Μπορώ να κατεβάσω ένα αρχείο από το διαδικτυο κατευθείαν στον προσωπικό μου χωρο στον προμηθέα;(apropos download)
  • Καθε βράδυ της αντίστοιχης ημερομηνίας διευθυνση http://www.ase.gr/content/gr/MarketData/Stocks/Prices/Files/txt/20111010.txt δημοσιεύονται τα κλεισίματα των μετοχών στο ΧΑΑ.
    • Μπορώ να τα κατεβάσω; (man wget)
    • Μπορώ να βαλω τον Προμηθεά να τα κατεβάζει αυτόματα καθε βράδι μόνος του; (man crontab)
    • Αφού μαζέψω ένα μεγάλο ιστορικό τιμών μπορώ να φτιάξω ένα προγραμμάτακι να του λέω ποιά μετοχή θέλω και να ξεχωρίζει από όλα τα αρχεία αυτή την μετοχή και να μου παρουσιάζει το ιστορικό της σε ένα αρχείο; (ναι μπορείς man grep, man sort)
    • Μήπως μπορώ να φτιάξω κάτι πιο εξεζητημένο που να ανιχνεύει συγκεκριμένου τύπου διακυμάνσεις σε μια μετοχή και τον ογκο που διακινήθηκε και να με ειδοποιεί με email ή ακόμα και ποστάροντας ένα σχόλιο στο blog μου ή στον τοίχο του facebook αυτόματα; (Όλα τα εργαλεία είναι εκεί μέσα).

Επεξεργαστές συγγραφής απλού κειμένου ή προγραμμάτων

Το πρώτο που χρειάζεται κάποιος για να πειραματιστεί με μια γλώσσα προγραμματισμού είναι ένας επξεργαστής κειμένου για να συντάξει το πρόγραμμά του. Στο περιβάλλον του κέλυφους γραμμής εντολών υπάρχουν διαθέσιμοι οι απλοί επεξεργαστές κειμένου pico, nano, ee και οι γνωστότεροι αλλά πιο απαιτητικοί σε γνώσεις vim και emacs. Προτείνουμε την εκμάθηση του vim. Παραθέτουμε ενα διδακτικό σύνδεσμο για τον vim. Σε γραφικό περιβάλλον υπάρχει μια ποικιλία επεξεργαστών που ξεκινάει από την γραφική έκδοση του gvim μέχρι τα εξειδικευμένα περιβάλλοντα eclipse και netbeans.

Αρχική επαφή με γλώσσες προγραμματισμού

Σε όλες τις γλώσσες προγραμματισμού αρκεί ένας απλός επεξεργαστής κειμένου για να γράψουμε το πρόγραμμα. To όνομα του αρχείου που θα γράψουμε το πρόγραμμα υπακούει σε περιορισμούς που επιβάλει η κάθε γλώσσα προγραμματισμού. Αυτό το αρχείο το περνάμε μέσα από τον αντιστοιχο εκτέλεστή (parser) που το διαβάζει και το εκτελεί ή τον μεταγλωτιστή (compiler) της γλώσσας ώστε να παραχθεί το τελικό εκτελέσιμο πρόγραμμα. Το τελικό πρόγραμμα εκτελείται κατευθείαν από την μηχανή καλώντας το απλά με το ονομά του σαν να ήταν μια απλή εντολή, εκτός από ιδιαίτερες περιπτωσεις σαν την java.

// Filename : Distance3d.c
// C EXAMPLE: Find 3D distance between points
// Compile with:  gcc -lm -o Distance3d  Distance3d.c 
// Execute with:  ./Distance3d
 
#include <stdio.h>
#include <math.h> 
 
 
int main ()
     {
     float x1,x2,y1,y2,z1,z2,dist;
     printf ("Let me help you find the distance between two points (x1,y1) and (x2, y2)."); 
 
     printf ("\n\nEnter coordinate for x1:");
     scanf ("%f", &x1); 
     printf ("\nEnter coordinate for y1:");
     scanf ("%f", &y1); 
     printf ("\nEnter coordinate for z1:");
     scanf ("%f", &z1); 
     printf ("\nEnter coordinate for x2:");
     scanf ("%f", &x2); 
     printf ("\nEnter coordinate for y2:");
     scanf ("%f", &y2); 
     printf ("\nEnter coordinate for y2:");
     scanf ("%f", &z2); 
     dist= sqrt( (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
     printf ("The distance between (%f,%f,%f) and (%f,%f,%f) is %.2f\n\n", x1,y1,z1,x2,y2,z2,dist); 
     return 0;
     }
! Filename : Apostasi.f         
! FORTRAN EXAMPLE: Find 3D distance between points
! Compile with:  f77 -o Apostasi Apostasi.f
! Execute with:  ./Apostasi
IMPLICIT NONE
    REAL:: X1, Y1, Z1, X2, Y2, Z2, L, F
    WRITE(*,*) 'Dwse Syntetagmenes tou Simeiou 1 (X,Y,Z):'
    READ(*,*) X1, Y1, Z1
    WRITE(*,*) 'Dwse Syntetagmenes tou Simeiou 2 (X,Y,Z):'
    READ(*,*) X2, Y2, Z2
!
    F = SQRT((X2-X1)**2+(Y2-Y1)**2+(Z2-Z1)**2)
!
    WRITE(*,*) 'H Apostasi twn 2 simeiwn Einai:', L
    END
// Filename : Distance.java
// Java EXAMPLE: Find 3D distance between points
// Compile with:  javac Distance.java
// Execute with:  java Distance
 
import java.util.Scanner;// program uses class Scanner
 
public class Distance {
  // Main method begins execution of Java application
       public static void main( String args[] ){
      // create scanner to obtain input from the command line
             Scanner input = new Scanner( System.in );
         double x1,x2,y1,y2,z1,z2,distance;
         System.out.print( "Enter the the coordinates for x1 :");
         x1 = input.nextInt(); // Read the number for x1
         System.out.print( "Enter the the coordinates for x2 :");
         x2 = input.nextInt(); // Read the number for x2
         System.out.print( "Enter the the coordinates for y1 :");
         y1 = input.nextInt(); // Read the number for y1
         System.out.print( "Enter the the coordinates for y2 :");
         y2 = input.nextInt(); // Read the number for y2 
         System.out.print( "Enter the the coordinates for z1 :");
         z1 = input.nextInt(); // Read the number for y1
         System.out.print( "Enter the the coordinates for z2 :");
         z2 = input.nextInt(); // Read the number for y2
         distance = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)+ (z2-z1)*(z2-z1)); 
         System.out.println( "The distance between the two points is "+distance);
      }
}

Προσωπική ιστοσελίδα

Μπορούμε στον προσωπικό μας χώρο στον Προμηθέα να φτιάξουμε έναν φάκελο με το όνομα public_html. Η εφαρμογή Apache web server που τρέχει στον Προμηθέα αναλαμβάνει αυτόματα να προσφέρει στο διαδίκτυο ότι πχ την σελίδα index.html αν βρίσκεται μέσα σε αυτόν τον φάκελο στην διεύθυνση http://promitheas.dmst.aueb.gr/~username/index.html. Δοκιμάστε να φτιάξετε αυτόν τον φάκελο και να τοποθετήσετε τα ακόλουθα αρχεία…

<!-- Demo home page  http://promitheas.dmst.aueb.gr/~sgrig/index.html -->
<html>
<body>
<h1>
<img align=left src=http://dmst.aueb.gr/MAINMENU_files/DET_Logo_70.gif> 
Department of Management Science and Technology</h1>
<h1>Stavros Personal Site</h1>
<p>This is my  first paragraph in <font color=blue > HTML</html>.</p>
</body>
</html>       
<!-- Demo php page  http://promitheas.dmst.aueb.gr/~sgrig/dice.php -->
 
<html>
  <head>
    <title>Roll Dices !!</title>
  </head>
 
     <h1>  
      Roll first Dice=<font color=blue><? echo  mt_rand(1,6); ?></font>
      and second Dice=<font color=red ><? echo  mt_rand(1,6); ?></font>
     </h1>
 
     <a href="dice.php"> Roll again! </a><br>
        <a href="example.php"> What 's the time? </a>
  </body>
</html>
<!-- Demo php page  http://promitheas.dmst.aueb.gr/~sgrig/example.php -->
 
<html>
  <head>
    <title>Show Current Date Dime in Colors</title>
  </head>
 
   <h1>The time is 
 
        <?
        print(date("m/j/y h:i:s"));
        ?>
 
    </h1>
  </body>
</html>

X Windows in Unix

Ένας τρόπος για να μπορέσει κάποιος να έχει γραφική διεπαφή με ένα unix, είναι να έχει εγκατεστημένο στον υπολογιστή του ένα πρόγραμμα εξυπηρετητή γραφικών (X windows server). Μπορεί πλέον να εκτελεί γραφικές εφαρμογές σε έναν απομαρκρυσμένο υπολογιστή και να βλέπει τα παράθυρά τους στον δικό του σταθμό εργασίας.
Στο εργαστήριο μπορουμε να υλοποιήσουμε μια τέτοια διεπαφή, εκτελωντας στον υπολογιστή μας το πρόγραμμα exceed (Start > programms > Humming Bird Connectivity 2007 > Exceed). Μπορούμε πλέον να μπούμε στον Προμηθέα και να εκτελέσουμε μια γραφική εφαρμογή πχ gvim (την γραφική έκδοση του vim).

Προσοχή, απαιτείται η ρύθμιση στο (βλπ. Putty) X11 forwarding

unix_intro.txt · Τελευταία τροποποίηση: 2013/12/02 12:31 (εξωτερική τροποποίηση)