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

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

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Shell Scripts: loops / if / test

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

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

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

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

% ls -l /usr/bin/wc -rwxr-xr-x 1 root bin 7368 Jul /usr/bin/wc

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

Δικαιώματα Πρόσβασης στο Λειτουργικό Σύστημα UNIX. Χρήστες και Ομάδες στο Unix. Δικαιώματα στο Unix. Παράδειγμα Δένδρου Συστήματος Αρχείων

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

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

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

Βασικές εντολές του Unix-Linux

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

1st exercise of work2 - REMARKS

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

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

Η εντολή ln. σύνδεση με την πραγματική καταχωρημένη πληροφορία. περισσότερα ονόματα (συνδέσεις). Τα επιπλέον ονόματα δημιουργούνται με

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

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

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

Mε την ονομασία Unix ή μάλλον Unix-like αναφερόμαστε

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

Directories & Files

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Εισαγωγή στο UNIX. Κωνσταντίνος Καραφασούλης ιδάσκων (Π 407) Τµήµα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστηµάτων

2.1. Οι λογαριασµοί χρηστών Σύνδεση (login) και αποσύνδεση (logout)

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

Δίκτυα Η/Υ στην Επιχείρηση

$ vi pass Κλήση του vi για το αρχείο pass. $ vi pass. :wq

Προγραµµατισµός 2 The shell

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

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

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

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

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 10

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Σχολή Θετικών Επιστημών Τμ. Πληροφορικής. Διδάσκων: Ι. Η. Λαγαρής. Εισαγωγή

Ενότητα 1 Διάλεξη 1β

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

Κεφάλαιο 10 Διαχείριση Αρχείων και Καταλόγων

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

Εργαστήριο ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ & ΚΑΤΑΛΟΓΩΝ ΣΤΟ UNIX. Εισαγωγή

ΕΡΓΑΣΤΗΡΙΟ 2: Unix Tutorial

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Σύστηµα Αρχείων και Καταλόγων

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

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

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

Δικαιώματα Πρόσβασης στο Λειτουργικό Σύστημα UNIX

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

Εντολές του Λειτουργικού Συστήματος UNIX

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

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ I. 1. Εισαγωγή 3 ΠΡΟΛΟΓΟΣ

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

ΕΡΓΑΣΤΗΡΙΟ #1. Το Λειτουργικό Σύστηµα Unix

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

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

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

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

Εντολές Διαχείρισης Αρχείων στο Λειτουργικό Σύστημα UNIX

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

Προγραµµατισµός Συστήµατος

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Λειτουργικό σύστημα Unix

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

Είσοδος/Έξοδος (I/O) Παράδειγμα Δένδρου Συστήματος Αρχείων. Ανακατεύθυνση Εισόδου/Εξόδου και Διασωλήνωση στο Λειτουργικό Σύστημα UNIX

Fixed Character strings

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ. ΕΠΛ371 - Προγραµµατισµός Συστηµάτων

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

Μεταφραστής (Compiler)

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

ENOTHTA 8 IAXEIPIΣH KAI ΣYΣTHMATA APXEIΩN

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

Shell Scripts. $ friend=nikos $ echo $friend. $ set grep -n friend. [^a-z] π.χ. echo rm??ee*.txt [1] Nikos

Εργαστήριο 4 Ασκήσεις: Διαχείριση Δικτύου (nmap, iptables) και Προχωρημένες Εντολές Unix (grep, ps, cut, find)

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

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

Transcript:

