ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Σχετικά έγγραφα
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Εισαγωγή στον Προγραμματισμό

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Λειτουργικά Συστήματα

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τµήµα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήµατα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 7ο Εργαστήριο

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Διάλεξη 7 Εργαλεία Ωφελιμότητας Unix: Αwk

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Μερικές άλλες χρήσιμες εντολές

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Εισαγωγή στον Προγραμματισμό

Μερικές άλλες χρήσιμες εντολές

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Εισαγωγή στον Προγραμματισμό

Συµβολοσειρές - Strings

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στα Λειτουργικά Συστήματα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Shell Scripts: loops / if / test

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Ανάπτυξη και Σχεδίαση Λογισμικού

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

ASPA: A translator from ASP to PHP

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

ΕΠΛ 012. JavaScripts

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 1 Συμβολοσειρές, Πίνακες, Δείκτες

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Προγραμματισμός Ι (ΗΥ120)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Διαδικασιακός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

FINAL TEST B TERM-JUNIOR B STARTING STEPS IN GRAMMAR UNITS 8-17

Λειτουργικά Συστήματα

Εισαγωγή στην Αριθμητική Ανάλυση

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Topic 2: Bash Shell Programming * K24: Systems Programming Instructor: Mema Roussopoulou

Τυπικές χρήσεις της Matlab

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εκφράσεις. Τύποι, Σταθερές & Μεταβλητές. Ορισµός Μεταβλητών

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Εμφάνιση μηνυμάτων ή ενεργοποίηση και απενεργοποίηση της ηχούς εντολών.

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

8. Συνθήκες ελέγχου, λογικοί τελεστές

3. Εκφράσεις και έλεγχος ροής

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Λειτουργικά Συστήματα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Επεξεργασία κειμένου και συμβολοσειρών σε C

ΗΥ-150. Προγραμματισμός

Εισαγωγή στον Προγ/μό Υπολογιστών

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Πληρουορική Γ Γσμμασίοσ

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Transcript:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I Πιτροπάκης Νικόλαος Υποψήφιος Διδάκτορας Contact: npitrop@unipi.gr Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr

Life would be so much easier if we only had the source code.

ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ Οι κανονικές εκφράσεις χρησιμοποιούνται από διάφορες εντολές στο unix και κυρίως από την sed, την grep και την awk, οι οποίες έχουν να κάνουν με την επεξεργασία συμβολοσειρών. [ ] Οτιδήποτε περιέχεται στις αγκύλες. Ταιριάζει με οποιονδήποτε χαρακτήρα Συμβολοσειρά$ Ταιριάζει patterns που τελειώνουν με τη Συμβολοσειρά ^Συμβολοσειρά Ταιριάζει patterns που αρχίζουν με τη Συμβολοσειρά /^$/ Ταιριάζει κενές γραμμές \ Ακυρώνει την ειδική σημασία των μεταχαρακτήρων

SED (1/7) Προκειμένου να αυτοματοποιήσουμε τις αλλαγές στα περιεχόμενα ενός αρχείου, κάνουμε χρήση κάποιων μηχανισμών. Ένας από αυτούς είναι η εντολή sed. Όπως είπαμε και πριν η sed υποστηρίζει κανονικές εκφράσεις και επίσης υποστηρίζει εντολές: Αντικατάστασης Διαγραφής Προσάρτησης Παρεμβολής και Αλλαγής Ας δούμε αναλυτικά κάθε δυνατότητα της sed

SED (2/7) Όσον αφορά τη δυνατότητα της αντικατάστασης κειμένου σε ένα αρχείο η sed συντάσσεται ως εξής: sed [επιλογές] s/παλιό κείμενο/νέο κείμενο/[παράμετροι] π.χ sed `s/palio/neo/` keimeno.txt Επιλογές [g] Εφαρμογή της αντικατάστασης σε όλες τις εμφανίσεις του κειμένου που αντικαθίσταται (global) π.χ sed `s/palio/neo/g` keimeno.txt [αριθμός] Εφαρμογή της αντικατάστασης στη nοστή εμφάνιση ανά γραμμή π.χ sed `s/palio/neo/3` keimeno.txt [w] Εγγραφή των αλλαγών σε αρχείο [p] Εμφάνιση στην οθόνη των γραμμών που αλλάχτηκαν [i] Αγνόηση για πεζά-κεφαλαία

SED (3/7) π.χ sed `s/palio/neo/3pw` keimeno.txt Επιλογές: -n Δεν εμφανίζει το αλλαγμένο αρχείο στην οθόνη (η sed από μόνη της εκτελεί μία cat μετά την ολοκλήρωσή της) π.χ sed -n `s/palio/neo/g` keimeno.txt -e Εκτέλεση περισσότερων αλλαγών π.χ sed -e `s/palio/neo/g` e`s/palio1/neo1/g` keimeno.txt -I Αποθήκευση των όποιων αλλαγών

