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

Σχετικά έγγραφα
ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

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

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

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

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

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

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

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

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

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Αβδέλαρου Κωνσταντίνα

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

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

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

Επαναληπτικές Ασκήσεις

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

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

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

Shell Scripts: loops / if / test

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

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

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

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

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

ΘΕΜΑ 1ο Α. 1-6 Σωστό Λάθος Μονάδες 12 Β. Στήλης Στήλης Β Στήλης Α Στήλης Β).

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

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

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 3 ΙΟΥΝΙΟΥ ΑΕΠΠ

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Ένα πρώτο πρόγραμμα ΔΟΜΗ TOY ΠΡΟΓΡΑΜΜΑΤΟΣ. Τι σημαίνουν οι εντολές. Από τι αποτελείται ένα πρόγραμμα

ΕΚΦΩΝΗΣΕΙΣ. β. Να γράψετε αναλυτικά τα μειονεκτήματα της χρήσης των πινάκων. γ. Να γράψετε ονομαστικά τις τυπικές επεξεργασίες των πινάκων.

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. i. Η συνθήκη α > β ή α <= β α) είναι πάντα Αληθής β) είναι πάντα Ψευδής γ) δεν υπολογίζεται δ) τίποτα από τα προηγούμενα

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

ΕΡΓΑΣΤΗΡΙΟ: ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΣΤΟΝ ΤΟΥΡΙΣΜΟ. 1o ΕΡΓΑΣΤΗΡΙΟ ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Εντολές Διαχείρισης Αρχείων στο Λειτουργικό Σύστημα UNIX. Δημιουργία Αρχείων. Η Εντολή cat. Παράδειγμα Δένδρου Συστήματος Αρχείων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

6. Αφού δημιουργήσετε ένα πίνακα 50 θέσεων με ονόματα μαθητών να τον ταξινομήσετε αλφαβητικά με την μέθοδο της φυσαλίδας

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Εξετάσεις Προσομοίωσης 24/04/2019

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 25/11/12, 22:00

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Λειτουργικά Συστήματα - Εργαστήριο 6. 6ο Εργαστήριο. Συμπίεση αρχείων Χρήση ειδικών χαρακτήρων στην γραμμή εντολών. Χρήστες και Ομάδες Χρηστών

ΔΙΑΓΩΝΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2008

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

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

ΚΕΝΤΡΙΚΗ ΟΡΓΑΝΩΤΙΚΗ ΕΠΙΤΡΟΠΗ 8 ου ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ 1996 ΠΡΟΚΑΤΑΡΚΤΙΚΗ ΦΑΣΗ ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΘΕΜΑΤΑ ΓΥΜΝΑΣΙΟΥ

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ ΑΡΧΗ ΣΕΛΙΔΑΣ 1

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

ΦΡΟΝΤΙΣΤΗΡΙΟ Μ.Ε. «ΠΕΡΙ ΓΝΩΣΕΩΣ»

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Τελευταίο Μάθημα

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

8 FORTRAN 77/90/95/2003

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

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

Λύσεις για τις ασκήσεις του lab5

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2006

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

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

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

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

ΤΕΛΟΣ 1ΗΣ ΣΕΛΙΔΑΣ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

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

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΡΟΟΔΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

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

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Transcript:

9o ΕΡΓΑΣΤΗΡΙΟ ΣΤΟΧΟΣ σενάρια φλοιού ΑΣΚΗΣΗ 1 Να γράψετε ένα σενάριο φλοιού (shell script) που : 1. θα δέχεται ως ορίσματα εισόδου : το όνομα ενός καταλόγου (να ελέγξετε την ύπαρξη του καταλόγου). μια επέκταση ονόματος αρχείων 2. θα ελέγχει το πλήθος των ορισμάτων εισόδου 3. θα βρίσκει και θα εμφανίζει όλα τα ονόματα των αρχείων του καταλόγου που δόθηκε τα οποία: έχουν την ίδια επέκταση με το δεύτερο όρισμα εισόδου και τα δικαιώματα πρόσβασης περιλαμβάνουν δύο τουλάχιστον προσβάσεις r (read) 4. Σο σενάριο θα εμφανίζει στο τέλος το πλήθος αυτών των αρχείων ΑΣΚΗΣΗ 2 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα checkdirs. Σο πρόγραμμα σεναρίου κελύφους να παίρνει ένα και μόνο όρισμα, το οποίο πρέπει να είναι όνομα καταλόγου. Να ελέγχει το πλήθος ορισμάτων και αν υπάρχει αυτός ο κατάλογος αν δεν υπάρχει εμφανίζει κατάλληλο μήνυμα λάθους. Αν υπάρχει ο κατάλογος να βρίσκει τα αρχεία που υπάρχουν σε αυτόν, εξαιρώντας τους υπο-καταλόγους, και με την βοήθεια της εντολής file, να μας εμφανίζει τον τύπο του κάθε αρχείου. (Φρησιμοποιήστε την test f και την for file in "$dir/"*; do... done ) ΑΣΚΗΣΗ 3 Να δημιουργηθεί μέσω editor ένα αρχείο κειμένου με όνομα data.txt σε κάθε γραμμή του οποίου θα περιλαμβάνονται 4 πεδία με διαχωριστικό : (άνω και κάτω τελεία). Σα πεδία θα είναι : 1. μια IP διεύθυνση π.χ. 195.92.211.47, 192.93.208.2 κλπ. 2. ο κωδικός του ΗΤ που έχει αυτήν την IP διεύθυνση με μήκος 7 χαρακτήρων από τους οποίους οι 3 πρώτοι χαρακτήρες δηλώνουν την αίθουσα, και οι τελευταίοι 2 τον αύξοντα αριθμό του υπολογιστή.

3. η χωρητικότητα σκληρού δίσκου που διαθέτει ο ΗΤ σε Gb π.χ. 20, 40, 100 κλπ π.χ. ένα αρχείο μπορεί να είναι : 195.92.211.47:21029:400 195.92.211.48:21023:400 195.92.211.49:21022:400 195.92.211.44:21021:400 195.92.211.42:21120:500 195.92.211.7:21129:500 195.92.211.14:20121:300 195.92.211.12:20120:550 195.92.211.17:20129:200 195.92.211.2:20202:550 195.92.211.37:20201:200 Να γραφεί ένα σενάριο κελύφους (shell script) με όνομα comp_room που : 1. θα δέχεται ως ορίσματα της γραμμής εντολών το όνομα του αρχείου με τα δεδομένα (πχ: data.txt) και ως 2 ο όρισμα το όνομα (αριθμό) της αίθουσας, πχ:./comp_room data.txt 202 2. θα ελέγχει την ύπαρξη των ορισμάτων εμφανίζοντας το κατάλληλο μήνυμα στην περίπτωση λάθους. 3. Θα ελέγχει την ύπαρξη και αναγνωσιμότητα του αρχείου δεδομένων εμφανίζοντας το κατάλληλο μήνυμα στην περίπτωση λάθους. 4. θα δημιουργεί ένα νέο αρχείο κειμένου με όνομα iproom.txt (όπου ROOM το όνομα της αίθουσας που δόθηκε). Σο αρχείο πρέπει να περιλαμβάνει όλες τις γραμμές του αρχείου data.txt που αντιστοιχούν στην δεδομένη αίθουσα, ταξινομημένο ως προς τον αύξοντα αριθμό του PC. Πχ αν δοθεί το όρισμα 202, το αρχείο θα πρέπει να περιέχει τις γραμμές: 195.92.211.37:20201:200 195.92.211.2:20202:550 5. Να ελέγξετε αρχικά αν το αρχείο που θα δημιουργήσετε υπάρχει στον τρέχοντα κατάλογο και αν υπάρχει τότε να μετονομαστεί σε iproom.bak πριν ξεκινήσει η δημιουργία του νέου αρχείου. 6. θα εμφανίζει στην οθόνη, για το νέο αρχείο, το πλήθος των γραμμών του. Η εντολή read, αν δεν διαβάσει τίποτε από την κανονική είσοδο (και διαβάσει απ ευθείας το END_OF_FILE) επιστέφει κωδικό εξόδου false (!=0). Άρα μπορεί να χρησιμοποιηθεί μέσα σε μια while. Πχ: #!/bin/bash # file: read_test i=1 while read a; do echo "line$i: $a" i=$((i+1)) done