1. Permissions ικαιώµατα χρήσης αρχείων και καταλόγων http://repfiles.kallipos.gr/html_books/79/205_chapter5.html#sec_perms Υπάρχουν 9 προστασίες ή mode rwxrwxrwx (Owner/Group/Public) µερικά παραδείγµατα είναι: «read-only-mode» θα έχει r--r--r-- «write-mode» θα έχει rw-rw-rw- «executed-mode» θα έχει rwxr-xr-x vassik@aetos:~$ ls -l Ιδιοκτήτης Οµάδα R W X 4 2 1 user group others r 400 40 4 w 200 20 2 x 100 10 1 Η προστασία π.χ. rwx------ δίνει δικαιώµατα στον ιδιοκτήτη του (vassik) ανάγνωσης (r) εγγραφής (w) και εκτέλεσης(x) και κανένα δικαίωµα στην οµάδα του και στους υπόλοιπους. rwx --- --- 111 000 000 (αν βάλουµε 1 όταν έχει δικαίωµα, και 0 όταν δεν έχει ) 700 (οκταδικός) User: Group: Others: rwx rwx rwx 777 400+200+100+ 40+20+10+ 4+2+1 rwx r-x r-x rw- r-- r-- 755 644 400+200+100+ 400+200+ 40 +10+ 40+ 4+1 4+ Status stat Κατάσταση file & file system vassik@aetos:~$ stat xunix/lab3/hello.doc User mask umask Μάσκα δικαιωµάτων χρήστη Tα δικαιώµατα που δίνονται κατά την δηµιουργία ενός αρχείου ή καταλόγου και διαφέρουν ανά σύστηµα ελέγχονται µε το user mask. H µεταβλητή user mask δίνει τα δικαιώµατα που αφαιρούνται αυτόµατα από τα αρχεία και τους καταλόγους που δηµιουργεί ένας χρήστης έτσι π.χ.0077 σηµαίνει rwx --- --- σηµαίνει ότι µόνο ο ιδιοκτήτης θα έχει δικαιώµατα στα νεοδηµιουργηθέντα αρχεία & φακέλλους vassik@aetos:~$ umask 0022 σηµαίνει για ΦΑΚΕΛΛΟ rwx r-x r-x Συνήθη δικαιώµατα είναι τα 0644 (rw- r--r--) για αρχεία -οι άλλοι µπορούν να διαβάσουν µόνο 0755 (rwxr-xr-x) για καταλόγους- οι άλλοι µπορούν να διαβάσουν/εκτελέσουν [1]

777 (όλα τα δικαιώµατα) 666 (όλα τα δικαιώµατα σε αρχεία) 755-644 - 022 (µείον rwx για g,o) 022 (µείον w για g,ο) Αν το umask είναι 077 σηµαίνει για τους φακέλους ότι τα δικαιώµατα που αφαιρούνται είναι 7 (τα rwx) από την οµάδα (g) και τους υπόλοιπους (o). Αν το umask είναι 022: vassik@aetos:~$ umask 022 vassik@aetos:~$ umask 022 αλλαγή της µάσκας σε 022 σηµαίνει ότι η οµάδα (g) και οι υπόλοιποι (o) δεν θα έχουν το δικαίωµα 2 (το w) στους φακέλους δηλ. rwx r-x r-x και στα αρχεία δεν θα έχουν το δικαίωµα 2 αλλά και το 1, γνωρίζοντας ότι στα default δικαιώµατα των αρχείων δεν περιλαµβάνεται δικαίωµα (x) εκτέλεσης δηλ. rw- r-- r-- Change mode chmod Αλλαγή δικαιωµάτων Tα δικαιώµατα ενός αρχείου ή καταλόγου αλλάζουν µε την εντολή chmod 400+200+40+4 = 644 vassik@aetos:~$ chmod 644 arxeio vassik@aetos:~$ chmod u+w arxeio vassik@aetos:~$ chmod o+wr arxeio vassik@aetos:~$ chmod g-w arxeio vassik@aetos:~$ chmod g=r arxeio vassik@aetos:~$ chmod ugo+r, u+w arxeio Αλλαγή δικαιωµάτων για το arxeio σε rw-r--r-- + προσθήκη δικαιώµατος - αφαίρεση δικαιώµατος = θέτει ακριβή δικαιώµατα u ser g roup o thers r 400 40 4 w 200 20 2 x 100 10 1 u: user, g: group, o: others και a: all Υπάρχει και ένα ακόµη σύνολο δικαιωµάτων (sst) σε ένα ψηφίο που είναι προαιρετικό και κοινό για όλες τις οµάδες: sst (µε τιµές 1..7 δηλαδή 1 4:s, 2:S, 1:t) s: setuid Αλλαγή δικαιωµάτων χρήστη at run time (για αρχεία εκτελέσιµα) Όταν δηµιουργείται ένας κατάλογος ανήκει στο χρήστη που ανήκει ο γονικός (για directory) S: Setgid Αλλαγή δικαιωµάτων της οµάδας του χρήστη (για αρχεία εκτελέσιµα) Όταν δηµιουργείται ένας κατάλογος ανήκει στην οµάδα που ανήκει ο γονικός (για directory) t : sticky bit Το εκτελέσιµο (πχ vi) παραµένει στην µνήµη (για αρχεία και παλιότερα συστήµατα) Ο χρήστης µπορεί να διαγράψει από κοινόχρηστους καταλόγους µόνο τα δικά του (για directory) Το lab4 είναι κατάλογος vassik@aetos:~$ chmod R 755 myunix/lab4 H επιλογή R σε έναν κατάλογο θέτει δικαιώµατα στο κατάλογο αλλά και στους υποκαταλόγους του (recursive). Προσοχή το R είναι κεφαλαίο. 1 chmod 1666 το sticky bit 1 (δεν επιτρέπει τις διαγραφές..) [2]

