160 likes | 341 Views
Εισαγωγή στο UNIX και άλλα εργαλεία. Pedro Trancoso Γιαννάκης Σαζεϊδης. UNIX. Τι είναι; Γιατί UNIX;. UNIX. Δημιούργησε στης αρχές του 70 από τα Bell Labs Παραλλαγές Unix: Linux, AIX, Solaris, Ultrix, Irix, Tru64, FreeBSD Χαρακτηριστικά: Πολλών χρηστών ( multi-user)
E N D
Εισαγωγή στο UNIX και άλλα εργαλεία Pedro Trancoso Γιαννάκης Σαζεϊδης
UNIX • Τι είναι; • Γιατί UNIX;
UNIX • Δημιούργησε στης αρχές του 70 από τα Bell Labs • Παραλλαγές Unix: • Linux, AIX, Solaris, Ultrix, Irix, Tru64, FreeBSD • Χαρακτηριστικά: • Πολλών χρηστών (multi-user) • Πολλών εργασιών (multi-tasking)
Χρησιμοποίηση του συστήματος 1 • User account: • Username • Password (αλλαγή του password με την εντολή passwd) • Προσοχή!(1) Το UNIX είναι case-sensitive δηλαδή το username pedro είναι διαφορετικό από Pedro ή PEDRO • Προσοχή!(2) Αλλάξτε password συχνά! • Login και Logout • logout, exit, CTRL-D
Χρησιμοποίηση του συστήματος 2 • Shell (Κέλυφος) • Είναι το πρόγραμμα που διαβάζει τις εντολές του χρήστη, τις ερμηνεύει και ξεκινά τα προγράμματα που θα τις εκτελέσουν • Παραδείγματα: sh, csh, bash, tcsh • Το X: περιβάλλον “windows” • Ξεκινά με xinit • Ανοίγεις “παράθυρα” με xterm&
Οργάνωση Αρχείων • Δέντρο • Ριζικός κατάλογος (root directory): “/” • Κατάλογοι (directories) και υποκατάλογοι (sub-directories) • Βασικές εντολές: • pwd, ls, cd, mkdir, rm, cp, mv, cat, more • Π.Χ.: ls –l • Ειδικοί συμβολισμοί • . Τρέχον κατάλογος (current dir) • .. Κατάλογος που περιέχει τον τρέχον (parent dir) • ~ Κατάλογος του χρήστη (user´s dir) • Π.Χ.: cd ../.. , cd ~/RES • Βοήθεια για τις εντολές:man εντολή
μέγεθος χρηστής όνομα άδειες ομάδα του ημερομηνία Προστασία αρχείων (File Protection) • Αλλάξτε τις άδειες των κατάλογων και αρχείων: chmod • Άδειες: • r (διάβαση), w (γράψιμο), x (εκτέλεση) • u (χρήστης), g (ομάδα), o (υπόλοιποι), a (όλοι) • Π.Χ. >ls –l -rw-r--r-- 1 pedro cs 13710 Apr 16:54 x.c -rw-r--r-- 1 pedro cs 68020 Aug 13:45 x.txt >chmod g+w x.c >ls –l x.c -rw-rw-r-- 1 pedro cs 13710 Apr 16:54 x.c
Επιμελητές • Vi • i (για εισόδου), ESC(για εντολές) • Εντολές: h (αριστερά), l (δεξιά), j (κάτω), k (πάνω) • Εντολές: :w (φύλαξη ), :q (έξοδο), • Emacs • Έχει μενού!
Δημιουργήσει Προγράμματα • Βήματα: • ...Σκεφτείτε για την λύση του προβλήματος... • Γράψτε τον πρόγραμμα σε γλώσσα προγραμματισμού “C”... χρησιμοποιώντας ή το viή to emacs • Μεταφράστε τον πρόγραμμα χρησιμοποιώντας ένα μεταγλωττιστής όπως το ccή το gcc >gcc –o hello hello.c • Εκτελείστε τον πρόγραμμα >hello Hello World! >
Makefiles # # Makefile # CC = gcc CFLAGS = -O3 hello: hello.c $(CC) $(CFLAGS) -o hello hello.c
Makefiles (2) # # Makefile - simulator suite make file # CC = gcc OFLAGS = -O3 OEXT = o BINUTILS_INC = -I../include BINUTILS_LIB = -L../lib CFLAGS = $(OFLAGS) $(BINUTILS_INC) $(BINUTILS_LIB) SRCS = main.c sim-outorder.c memory.c regs.c cache.c \ resource.c endian.c misc.c power.c sgtty.c all: sim-outorder @echo "my work is done here..." sim-outorder: sim-outorder.$(OEXT) cache.$(OEXT) $(CC) -o sim-outorder $(CFLAGS) sim-outorder.$(OEXT) cache.$(OEXT) c.$(OEXT): $(CC) $(CFLAGS) -c $*.c
Shell Scripts #! /bin/csh set APP = hello set OUTPUT = hello.output echo "Running the program" $APP echo "Running the program and redirecting output" $APP > $OUTPUT echo "The End"
$SIM $SIMOPS $APP Q3.sql >& $OUTDIR/q3.out $SIM $SIMOPS $APP Q6.sql >& $OUTDIR/q6.out $SIM $SIMOPS $APP Q12.sql >& $OUTDIR/q12.out Shell Scripts (2) #! /bin/csh # # Variables # set SIM = sim-outorder set SIMOPS = "-cache:dl1 dl1:64:32:4:l" set APP = postgres set OUTDIR = /local/pedro/results set APPX = (q3 q6 q12) set APPINPUT = (Q3.sql Q6.sql Q12.sql) @ i = 1 while ($i <= $#APPX) $SIM $SIMOPS $APP $APPINPUT[$i] >& $OUTDIR/$APPX[$i].out @ i++ end
Perl #!/usr/bin/perl open(INFILE, "w01.out"); while (defined($line = <INFILE>)) { if ($line =~ /^sim_num_insn/) { @part = split(/[ ]+/, $line); $data = @part[1]; } } print "sim_num_insn = " . $data . "\n"; #!/usr/bin/perl open(INFILE, $ARGV[0]); …
Perl (2) #!/usr/bin/perl $path = "."; @tokens = (icache_power, dcache_power, clock_power, sim_num_insn); while (defined($file = <$path/*.out>)) { open(INFILE, $file); while (defined($line = <INFILE>)) { for ( $x = 0; $x <= $#tokens; $x++ ) { if ($line =~ /^@tokens[$x]/) { @part = split(/[ ]+/, $line); @data[$x] = @part[1]; } } } # output results print $file . “\n“; for ( $x = 0; $x <= $#tokens; $x++ ) { print " " . @data[$x]; } print "\n"; }
Bibliography • Links • http://www.cs.ucy.ac.cy/~epl605 • Documentation • http://www.rice.edu/IT/help/documents/ • Makefile • http://www.cs.indiana.edu/classes/c304/Makefiles.html • Shell Scripts • http://www.eng.hawaii.edu/Tutor/csh.html • Perl • http://archive.ncsa.uiuc.edu/General/Training/PerlIntro/