SED (4/7) Σημαντικό! Μπορούμε να επιλέξουμε σε ποιες γραμμές θέλουμε να εφαρμοστεί η αντικατάσταση. π.χ sed -n `s/palio/neo/3` keimeno.txt Επίσης το σύμβολο & λαμβάνει την τιμή του νέου κειμένου π.χ sed -n `s/unipi.gr/nifantop@&/g` keimeno.txt Άλλα παραδείγματα sed s/^*a -Z][1-4+*//g keimeno.txt sed -i s/ \(^[0-9]\{2,3\}\)*/code removed/1

SED (5/7) Μία άλλη δυνατότητα της sed εκτός της αντικατάστασης είναι και η διαγραφή. Στην περίπτωση της διαγραφής έχουμε την εξής σύνταξη: sed /keimeno/d π.χ sed /skoupidia.txt/d` Πώς διαγράφουμε συγκεκριμένες γραμμές n,kd Διαγραφή των γραμμών από την n έως την k n,k!d Διαγραφή όλων των γραμμών εκτός των n με k n,$ Διαγραφή όλων των γραμμών από το n και κάτω π.χ sed 5,10d keimeno.txt sed 30,$ keimeno.txt sed 6,8!d keimeno.txt sed "/$kati/d keimeno.txt

SED (6/7) Μιλήσαμε για την αντικατάσταση και τη διαγραφή. Όμως η sed μας παρέχει επιπλέον προσάρτηση, παρεμβολή κειμένου και αλλαγή ολόκληρης γραμμής. Για να επιτύχουμε αυτές τις λειτουργίες, χρησιμοποιούμε τη σύνταξη: sed / palio/διακόπτης\neo Διακόπτες: a\ Προσάρτηση του νέου κειμένου στην επόμενη γραμμή από το παλιό i\ Παρεμβολή του νέου κειμένου στην πάνω γραμμή από το παλιό c\ Αλλαγή της γραμμής που περιέχεται το παλιό με το νέο

SED (7/7) Παραδείγματα: Imagine you have a large file ( txt, php, html, anything ) and you want to replace all the words "ugly" with "beautiful" because you just met your old friend Sue again and she/he is coming over for a visit. sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt Add this line after every line with WORD sed `/WORD/ a\ ` Delete all lines with sed cat /etc/passwd sed `d`

ΥΠΟΛΟΓΙΣΜΟΣ ΕΚΦΡΑΣΕΩΝ (1/3) Δεδομένου ότι ο φλοιός δεν υποστηρίζει πράξεις, χρησιμοποιούμε το βοηθητικό πρόγραμμα expr, προκειμένου να τις υπολογίσουμε. Οι πράξεις που υποστηρίζονται με τα αντίστοιχα σύμβολα είναι + Πρόσθεση - Αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Υπόλοιπο διαίρεσης = Απόδοση τιμής == Ισότητα!= Διάφορο

ΥΠΟΛΟΓΙΣΜΟΣ ΕΚΦΡΑΣΕΩΝ (2/3) Παραδείγματα: expr 1 + 1 expr 20 10 expr 5 \* 5 expr 20 / 3 expr 20 % 3 a = $b [ $a == $b ] [ $a!= $b ] Σύνθετα παραδείγματα: expr 8-3 \* 2 2 expr \( 8-3 \) \* 2 10 expr 10 / 3 + 4 7 expr 20 % \( 7 + 2 \)

ΥΠΟΛΟΓΙΣΜΟΣ ΕΚΦΡΑΣΕΩΝ (3/3) Yπάρχουν και οι τελεστές συμβολοσειρών substr, index, length Έστω ότι έχουμε τη συμβολοσειρά "5283username$$2384/" και θέλουμε να πάρουμε την υποσυμβολοσειρά "username". Για να γίνει αυτό πρέπει να διαβάσουμε από τη θέση 5 για μήκος 8. Οι παράμετροι της substr είναι η συμβολοσειρά εισαγωγής, η αρχική θέση και το μήκος. USER=`expr substr $INPUT 5 8` π.χ expr substr transputer 4 5 nsput index String1 String2 Επιστρέφει την πρώτη θέση στο String1 όπου υπάρχει κάποιος χαρακτήρας του String2. π.χ expr index smalltalk btr 6 length String1 Επιστρέφει το μήκος του String1 π.χ expr length systems 7

ΑΣΚΗΣΗ Να γραφεί ένα πρόγραμμα για το κέλυφος που να εκτελεί απλές αριθμητικές πράξεις (πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση και υπόλοιπο), μεταξύ δύο ακεραίων

ΛΥΣΗ #! /bin/sh # # Usage: math n1 op n2 # case $2 in +) echo "Addition requested." echo "$1 + $3 = `expr $1 + $3`" ;; -) echo "Substraction requested." echo "$1 - $3 = `expr $1 - $3`" ;; \*) echo "Multiplication requested." echo "$1 * $3 = `expr $1 \* $3`" ;; /) echo "Division requested." echo "$1 / $3 = `expr $1 / $3`" ;; %) echo "Modulo arithmetic requested." echo "$1 % $3 = `expr $1 % $3`" ;; *) echo "Unknown operation specified." ;; esac

ΑΣΚΗΣΗ 2 Να γραφεί ένα πρόγραμμα για το κέλυφος που να αντιστρέφει δεδομένες συμβολοσειρές, καθώς επίσης να υπολογίζει και τα μήκη τους

ΛΥΣΗ 2 #! /bin/sh # # Usage: revstrs [string1 [string2...]] # for str do strlen=`expr length "$str"` chind=$strlen while test $chind -gt 0 do echo -n "`expr substr \"$str\" $chind 1`" chind=`expr $chind - 1` done echo -n " --> " echo -n "$strlen" echo " character(s)." done

root@oslab:~$ sudo shutdown h now