2. Metacharacters & Κλάσεις Χαρακτήρων *,?,[ ],[-] http://repfiles.kallipos.gr/html_books/79/204_chapter4.html#sec_wildcards ls -l /tmp -t ~/work Oταν δίνεται µια εντολή, π.χ. οι επιλογές της εντολής (οptions), καθώς τα στοιχεία (αrguments/αρχεία) που χρειάζεται η εντολή, χωρίζονται µεταξύ τους µε κενό. Σε µια εντολή µπορούµε να χρησιµοποιήσουµε και ειδικούς χαρακτήρες, που λέγονται µεταχαρακτήρες, τους οποίους το κέλυφος ερµηνεύει πριν τους περάσει στην εντολή πχ Σύµβολο Σηµασία > Ανακατεύθυνση εξόδου πχ date >out >> Ανακατεύθυνση εξόδου (append) < Ανακατεύθυνση εισόδου << Ανακατεύθυνση εισόδου * Μπαλαντέρ αντικατάστασης ονόµατος αρχείου (µηδέν ή περισσότερους χαρακτήρες)? Mπαλαντέρ αντικατάστασης ονόµατος αρχείου (ένας χαρακτήρας) [] Μπαλαντέρ αντικατάστασης ονόµατος αρχείου (ένας χαρακτήρας από τις αγκύλες) `cmd` Αντικατάσταση εντολών πχ echo `date` $ (cmd) Αντικατάσταση εντολών ιασωλήνωση (pipe ) πχ cat /etc/passwd more Ή (εκτέλεση υπό όρους) && Και (εκτέλεση υπό όρους) & Εκτέλεση εντολής στο παρασκήνιο, διεργασίες παρασκηνίου πχ sleep 10& () Εντολές Οµάδος, Ακολουθίες Εντολές πχ (date; pwd; ls) >out ; Aκολουθία εντολών $ Ανάκτηση της τιµής µιας µεταβλητής # Σχόλιο \ Αποτροπή της ερµηνείας του επόµενου χαρακτήρα Μερικές φορές θέλουµε στην εντολή που τρέχει, να δώσουµε ένα ειδικό χαρακτήρα και να µη ερµηνευτεί π.χ. θέλω να τυπώσω το $, για να µην ερµηνευτεί το $ βάζω µπροστά το \ δηλ. echo My book costs \$20. Τα πολλά \ είναι δυσανάγνωστα, γιαυτό βάζουµε µονά ' ' ή τα διπλά " " (τα " ερµηνεύουν µόνο τα \ $ \ ` ` ). Υπάρχουν τρεις επιλογές για να αποφευχθεί η ερµηνεία των µεταχαρακτήρων από το κέλυφος 1. Αποτροπή της ερµηνείας του µεταχαρακτήρα µε µια ανάστροφη κάθετο (\) $ echo \# Naxa 100\$ \! # Naxa 100$! Θέλω κενό $ echo a b a b $ echo a\ \ \ \ \ \ \ b a b $ echo This could be \ > a very \ > long line\! This could be a very long line! 2. Χρήση µονών εισαγωγικών (' ' ) γύρω από το κείµενο. Τα µονά εισαγωγικά προστατεύουν όλους τους χαρακτήρες εκτός από το (\) $ echo '$USER='$USER $USER=vassik $ echo -e 'name \t: John' name : John Θέλω tab 3. Χρήση διπλών εισαγωγικών (" ") γύρω από το κείµενο. Τα διπλά εισαγωγικά προστατεύουν όλους τους χαρακτήρες εκτός από τους $ \ ` ` Τα διπλά εισαγωγικά είναι πιο συνήθη, µιας και συχνά χρησιµοποιούνται µεταβλητές περιβάλλοντος. option -e (enable..) escape chars eg: \n newline \t tab \a beep $echo "\$USER=$USER" $USER=vassik $ echo -e " My current dir is `pwd` \n and my home dir is $HOME" My current dir is /tmp and my home dir [3] is /home/staff/ektaktoi/vassik