Σο παραπάνω, αν το εκτελέσουμε θα διαβάζει από την κανονική είσοδο (μέχρι το EOF) και θα εμφανίζει αυτό που διάβασε με αρίθμηση. Αν δεν ορίσαμε την κανονική είσοδο, προφανώς θα διαβάσει από το τερματικό. Αν ορίσαμε, τότε θα διαβάσει από εκεί που ορίσαμε:./read_test < file1 cat file1./read_test Με τον ίδιο τρόπο θα μπορούσε μέσα στο script, η read αντί να διαβάζει από την κανονική είσοδο του script, να της δώσουμε να διαβάζει από αρχείο: #!/bin/bash i=1 file="file1" while read a; do echo "line$i: $a" i=$((i+1)) done < "$file" Με τον παραπάνω τρόπο, όλες οι εντολές που βρίσκονται μέσα στο block εντολών της while κληρονομούν ως κανονική είσοδο το αρχείο $file. Γιατί στο παραπάνω δεν θα δούλευε σωστά το: #!/bin/bash i=1 file="file1" while read a < "$file"; do echo "line$i: $a" i=$((i+1)) done Η εντολή set, δέχεται διάφορα ορίσματα και τα καταχωρεί στις μεταβλητές $1,$2, $9 όπως επίσης γεμίζει και τις #$, $*, $@. Πχ μετά από την asidirop@dellpc:~$ set hello world asidirop@dellpc:~$ echo $1 hello asidirop@dellpc:~$ echo $2 world asidirop@dellpc:~$ echo $@ hello world asidirop@dellpc:~$ Η εντολή set, λαμβάνει ως διαχωριστή εξ ορισμού το κενό (πολλαπλά κενά) ή αυτό που έχει οριστεί στην μεταβλητή IFS. Πχ: asidirop@dellpc:~$ IFS=':'

asidirop@dellpc:~$ a='aaaaaa:bbbbbbbb:qqqqqqqqq' asidirop@dellpc:~$ set $a asidirop@dellpc:~$ echo $1 aaaaaa asidirop@dellpc:~$ echo $3 qqqqqqqqq asidirop@dellpc:~$ ΑΣΚΗΣΗ 4 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα checkusers. Σο πρόγραμμα σεναρίου κελύφους να μην δέχεται κανένα όρισμα. Θα διαβάζει το αρχείο /etc/passwd. Η κάθε γραμμή του αρχείου αυτού είναι της μορφής: asidirop:x:510:501:antonis Sidiropoulos:/home/asidirop:/bin/tcsh username:passwd:user_id:group_id:full Name:home directory:default shell και αντιστοιχεί μια γραμμή σε κάθε χρήστη. Για κάθε χρήστη, θέλουμε να εμφανίζουμε το username και το home directory. Να χρησιμοποιήσετε συνδυασμό της while/read και την set. Μπορείτε να ταξινομήσετε το αποτέλεσμα; ΑΣΚΗΣΗ 5 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα με όνομα checkusers2. Σο πρόγραμμα σεναρίου κελύφους να μην δέχεται κανένα όρισμα. Θα διαβάζει το αρχείο /etc/passwd. Η κάθε γραμμή του αρχείου αυτού είναι της μορφής: asidirop:x:510:501:antonis Sidiropoulos:/home/asidirop:/bin/tcsh username:passwd:user_id:group_id:full Name:home directory:default shell και αντιστοιχεί μια γραμμή σε κάθε χρήστη. Για κάθε χρήστη, θέλουμε να εμφανίζουμε το username και το home directory ταξινομημένα. Να χρησιμοποιήσετε την εντολή cut. Η εντολή cut, είναι φίλτρο, διαβάζει την είσοδό της και τυπώνει στην έξοδο το αποτέλεσμα. Φρησιμοποιείται για να επιλέξει συγκεκριμένες "στήλες" από την είσοδο. Πχ: ls l cut c1-10,14-18 τυπώνει από την είσοδο τους χαρακτήρες 1 ο 10 ο και 14 ο -18 ο από κάθε γραμμή. cat /etc/group cut d ':' f1,3 τυπώνει από την είσοδο τους χαρακτήρες το 1 ο και 3 ο πεδίο θεωρώντας ως διαχωριστή το ":". ls -l cut d ' ' f1,7 με βάση τον διαχωριστή ' ' (space) τύπωσε το 1 ο και 7 ο πεδίο. Όμως η έξοδος δεν είναι η αναμενόμενη. Η cut δεν αγνοεί τα πολλαπλά κενά (ή γενικώς πολλές επαναλήψεις του διαχωριστή). Άρα θα πρέπει να αφαιρεθούν οι πολλαπλές εμφανίσεις του space: ls -l tr s ' ' cut d ' ' f1,7

