2o ΕΡΓΑΣΤΗΡΙΟ ΣΤΟΧΟΣ Εξοικείωση με τον χειρισμό αρχείων και καταλόγων. ΑΣΚΗΣΗ 1 Στον παρακάτω πίνακα αναφέρονται οι πιο συχνές εντολές για τον χειρισμό αρχείων και καταλόγων. Χρησιμοποιώντας την εντολή man, συμπληρώστε τα κενά στον παρακάτω πίνακα (εάν δεν υλοποιήθηκε στο 1 ο εργαστήριο). Εντολή Βασικά Ορίσματα Εξήγηση mkdir [όνομα καταλόγου] Δημιουργεί κατάλογο rmdir [όνομα καταλόγου] Διαγράφει κατάλογο cp [-i] [-f] [-r] [πηγή/ές] Αντιγράφει αρχεία ή [προορισμός] καταλόγους mv [-i] [-f] [πηγή/ές] [προορισμός] Μετακινεί/μετονομάζει αρχεία ή καταλόγους rm [-i] [-f] [-r] [ονόματα αρχείων Διαγράφει αρχεία ή ή καταλόγων] καταλόγους cd [όνομα καταλόγου] Αλλαγή τρέχοντος καταλόγου. ls [-l] [-a] [ονόματα αρχείων ή Εμφανίζει τα περιεχόμενα καταλόγων] καταλόγων pwd cat more head tail [ονόματα αρχείων] [ονόματα αρχείων] [-νούμερο] [ονόματα αρχείων] [-νούμερο] [ονόματα αρχείων] ΑΣΚΗΣΗ 2 1. Ανοίξτε ένα τερματικό και εργαστείτε σε αυτό. 2. Βρείτε ποιος είναι ο τρέχον κατάλογος εργασίας (current working directory cwd). 3. Δείτε ποια αρχεία περιέχονται σε αυτόν. 4. Αλλάξτε τρέχον κατάλογο εργασίας. Μεταβείτε στον κατάλογο /tmp. Δείτε ποια αρχεία/κατάλογοι περιέχονται εδώ. 5. Ανοίξτε ακόμη ένα τερματικό και συνδεθείτε στον aetos.it.teithe.gr 6. Επαναλάβετε τα βήματα 2-4 στο νέο τερματικό (δηλαδή στον aetos). 7. Εκτελέστε (στον aetos) την εντολή finger xxx, όπου xxx το username που έχετε στον
αετό. Τι σχέση έχει η πληροφορία Directory: που μας εμφάνισε η finger με τον τρέχον κατάλογο εργασίας μας ΑΣΚΗΣΗ 3 Για τα παρακάτω ανοίξτε ένα Terminal και ένα Dolphin (File Explorer) δίπλα-δίπλα. Εργάζεστε στο Terminal και στον Dolphin παρακολουθείτε τα αποτελέσματα. 1. Να δημιουργήσετε τον κατάλογο test01 κάτω από το home directory σας (του χρήστη studin). Κάντε cd (change directory) στον test01. 2. Να δημιουργήσετε δύο κενά αρχεία με ονόματα file1 και file2 Η εντολή touch, να χρησιμοποιηθεί για την δημιουργία νέων (κενών) αρχείων. Η εντολή touch file3.txt θα δημιουργήσει (στον τρέχον κατάλογο) το αρχείο με όνομα file3.txt 3. Να αλλάξετε το όνομα του αρχείου file1 σε test1 4. Να χρησιμοποιήσετε την εντολή ls για να ελέγξετε τα αποτελέσματα 5. Να δημιουργήσετε ένα νέο κατάλογο temp μέσα στον test01. 6. Να αντιγράψετε όλα τα αρχεία του test01 στον κατάλογο temp 7. Εκτελέστε την εντολή tree και κατανοήστε το αποτέλεσμά της. 8. Να διαγράψετε το (αρχικό) αρχείο file2 χρησιμοποιώντας την εντολή rm ri. Τι παρατηρείτε; 9. Να διαγράψετε τον κατάλογο temp με την εντολή rmdir. (ΥΠΟΔΕΙΞΗ : Να χρησιμοποιείτε την εντολή pwd για να ελέγχετε κάθε φορά τον κατάλογο στον οποίο βρίσκεστε) ΑΣΚΗΣΗ 4 1. Μέσα στο home directory σας (στον αετο) δημιουργείστε τον κατάλογο transport. 2. Δημιουργείστε τους εξής υποκαταλόγους (μέσα στον transport): transport/ -- cars/ -- ford/ -- honda/ -- accord `-- civic `-- renault -- planes/ -- airbus `-- learjet `-- trains/ Το / στο τέλος του ονόματος δείχνει ότι είναι κατάλογος. 3. Χρησιμοποιήστε την εντολή cd για να περιηγηθείτε σε αυτούς τους καταλόγους. 4. Χρησιμοποιήστε την εντολή ls για να δείτε τα περιεχόμενά τους. 5. Μεταβείτε στον κατάλογο cars (με την εντολή cd), και δείτε με την εντολή ls τα περιεχόμενα του καταλόγου planes.
6. Αντιγράψτε τον κατάλογο planes μέσα στον κατάλογο cars. Πως μπορείτε να το κάνετε με την εντολή cp 7. Μεταβείτε στον κατάλογο transport και δείτε με την εντολή tree το αποτέλεσμα. 8. Μεταβείτε στον κατάλογο Honda και προσπαθήστε να διαγράψετε τα directories. (current) και.. (parent) με την εντολή rm. Τι παρατηρείτε; ΑΣΚΗΣΗ 5 1. Εκτελέστε τις εντολές (στον αετο): (εάν δεν υλοποιήθηκε στο 1 ο εργαστήριο). cat /etc/passwd more /etc/passwd head -15 /etc/passwd tail -10 /etc/passwd cd /etc tail -10 passwd tail -10 /etc/mtools.conf tail n +10 /etc/mtools.conf ΑΣΚΗΣΗ 6 1. Να βρεθεί το αποτέλεσμα της εκτέλεσης (στον αετό) των παρακάτω εντολών : echo ~ echo ~/ echo ~asidirop echo ~klefturi echo $HOME echo ~studin echo ~root echo ~asidirop/tmp echo ~asidirop/denyparxei/fakelos cd ~asidirop/denyparxei/fakelos ls ~asidirop/denyparxei/fakelos echo ~asidirop/.. ls ~asidirop/.. Το $ΗΟΜΕ είναι μια μεταβλητή περιβάλλοντος η οποία δημιουργείται αυτόματα από το σύστημα και περιέχει την απόλυτη διαδρομή για το home directory του τρέχοντος χρήστη. Το σύμβολο ~ (ή ~/) είναι συντομογραφία για το $HOME Το σύμβολο ~ ακολουθούμενο από ένα string που δεν έχει πρώτο χαρακτήρα το / (πχ: ~abc/qwe/rtf ή ~abc), θα μας δώσει την απόλυτη διαδρομή για το home
directory του χρήστη με username abc (μέχρι το πρώτο / ή το τέλος του string). 2. Ποια/ες από τις παραπάνω εντολές έχει/ουν «περίεργο» αποτέλεσμα ΑΣΚΗΣΗ 7 Υποθέστε ότι το δικό σας home directory περιέχει τα directories alice, bob καθώς και τα αρχεία carol, eve, fred όπως φαίνονται στο παρακάτω σχήμα: 1. ποιο είναι το απόλυτο όνομα διαδρομής για το δικό σας home directory; 2. ποιο είναι το απόλυτο όνομα διαδρομής για τον παραπάνω κατάλογο alice; 3. να δημιουργήσετε την παραπάνω δομή καταλόγων (χρησιμοποιείστε την εντολή touch για τη δημιουργία των αρχείων, mkdir για την δημιουργία καταλόγων) 4. υποθέτοντας ότι ο τρέχων κατάλογος εργασίας (cwd) είναι ο bob, ποια από τα παρακάτω είναι αποδεκτά ονόματα διαδρομών για το αρχείο carol; Να δικαιολογήσετε την απάντησή σας. a.../alice/carol b. ~/alice/carol c../../alice/carol d. carol e../carol f../alice/carol g. ~alice/carol h...//alice/./carol 5. Ελέγξτε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας την εντολή stat. H εντολή stat, δέχεται ως ορίσματα 1 ή περισσότερες διαδρομές σε αρχεία ή καταλόγους, και εμφανίζει πληροφορίες για αυτά (όπως σε ποιον ανήκει, πότε τροποποιήθηκε τελευταία φορά κτλ.). Εάν στην εντολή stat δώσουμε ως όρισμα μια διαδρομή που δεν είναι έγκυρη, τότε (προφανώς) εμφανίζεται μήνυμα σφάλματος. 6. Μπορείτε να ελέγξετε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας (αντί την stat) την εντολή ls 7. Μπορείτε να ελέγξετε την ορθότητα των παραπάνω διαδρομών χρησιμοποιώντας (αντί την stat) την εντολή cd 8. Υποθέτοντας ότι ο τρέχων κατάλογος είναι ο bob, ποιες είναι οι εντολές για : a. μετακίνηση των carol και eve μέσα στον κατάλογο bob (με μια εντολή). b. μετακίνηση του bob (άρα και του fred) μέσα στον κατάλογο alice. c. αντιγραφή του fred μέσα στον κατάλογο alice με ένα νέο όνομα. 9. Υποθέτοντας ότι ο τρέχων κατάλογος είναι το δικό σας home directory
a. τι πρέπει να πληκτρολογήσετε για τη διαγραφή του directory bob b. να δώσετε μια εντολή για τη διαγραφή των alice, carol, και eve. ΑΣΚΗΣΗ 8 1. Εκτελέστε στον αετό την εντολή: vi mesg.txt Μπορείτε να τροποποιήσετε τα περιεχόμενα αυτού του αρχείου. (Διαβάστε παρακάτω για να δείτε τι πρέπει να αποθηκευσετε στο αρχείο). Ο vi έχει 2 κύριες καταστάσεις λειτουργίας: Command mode Insert mode. Με την έναρξη του vi βρισκόμαστε σε command mode. Στο command mode οποιοδήποτε πλήκτρο και να πατήσουμε αντιστοιχεί σε «Εντολή». Φανταστείτε τα shortcuts σε μια εφαρμογή όπως το word. Ενεργοποιούνται με το πλήκτρο Control. Πχ στο word Cntrl-S κάνει αποθήκευση του αρχείου. Το command mode του vi, είναι ΣΑΝ να έχουμε πατημένο το Cntrl και περιμένει να πατήσουμε και ακόμη ένα πλήκτρο για να εκτελέσει το αντίστοιχο shortcut. Όταν βρισκόμαστε σε insert mode, τότε ό,τι πληκτρολογούμε προστίθεται στο αρχείο (όπως σε έναν επεξεργαστή κειμένου τύπου notepad). Βασικές εντολές σε command mode: u undo. redo dd Delete current line (and copy into buffer) Ndd Delete next N lines (and copy into buffer) yy Copy current line into buffer Nyy Copy next N lines into buffer dw Delete current word (and copy into buffer) yw Copy current word into buffer D Delete until end of line (and copy into buffer) P, p Paste before or after x Delete current character cw Change current word (until ESC pressed) Ncw Change next N words (until ESC pressed) r Replace current character ~ Toggle upper/lower case of current character I,i,A,a Enter insert mode (until ESC pressed) (start of line, before cursor, after cursor, end of line) O,o New line and insert mode : Enter command line mode / Search mode
Υπάρχουν πάρα πολλές εξειδικευμένες εντολές σε command mode. Πρίν από κάθε εντολή μπορεί να προηγηθεί ένας αριθμός. Τότε η εντολή που ακολουθεί θα εκτελεστεί Ν φορές. Πχ: 15~ από τον κέρσορα και μετά θα μετατρέψει 15 χαρακτήρες από πεζούς σε κεφαλαίους και αντίστροφα. 5p θα κάνει 5 φορές paste αυτό που περιέχει ο buffer. Έχουν διαφορά κεφαλαία/πεζά αντιστοιχούν σε διαφορετικές εντολές, γι αυτό προσοχή στο caps lock και το shift. Καθώς ο χρήστης πληκτρολογεί εντολές, δεν βλέπει αυτά που πληκτρολογεί, αλλά θα δει το αποτέλεσμα όταν ολοκληρωθεί η πληκτρολόγηση της εντολής. Κάποιες εντολές είτε επειδή είναι περίπλοκες είτε επειδή είναι σημαντικές, δεν μπορούν να εκφραστούν σε command mode διότι χρειάζεται να τις «βλέπει» ο χρήστης καθώς τις πληκτρολογεί. Γι αυτό υπάρχει και το command line. Μπαίνουμε σε command line με τον χαρακτήρα «:». H ποιο σημαντική εντολή σε command line είναι η εντολή writeγια αποθήκευση του αρχείου. :w (θα αποθηκεύσει το αρχείο. Αν δεν έχει δοθεί όνομα στο αρχείο θα αποτύχει) :w filename (θα αποθηκεύσει το αρχείο με το όνομα που δίνεται save As) :q (έξοδος quit. Αν δεν έχει γίνει αποθήκευση θα αποτύχει) :wq (αποθήκευση και έξοδος) :εντολή! (εκτέλεσε την εντολή αγνοώντας τυχόν warning που θα προκύψει.) Εάν θέλουμε να βγούμε από τον vi χωρίς να αποθηκεύσουμε τις τελευταίες αλλαγές, Αν πατήσουμε :q θα μας εμφανίσει προειδοποίηση και δεν θα γίνει έξοδος. Με «:q!» θα γίνει έξοδος χωρίς προειδοποίηση. Από command mode πατώντας το πλήκτρο «/» μπαίνουμε σε search mode. Εδώ πρέπει να πληκτρολογήσουμε ένα string για αναζήτηση. Με την ολοκλήρωση της πληκτρολόγησης (πατώντας Enter) μεταφέρεται ο κέρσορας στην πρώτη εμφάνιση του string που αναζητήσαμε. Με την εντολή n μεταφερόμαστε στην επόμενη εμφάνιση. Με την εντολή «Ν» μεταφερόμαστε στην προηγούμενη εμφάνιση.
2. Συμπληρώστε το αρχείο με τα παρακάτω (απαντώντας στις ερωτήσεις): ΟΝΟΜΑ: USERNAME (aetos): ΗΜΕΡΟΜΗΝΙΑ: 1. Ποια είναι η εντολή με την οποία κάνετε login στον αετό 2. Ποια είναι η προτροπή που εμφανίζει το shell 3. Ποιος είναι ο διαχωριστής εντολών του shell 4. Όταν κάνετε login στο host aetos, σε ποιο κατάλογο/directory βρίσκεστε 5. Ποια είναι η γενική σύνταξη μιας εντολής 6. Πως ξέρουμε αν ένα όρισμα εντολής είναι option/flag, ή αν είναι όνομα αρχείου 7. Πως ξέρουμε αν μια ένα όρισμα εντολής είναι σύμπτυξη οptions ή είναι μόνο μια option 8. Πως βλέπουμε την επόμενη σελίδα του man 9. Πως βγαίνουμε από το man 10. Eπιλέξτε μια «ενδιαφέρουσα» οption για την εντολή ls και εξηγήστε τι κάνει (όλα αποδεκτά εκτός από -a, -all, -l ). 3. Αποθηκεύστε το αρχείο (ESC, :w). Βγείτε από τον vim (ESC, :q) και στείλτε το αρχείο με email εκτελώντας την εντολή: mail xyz abc -s '1η παράδοση' < mesg.txt Όπου xyz το username του καθηγητή σας (asidirop ή psarnik ή klefturi) και abc το δικό σας εξωτερικό email, πχ: giorgos@gmail.com. 4. Εκτελέστε την εντολή: vi Εισάγετε κάποιο κείμενο και αποθηκεύστε το με όνομα της αρεσκείας σας στο φάκελο /tmp. Σημείωση: η εντολή :w filename στο filename μπορεί να δεχθεί είτε σχετική είτε απόλυτη διαδρομή για ένα όνομα αρχείου.