Σηµείωση Τα Μονά και διπλά εισαγωγικά προστατεύουν το ένα το άλλο πχ: $ echo 'Hi "Intro to Unix" Class' Hi "Intro to Unix" Class $ echo "Hi 'Intro to Unix' " Hi 'Intro to Unix' Class Xρήση { } για προστασία των Μεταβλητών vassik@aetos:~$ echo $USERWork vassik@aetos:~$ δεν ξέρει την $USERWork και δεν τυπώνει κάτι Oι µεταχαρακτήρες(wildcards) µπαλαντέρ µπαίνουν στις εντολές για να αντικαταστήσουν ονόµατα ή µέρος τoυ ονόµατος αρχείων και καταλόγων. Έτσι µε την εντολή rm ri hello* ζητώ να σβηστούν όλα εκείνα τα αρχεία και οι φάκελοι που το όνοµά τους ξεκινά µε hello. (το όνοµα µετά µπορεί να έχει και κάτι άλλο µετά π.χ. µπορεί να ονοµάζεται helloversion1). Οι εκφράσεις µε wildcard στις εντολές rm, mv µε (π.χ. rm h*e* ) να δοκιµάζονται πρώτα µε τις εντολές ls ή echo (π.χ. echo rm h*e* ) ώστε να µην σβηστούν ή µεταφερθούν άθελά µας κάτι που δεν επιθυµούµε. Το * αντικαθιστά από κανέναν έως όλους τους χαρακτήρες ενός ονόµατος: ls * λίστα µε όλα (αρχεία και κατάλογοι) ls *.* λίστα µε εκείνα που στο όνοµά τους υπάρχει τελεία Το? αντικαθιστά έναν ακριβώς χαρακτήρα ενός ονόµατος: ls? λίστα µε εκείνα που το όνοµά τους είναι ένας χαρακτήρας ls lab? λίστα µε εκείνα που το όνοµά τους ξεκινά µε lab και µετά ακολουθεί ένας χαρακτήρας πχ. lab1, lab2, lab3, labx. Mε τις [ ] αντικαθιστάται ένας ακριβώς χαρακτήρας µέσα από τις αγκύλες: ls lab[123] λίστα µε εκείνα που το όνοµά τους ξεκινά µε lab και µετά ακολουθεί ή το 1 ή το 2 ή το 3 πχ. lab1, lab2, lab3 ls lab[1-3] τo ίδιο ακριβώς µε πριν (αντικατάσταση εύρους) ls lab[!123] λίστα µε εκείνα που το όνοµά τους ξεκινά µε lab και µετά ακολουθεί ένας χαρακτήρας που δεν είναι 1 ή 2 ή 3 πχ. labx. Οι χαρακτήρες που αντικαθιστά οι µεταχαρακτήρες φαίνονται στον παρακάτω πίνακα: Χαρακτήρες Ποιόν * 0 έως όλους οποιονδήποτε? 1 οποιονδήποτε [ ] 1 έναν από αυτούς που βρίσκονται µέσα στις [ ] πχ. για το [abcd] ή a, ή b, ή c, ή d. [-] 1 έναν από αυτούς που βρίσκονται µέσα στο κλειστό διάστηµα πχ. για το [a-d] ή a, ή b, ή c, ή d. [!] [^] 1 δεν πρέπει να υπάρχει ένας από αυτούς που βρίσκονται µέσα στα [ ] πχ. για το [!a-d] να µην έχει a, ή b, ή c, ή d. Κλάσεις χαρακτήρων πχ [ [:digit:] ] [![:upper:] ] vassik@aetos:~$ echo ${USER}Work vassikwork vassik@aetos:~$ [4]