το παραπάνω (εμφάνιση αδειών και ονομάτων αρχείων) δεν δουλεύει τέλεια σε όλες τις περιπτώσεις. Ποιες είναι οι προβληματικές περιπτώσεις; ΑΣΚΗΣΗ 6 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα display_capital. Σο πρόγραμμα σεναρίου κελύφους να παίρνει ένα και μόνο όρισμα, το οποίο πρέπει να είναι όνομα αρχείου και να εμφανίζει τα περιεχόμενα του αρχείου με κεφαλαίους χαρακτήρες. ΑΣΚΗΣΗ 7 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα ls_capital. Σο πρόγραμμα σεναρίου κελύφους να παίρνει ένα και μόνο όρισμα, το οποίο πρέπει να είναι όνομα καταλόγου και αφού κάνει τους απαραίτητους ελέγχους να εμφανίζει τα ονόματα αρχείων που περιέχει ο κατάλογος με κεφαλαία γράμματα. Η εντολή uniq, είναι φίλτρο, διαβάζει την είσοδό της και το τυπώνει στην έξοδο, χωρίς όμως να τυπώνει όμοιες 2 γραμμές συνεχόμενες. Φρησιμοποιείται για να τυπώσει τις μοναδικές γραμμές από ένα αρχείο σε συνδυασμό με την sort (ώστε όλες οι όμοιες γραμμές να είναι συνεχόμενες) Επίσης με το όρισμα c μετράει και τις εμφανίσεις. Πχ: Από το αρχείο /etc/passwd μετρήστε πόσοι χρήστες χρησιμοποιούν το κάθε shell. Απάντηση: Από το αρχείο μας ενδιαφέρει η 7 η στήλη: cut d ':' f7 /etc/passwd πρέπει να ταξινομήσουμε τις γραμμές: cut d ':' f7 /etc/passwd sort Και μετά να εμφανίσουμε τις μοναδικές (και να τις μετρήσουμε): cut d ':' f7 /etc/passwd sort uniq -c ΑΣΚΗΣΗ 8 Να γραφτεί πρόγραμμα σεναρίου κελύφους με όνομα last_users. Σο πρόγραμμα σεναρίου κελύφους να μην δέχεται κανένα όρισμα. Να χρησιμοποιεί την εντολή last (η εντολή last εμφανίζει ποιοι χρήστες έχουν κάνει login τον τελευταίο μήνα) με την βοήθεια της οποίας να μετράει πόσες φορές έκανε login ο κάθε χρήστης. Πχ στον αετό:

asidirop@aetos:/tmp$./last_users 1 abamp 2 achapsi 12 achatsat 1 achatzik 1 alexel 1 alitska 3 amangou 10 ampapad 8 anevang 1 angelar 5 asidirop 2 aspapad 2 astermen