στις [ ] µπαίνουν και ονόµατα κλάσεων χαρακτήρων όπως π.χ alnum, alpha, ascii, blank,cntrl, digit, graph, lower, print, punct, space, upper, word, xdigit. - εν γίνεται αντικατάσταση των wildcards όταν είναι µέσα σε µονά ή διπλά εισαγωγικά. - Aν δεν βρεθεί αντιστοιχία µε κάποιο όνοµα αρχείου τότε τα wildcards δεν µεταφράζονται. - Τα wildcards µπορούν να αποτελέσουν τµήµα διαδροµής π.χ. echo /*/*/*txt, τι δίνει η cp * Παραδείγµατα Έστω ότι έχω 10 αρχεία µε ονόµατα: c c1 c15 c2 c25 c250 c3 c35 c5 c8 vassik@aetos:~$ ls c* c c1 c15 c2 c25 c250 c3 c35 c5 c8 10 αρχεία µε 1 χαρακτήρα και πάνω αρχίζουν µε c και µετά ότι νάναι (και τίποτα) Να µην υπάρχει στο όνοµα ένας χαρακτήρας ότι νάναι vassik@aetos:~$ ls c[!128]5 c35 1 αρχείο µε 3 χαρακτήρες 1 ος χαρακτήρας c 2 ος χαρακτήρας να µην είναι ή 1 ή 2 ή 8 και 3 ος χαρακτήρας 5 Αν αντικαθιστώντας, δεν υπάρχει αρχείο µε κατάλληλο όνοµα: Συνδυασµοί vassik@aetos:~$ ls c? c1 c2 c3 c5 c8 vassik@aetos:~ $ ls Κ* ls: cannot access K*: No such file or directory vassik@aetos:~$ ls?[128]* c1 c15 c2 c25 c250 c8 6 αρχεία - µε πάνω από 2 χαρακτήρες 1 ος χαρακτήρας ότι νάναι 2 ος χαρακτήρας ή 1 ή 2 ή 8 και 3 ος χαρακτήρας και µετά ότι νάναι (και τίποτα) v5 αρχεία - µε 2 χαρακτήρες αρχίζουν µε c και µετά 1 χαρακτήρα vassik@aetos:~$ ls c[128]5 c15 c25 2 αρχεία µε 3 χαρακτήρες 1 ος χαρακτήρας c 2 ος χαρακτήρας ή 1 ή 2 ή 8 3 ος χαρακτήρας 5 vassik@aetos:~ $ ls?c c? ls: cannot access?c: No such file or directory c1 c2 c3 c5 c8 vassik@aetos:~$ ls?[!128]* c3 c35 c5 3 αρχεία - µε πάνω από 2 χαρακτήρες 1 ος χαρακτήρας ότι νάναι 2 ος χαρακτήρας να µην 1 ή 2 ή 8 και 3 ος χαρακτήρας και µετά ότι νάναι (και τίποτα) vassik@aetos:~ $ mkdir tests tests/lab3 tests/lab3/ask1; cd tests/lab3/ask1 vassik@aetos:~/tests/lab3/ask1$ touch Hello.dat hello.dat hello.doc vassik@aetos:~/tests/lab3/ask1$ ls -l -rw------- 2 vassik conit 0 Mar 24 20:23 hello.dat -rw------- 2 vassik conit 0 Mar 24 20:23 Hello.dat -rw------- 2 vassik conit 0 Mar 24 20:23 hello.doc Η σειρά εµφάνισης των 3 αρχείων! ηµιουργία 3 αρχείων µέσα στο:~/tests/lab3/ask1 Τα βασικά σύνολα χαρακτήρων είναι τα: ascii (7 bits, 128 χαρακτήρες 2 ) iso_8859-1 (8 bits, 256 χαρακτήρες), iso_8859-2, iso_8859-7 (greek), iso_8859-16 utf8 (1 χαρακτήρας από 8-16 bits), utf16 (1 χαρακτήρας 16-32bits) 3 Στα σύνθετα σύνολα χαρακτήρων (UTF), ορίζονται και ισοδυναµίες χαρακτήρων πχ À à ã ä A Ά A a. Έτσι το [aα-ζ] ταιριάζει και τους πεζούς χαρακτήρες [a-z] αφού χρησιµοποιείται UTF charset 4. ( aabbccdd zz) 2 Οι πρώτοι 32 χαρακτήρες είναι µη εκτυπώσιµοι. 3 ώστε εντολές man ascii, man iso_8859-1, man utf8 για λεπτοµέρειες 4 Στο κατάλογο /usr/share/i18n/locales είναι τα διαθέσιµα locales και στο αρχείο /etc/locale.gen ποια locales θέλουµε να χρησιµοποιήσουµε στο σύστηµά µας.τρέξτε και την εντολή locale [5]

vassik@aetos:~lab3 $ ls * a A ask1 b B c C d D e E vassik@aetos:~lab3 $ ls [A-B] A b B vassik@aetos:~lab3 $ ls [a-c] a A b B c vassik@aetos:~lab3 $ ls [a-a] a vassik@aetos:~lab3 $ ls [A-a] ; ls [E-B] ls: cannot access [A-a]: No such file or directory ls: cannot access [E-B]: No such file or directory vassik@aetos:~lab3 $ ls [!abe] A B c C d D E vassik@aetos:~lab3 $ ls [!A-B] a c C d D e E vassik@aetos:~lab3 $ ls [!A-a] a A b B c C d D e E vassik@aetos:~lab3 $ touch 0 1 2 3 4 5 6 7 8 9 vassik@aetos:~lab3$ touch 10 11 12 13 21 22 vassik@aetos:~lab3 $ ls 0 1 10 11 12 13 2 21 22 3 4 5 6 7 8 9 a A ask1 b B c C d D e E vassik@aetos:~lab3 $ ls [012] 0 1 2 vassik@aetos:~lab3 $ ls [0-9] 0 1 2 3 4 5 6 7 8 9 vassik@aetos:~lab3 $ ls [1-1] 1 vassik@aetos:~lab3 $ ls [0-12] 0 1 2 vassik@aetos:~lab3 $ ls [11-13] 1 3 vassik@aetos:~lab3 $ ls [12-22] 1 2 vassik@aetos:~lab3 $ ls [12-3] 1 2 3 vassik@aetos:~lab3 $ ls [!012] 3 4 5 6 7 8 9 a A b B c C d D e E Έστω 10 αρχεία µε ονόµατα: A B C D E a b c d e Σειρά εµφάνισης (το ask1 είναι directory) Aπό τον τρόπο ταξινόµησης των αρχείων, γίνεται αντιληπτό και το αποτέλεσµα της αντικατάστασης εύρους χαρακτήρων. εν δίνει κάποιο αποτέλεσµα Να µην είναι ο χαρακτήρας a ή b ή e Ενας χαρακτήρας, που δεν βρίσκεται στο διάστηµα Α-Β Το διάστηµα Α-a δεν υπάρχει, άρα όλα Έστω ακόµη 16 αρχεία (αυτά υπάρχουν από πριν- ΣΥΝΟΛΟ 26 αρχεία) ένας χαρακτήρας ή 0 ή 1 ή 2 στο διάστηµα 0 έως 9 στο διάστηµα 1-1 στο διάστηµα 0-1 ή το 2 στο διάστηµα 1-1 ή το 1 ή το 3 στο διάστηµα 2-2 ή το 1 ή το 2 στο διάστηµα 2-3 ή το 1 δεν θα εµφανιστούν τα 0,1,2 καθώς και τα 10 11 12 13 21 22 (έχουν 2 χαρακτήρες) Η εντολή export LC_ALL=C μας γυρνάει στο ascii (δεν έχει ελληνικά) (echo $LANG, ή LC_ALL override LANG) ενώ η εντολή export LC_ALL=el_GR.ISO8859-7 (ελληνικά, αν είναι εγκατεστημένο) [6]

3. Aνακατεύθυνση εντολής (redirect) Redirecting the standard output > και >> Οι εντολές που δίναµε µέχρι τώρα εµφάνιζαν τα αποτελέσµατά τους στην οθόνη. Αν θέλουµε το αποτέλεσµα µιας εντολής π.χ. της ls να µπεί σε ένα αρχείο που λέγεται π.χ. dirlab4 βάζουµε > vassik@aetos:~/xunix/lab4$ ls -la > dirlab4 vassik@aetos:~/xunix/lab4$ cat dirlab4 total 228 drwxr-xr-x 2 vassik conit 140 Apr 7 14:45. drwxr-xr-x 7 vassik conit 62 Apr 6 22:21.. -rwx--x--x 2 vassik conit 0 Apr 7 01:08 Dir1 κτλ vassik@aetos:~/xunix/lab4$ date >> dirlab4 vassik@aetos:~/xunix/lab4$ l Το dirlab4 είναι το νέο αρχείο που θα δηµιουργηθεί και θα περιέχει ότι θα έδειχνε η εντολή ls -la Mε cat βλέπετε τι περιέχει το αρχείο dirlab4 Αν το αρχείο υπάρχει ήδη θα γίνει overwrite Στο αρχείο dirlab4 που περιέχει ότι θα έδειχνε η εντολή ls -la στην οθόνη θα προστεθεί (append) µια γραµµή ακόµη µε την ηµεροµηνία. Aν θέλω σε ένα αρχείο να µπει το αποτέλεσµα πολλών εντολών µαζί βάζω ( ) (date ; who) > dirlab4 Αν θέλω το αποτέλεσµα µιας εντολής να µπει στο τέλος ενός αρχείου/append βάζω >> cal -m3 >> dirlab4 Η ανακατεύθυνση 5 στο παραπάνω παράδειγµα έγινε σε αρχείο (αντί δηλαδή να γίνουν οι εντολές στην οθόνη γράφτηκαν σε αρχείο) θα µπορούσε όµως να σταλεί σε.. εκτυπωτή κτλ Redirecting the standard input < και << Υπάρχουν εντολές που παίρνουν τα δεδοµένα τους από το πληκτρολόγιο. Μπορούν να ανακατευθυνθούν και πάρουν τα δεδοµένα τους π.χ. από αρχεία. vassik@aetos:~ $ read a 4 vassik@aetos:~ $ read a < work1 vassik@aetos:~$ echo $a #! /bin/sh vassik@aetos:~$ tr avi AVI vassik VAssIk ^D vassik@aetos:~$ tr a-z A-Z<work1 #! /BIN/SH ECHO ===================== ECHO MY NAME IS : ECHO MY USERNAME IS: Η εντολή read a περιµένει να πληκτρολογήσουµε την τιµή του a (δώσαµε 4 ) Η εντολή µπορεί να ανακατευθυνθεί ώστε να διαβάσει τα δεδοµένα από το αρχείο work1 και όχι από το πληκτρολόγιο. Έτσι η a περιέχει την 1 η γραµµή του αρχείου work1 Η εντολή tr (translate) µεταφράζει/αλλάζει όλα τα a σε Α, τα v σε V και τα i σε I που θα πληκτρολογήσουµε. (δώσαµε vassik και το έκανε VΑssIk ) (το σταµατώ µε ^D) Η εντολή µπορεί να ανακατευθυνθεί ώστε να αλλάξει τα δεδοµένα του αρχείου work1 σε κεφαλαία (εµφανίζονται στην οθόνη όλες οι σειρές του αρχείου work1 έχοντας όµως κεφαλαία γράµµατα) ΚΥΤΤΑ στην 4 η εργασία την ανακατεύθυνση cat << 5 Με ή χωρίς κενά πριν και µετά από τα > και >> Έτσι π.χ. και η εντολή pwd >> file1 και η. pwd>>file1 είναι αποδεκτή [7]

4. Η µεταβλητή καταγραφής των path των εντολών: $PATH vassik@aetos:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games Tα διαφορετικά directories (πεδία) µεταξύ τους χωρίζονται µε : (όπως και τα πεδία του etc/passwd) Oι εντολές του συστήµατος βρίσκονται σε διαφορετικά directories π.χ. στο /bin βρίσκεται η εντολή ls, στο usr/bin βρίσκεται η finger κτλ. Το σύστηµα ψάχνει να βρεί εντολές στα directories που καταγράφονται στην µεταβλητή $PATH δηλ εδώ συµφωνα µε το παράδειγµα στα /usr/local/bin /usr/bin /bin /usr/games Για να τρέξει ένα script/εντολή που είναι στο τρέχον directory απαιτείται./ δηλ. να πείτε:./script1 όπου script1 είναι το όνοµα του script αρχείου που θέλετε να τρέξετε και που πρέπει να είναι εκτελέσιµο (δηλ. περιέχει µόνο εντολές και έχει mode x). Μ αυτό τον τρόπο πληροφορείτε το λειτουργικό σύστηµα σε ποιο φάκελο βρίσκεται η εντολή σας (το script σας) δηλ. του λέτε ότι είναι στο τρέχον directory. Άλλος τρόπος είναι να βάλετε µέσα στην µεταβλητή PATH το δικό σας χώρο, όπου θα πρέπει να ψάχνει για τυχόν εντολές π.χ. δηµιουργείτε φάκελο myscripts vassik@aetos:~$ mkdir myscripts vassik@aetos:~$ PATH=$PATH:$HOME/myscripts Βλέποντας το path µιας εντολής µε την which vassik@aetos:~$ which man /usr/bin/man vassik@aetos:~$ which ls /bin/ls Για να εκτελέσουµε µια εντολή που βρίσκεται σε άλλο µονοπάτι από αυτό που δίνει η which αρκεί να ζητήσουµε την εντολή µαζί µε το µονοπάτι της π.χ. αν η εντολή λέγεται less και είναι στο current φάκελο δίνουµε./less Εντολή word count wc - µετρώντας.. σε ένα αρχείο vassik@aetos:~/xunix/lab5$ wc /etc/passwd 1748 3501 135465 /etc/passwd vassik@aetos:~/xunix/lab5$ wc -l /etc/passwd 1748 /etc/passwd vassik@aetos:~/xunix/lab5$ wc -w /etc/passwd 3501 /etc/passwd vassik@aetos:~/xunix/lab5$ wc -c /etc/passwd 135465 /etc/passwd [8] H νέα τιµή της µεταβλητής PATH µπαίνει συνήθως στο αρχείο.profile ή στο.bashrc για να δούµε σε πιο κατάλογο βρίσκεται αποθηκευµένη η εντολή π.χ. man η option l (line) δίνει τον αριθµό των γραµµών η option w (word) δίνει τον αριθµό των λέξεων (όπου βρίσκει κενό ή newline, µετρά λέξεις) η option c (char) δίνει τον αριθµό των χαρακτήρων (µετρά και το newline)

5. Συνδέοντας εντολές µε pipelines - διασωληνώσεις Η προκαθορισµένη έξοδος µιας επεξεργασίας/προγράµµατος µπορεί να είναι η είσοδος µιας άλλης επεξεργασίας. Όταν γίνεται αυτό σχηµατίζεται µια pipeline vassik@aetos ~$ who vassik pts/0 partouma pts/1 kxouvero pts/3 2016-03-19 19:26 (ppp-2-85-13-75.home.otenet.gr) 2016-03-19 19:47 (ppp005055246159.access.hol.gr) 2016-03-19 18:18 (46.12.122.220.dsl.dyn.forthnet.gr) vassik@aetos:~/xunix/lab5$ who wc -l 3 vassik@aetos:~$ ls -l /tmp grep x1415 -rw-r--r-- 1 gpseirak x1415 158 Mar 20 22:08 ankanogradiel -rw-r--r-- 1 abesikio x1415 108 Mar 20 18:03 Besikiotis -rw-r--r-- 1 antomi x1415 1737 Mar 20 18:40 Domi -rw-r--r-- 1 aspyros x1415 28 Mar 21 00:07 first Το αποτέλεσµα της who (που µας δείχνει ποιοι είναι συνδεδεµένοι, δηλ. δίνει µια γραµµή για κάθε χρήστη).. Γίνεται είσοδος για το wc -l ώστε τελικά µετράει πόσοι χρήστες είναι συνδεδεµένοι.. To αποτέλεσµα του 1ου γίνεται είσοδος για το 2ο Η εντολή grep string file ψάχνει ένα string µέσα σε ένα file. Έτσι το αποτέλεσµα της ls δηλ. η λίστα του καταλόγου /tmp γίνεται το αντικείµενο έρευνας της grep ψάχνει δηλ. εκεί το string x1415 και αν το βρει µας το εµφανίζει. vassik@aetos:~$ ls -l /tmp grep x1415 sort lpr ώσε την λίστα αρχείων στο /tmp, ψάξε σ αυτήν το x1415, ταξινόµησε το αποτέλεσµα και τύπωσέ το. Αν δεν υπήρχε η δυνατότης pipeline για το παραπάνω θα έπρεπε να γράψουµε π.χ. ~$ ls -l /tmp > file1 ~$ grep x1415 file1 > file2 ~$ sort file2 > file3 ~$ lpr file3 ~$ rm file[123] Εντολές more /less Το more είναι ένα φίλτρο σελιδοποίησης κειµένου, παρουσιάζει µια πλήρη οθόνη την φορά (χρήσιµη στα µεγάλα αρχεία, ώστε να εµφανίζονται οι σελίδες σταδιακά π.χ. more /etc/passwd (µε space εµφανίζεται η επόµενη σελίδα, µε q,q βγαίνω). Το less είναι µεταγενέστερο του more, επιτρέπει και την κίνηση στο αρχείο προς τα πίσω (F) Συνήθως τα χρησιµοποιούµε σε συνδυασµό µε pipeline ( ) π.χ. set more Μέτρηµα αρχείων/φακέλων µέσα σε ένα φάκελο To αποτέλεσµα της εντολήs ls -l είναι 8 γραµµές η πρώτη γραµµή λέει total <αριθµός> οι άλλες 7 γραµµές είναι τα αρχεία /φάκελοι ~$ ls -l wc -l Μετρά πόσες γραµµές, δίνει η εντολή ls -l 8 To αποτέλεσµα 8 σηµαίνει ότι έχω 7 αρχεία (7=8-1 δηλ. βγάζω την γραµµή µε το total). Να γίνει από το Εργ2 η ασκ5, και η ασκ6 και από το Εργ3 η ασκ5, η ασκ6 και να τρέξτε εκτελέσιµα script (Τρέχουν τα αρχεία των εργασιών σας?) [9]