Εντολές Διαχείρισης Αρχείων στο Λειτουργικό Σύστημα UNIX Τμήμα Τεχνολογίας Πληροφορικής ΤΕ ΤΕΙ Ηπείρου Διδάσκων: Δημήτριος Λιαροκάπης Διαφάνειες: Γρηγόριος Τζώρτζης Ακ. Έτος 2013-2014
Παράδειγμα Δένδρου Συστήματος Αρχείων Στα παραδείγματα που ακολουθούν υποθέτουμε την παρακάτω δενδρική δομή Αρχείο Κατάλογος Τρέχων Κατάλογος
Η Εντολή cat cat <αρχείο1> <αρχείον> Εμφανίζει στην οθόνη συνενωμένα τα περιεχόμενα των αρχείων π.χ. job.txt protocol apple orange banana cat../job.txt /etc/ppp/protocol cat /etc/ppp/protocol../job.txt apple orange banana banana apple orange
Δημιουργία Αρχείων cat > <αρχείο> Η εντολή cat σε συνδυασμό με την ανακατεύθυνση εξόδου (>) δημιουργεί νέα αρχεία Το αρχείο δημιουργείται στον κατάλογο που ορίζει το όνομα διαδρομής <αρχείο>, στο τέλος του οποίου τοποθετούμε το όνομα του νέου αρχείου Όταν εκτελέσουμε την παραπάνω εντολή, ο υπολογιστής αναμένει να εισάγουμε περιεχόμενα στο αρχείο Για να ολοκληρώσουμε την εισαγωγή, αφήνουμε μία κενή γραμμή και πληκτρολογούμε ctrl+d Αν τυχόν το αρχείο προϋπάρχει, τότε καταστρέφεται και τη θέση του παίρνει το καινούριο
Δημιουργία Αρχείων - Παράδειγμα cat > /etc/ppp/work/new Πληκτρολογούμε: my name is john ctrl+d new my name is john
Δημιουργία Αρχείων cat >> <αρχείο> Επιτελεί ακριβώς την ίδια λειτουργία με την cat > <αρχείο>, με μόνη διαφορά το ότι αν το αρχείο προϋπάρχει δεν καταστρέφεται Το κείμενο που πληκτρολογούμε προστίθεται στο τέλος του υπάρχοντος αρχείου
Η Εντολή tail tail <αρχείο> Εμφανίζει στην οθόνη τις 10 τελευταίες γραμμές του αρχείου. Αν το αρχείο έχει λιγότερες από 10 γραμμές, τότε εμφανίζονται όλες tail -# <αρχείο> Εμφανίζει στην οθόνη τις # (όπου # ένας αριθμός) τελευταίες γραμμές του αρχείου. Αν το αρχείο έχει λιγότερες από # γραμμές, τότε εμφανίζονται όλες tail +# <αρχείο> Εμφανίζει στην οθόνη όλες τις γραμμές του αρχείου, εκτός των #-1 πρώτων. Αν το αρχείο έχει λιγότερες από # γραμμές, τότε δεν εμφανίζεται καμία Προσοχή: Η # γραμμή εμφανίζεται!
Η Εντολή tail tail -#c <αρχείο> Εμφανίζει στην οθόνη τους # (όπου # ένας αριθμός) τελευταίους χαρακτήρες του αρχείου. Αν το αρχείο έχει λιγότερους από # χαρακτήρες, τότε εμφανίζονται όλοι Προσοχή: Ως χαρακτήρες λογίζονται πέρα των αλφαριθμητικών, τα κενά, ο χαρακτήρας αλλαγής γραμμής, ο χαρακτήρας τέλους αρχείου κ.λ.π. Ουσιαστικά, όλοι οι χαρακτήρες, εκτυπώσιμοι ή μη tail +#c <αρχείο> Εμφανίζει στην οθόνη όλους τους χαρακτήρες του αρχείου εκτός των #-1 πρώτων. Αν το αρχείο έχει λιγότερους από # χαρακτήρες, τότε δεν εμφανίζεται κανένας Προσοχή: Ο # χαρακτήρας εμφανίζεται!
Η Εντολή tail - Παραδείγματα job.txt apple orange best is apricot tail -2../job.txt Το αρχείο με τους μη εκτυπώσιμους χαρακτήρες <nl>=new line best is<nl> apricot<nl> job.txt apple<nl> orange<nl> best is<nl> apricot<nl> tail +2../job.txt orange<nl> best is<nl> apricot<nl> tail +5../job.txt Δεν τυπώνεται τίποτα, καθώς το αρχείο έχει λιγότερες από 5 γραμμές
Η Εντολή tail - Παραδείγματα job.txt apple orange best is apricot Το αρχείο με τους μη εκτυπώσιμους χαρακτήρες <nl>=new line job.txt apple<nl> orange<nl> best is<nl> apricot<nl> tail -2c../job.txt tail +6c../job.txt tail -12c../job.txt t<nl> <nl> orange<nl> best is<nl> apricot<nl> is<nl> apricot<nl>
Η Εντολή head head <αρχείο> Εμφανίζει στην οθόνη τις 10 πρώτες γραμμές του αρχείου. Αν το αρχείο έχει λιγότερες από 10 γραμμές, τότε εμφανίζονται όλες head -# <αρχείο> Εμφανίζει στην οθόνη τις # (όπου # ένας αριθμός) πρώτες γραμμές του αρχείου. Αν το αρχείο έχει λιγότερες από # γραμμές, τότε εμφανίζονται όλες head -#c <αρχείο> Εμφανίζει στην οθόνη τους # (όπου # ένας αριθμός) πρώτους χαρακτήρες του αρχείου. Αν το αρχείο έχει λιγότερους από # χαρακτήρες, τότε εμφανίζονται όλοι Προσοχή: Ως χαρακτήρες λογίζονται πέρα των αλφαριθμητικών, τα κενά, ο χαρακτήρας αλλαγής γραμμής, ο χαρακτήρας τέλους αρχείου κ.λ.π. Ουσιαστικά, όλοι οι χαρακτήρες, εκτυπώσιμοι ή μη
Η Εντολή head - Παραδείγματα job.txt apple orange best is apricot Το αρχείο με τους μη εκτυπώσιμους χαρακτήρες <nl>=new line head -2../job.txt apple<nl> orange<nl> job.txt apple<nl> orange<nl> best is<nl> apricot<nl> head -7c../job.txt head -5../job.txt apple<nl> o apple<nl> orange<nl> best is<nl> apricot<nl> Τυπώνει όλες τις γραμμές, καθώς το αρχείο έχει λιγότερες από 5
Η Εντολή wc wc <αρχείο> Εμφανίζει στην οθόνη το πλήθος των γραμμών, των λέξεων και των χαρακτήρων του αρχείου Προσοχή: Ως χαρακτήρες λογίζονται πέρα των αλφαριθμητικών, τα κενά, ο χαρακτήρας αλλαγής γραμμής, ο χαρακτήρας τέλους αρχείου κ.λ.π. Ουσιαστικά, όλοι οι χαρακτήρες, εκτυπώσιμοι ή μη Προσοχή: Ως λέξη νοούνται διαδοχικοί χαρακτήρες που χωρίζονται από τους υπόλοιπους με ένα χαρακτήρα λευκού διαστήματος (white-space character) Χαρακτήρες λευκού διαστήματος είναι οι: κενό, tab, χαρακτήρας αλλαγής γραμμής κ.α.
Η Εντολή wc wc l <αρχείο> Εμφανίζει στην οθόνη το πλήθος των γραμμών του αρχείου wc w <αρχείο> Εμφανίζει στην οθόνη το πλήθος των λέξεων του αρχείου wc c <αρχείο> Εμφανίζει στην οθόνη το πλήθος των χαρακτήρων του αρχείου Οι επιλογές -l, -w, -c μπορούν να συνδυαστούν μεταξύ τους και το αποτέλεσμα είναι ο συνδυασμός των επιμέρους λειτουργιών
Η Εντολή wc - Παραδείγματα sources.c fw~2 w23 $wet -v Το αρχείο με τους μη εκτυπώσιμους χαρακτήρες <nl>=new line sources.c fw~2 w23<nl> $wet v<nl> wc /etc/apt/sources.c Πλήθος γραμμών wc -w /etc/apt/sources.c wc -lc /etc/apt/sources.c Πλήθος γραμμών 2 4 17 Πλήθος λέξεων 4 2 17 Πλήθος χαρακτήρων Πλήθος λέξεων Πλήθος χαρακτήρων
Η Εντολή sort sort <αρχείο> Εμφανίζει στην οθόνη λεξικογραφικά ταξινομημένες κατά αύξουσα σειρά τις γραμμές του αρχείου Αν δύο γραμμές ξεκινούν με τον ίδιο χαρακτήρα, τότε η σχετική τους διάταξη καθορίζεται με βάση τον δεύτερο κ.ο.κ Η διάταξη των χαρακτήρων καθορίζεται από την κωδικοποίηση που χρησιμοποιείται, π.χ. ASCII sort r <αρχείο> Επιτελεί την ίδια λειτουργία με την sort <αρχείο>, με μόνη διαφορά το ότι η διάταξη των γραμμών είναι φθίνουσα
Ο Κώδικας ASCII Αποτελείται από 128 χαρακτήρες Οι χαρακτήρες 0-31 και 127 είναι μη-εκτυπώσιμοι Η διάταξη των χαρακτήρων ορίζεται με βάση την δεκαδική τους κωδικοποίηση Συνεπώς, οι αριθμοί 0-9 προηγούνται των κεφαλαίων γραμμάτων A-Z, τα οποία προηγούνται των μικρών γραμμάτων a-z Σε όλες τις προηγούμενες εντολές που μελετήσαμε θεωρούμε κωδικοποίηση ASCII
Η Εντολή sort - Παραδείγματα protocol [ hello world] 52A Anna war sort /etc/ppp/protocol Η κωδικοποίηση κατά ASCII που αντιστοιχεί στους πρώτους χαρακτήρες των γραμμών είναι: [ 91, w 119, 5 53, A 65. Αρα «5 < A < [ < w». Η 2 η και η 5 η γραμμή ξεκινούν με τον ίδιο χαρακτήρα, συνεπώς διατάσσονται μεταξύ τους με βάση τον δεύτερο, όπου o 111, a 97. Άρα «a < o». 52A Anna [ hello war world] sort r /etc/ppp/protocol world] war [ hello Anna 52A
Η Εντολή ln ln s <αρχείο> <κατάλογος> Δημιουργεί σύνδεσμο (συντόμευση) για το αρχείο στον κατάλογο που ορίζουμε, με όνομα συνδέσμου ίδιο με αυτό του αρχείου (ο κατάλογος πρέπει να υπάρχει στο σύστημα) Ο σύνδεσμος είναι μία ειδική μορφή αρχείου που ως πληροφορία περιέχει τη θέση του αρχείου στο σύστημα Συνεπώς, μπορούμε να προσβαίνουμε το αρχείο και μέσω του συνδέσμου Προαιρετικά, μπορούμε να δώσουμε διαφορετικό όνομα στο σύνδεσμο από αυτό του αρχείου Απλώς παραθέτουμε στο τέλος του ονόματος διαδρομής του καταλόγου το νέο όνομα Ο σύνδεσμος δεν είναι αντίγραφο του αρχείου, απλώς «δείχνει» προς το αρχείο
Η Εντολή ln ln -s <αρχείο1> <αρχείον> <κατάλογος> Δημιουργεί συνδέσμους για τα Ν αρχεία στον κατάλογο (που ήδη υπάρχει στο σύστημα) Οι σύνδεσμοι φέρουν αναγκαστικά τα ίδια ονόματα με τα αρχεία στα οποία «δείχνουν» π.χ. ln -s /home/tele1/photos/sky.bmp /home/tele1/job.txt /etc/ppp/work
Παρατηρήσεις για την Εντολή ln Εάν εκτελέσουμε την εντολή cat σε ένα σύνδεσμο, τότε θα δούμε τα περιεχόμενα του αρχείου που αυτός «δείχνει» Αν εκτελέσουμε cp σε ένα σύνδεσμο, αντιγράφεται το αρχείο που δείχνει, όχι ο σύνδεσμος Αν εκτελέσουμε rm στο σύνδεσμο τότε αυτός διαγράφεται, ενώ το αρχείο που «δείχνει» όχι Αν μετακινήσουμε ή διαγράψουμε το αρχείο που «δείχνει» ένας σύνδεσμος, τότε αυτός είναι πλέον άχρηστος Στην έξοδο που παράγει η εντολή ls l ο σύνδεσμος ξεχωρίζει από το χαρακτήρα l στην πρώτη θέση (όπως ο κατάλογος από το χαρακτήρα d)
Παρατήρηση για την επιλογή s της εντολής ln Στην εντολή ln όταν χρησιμοποιείται η επιλογή -s δημιουργείται ένας ονομαστικός (symbolic / soft) σύνδεσμος, ο οποίος στην ουσία είναι ένα ειδικό αρχείο που περιέχει το όνομα διαδρομής (μονοπάτι) προς το αρχείο που δείχνει. Για να δουλέψει ο σύνδεσμος σωστά θα πρέπει το μονοπάτι που θα χρησιμοποιηθεί να είναι σωστό ως προς τον κατάλογο στον οποίο θα τοποθετηθεί ο σύνδεσμος. Αν χρησιμοποιηθεί απόλυτο μονοπάτι για το αρχείο στο οποίο θα δείχνει ο σύνδεσμος (δηλ. πρώτο όρισμα της εντολής) το μονοπάτι αυτό θα είναι πάντα σωστό. Αν χρησιμοποιηθεί σχετικό μονοπάτι, το μονοπάτι θα πρέπει να είναι σχετικό ως προς τον κατάλογο στον οποίο θα δημιουργηθεί ο σύνδεσμος (και όχι ως προς τον τρέχοντα κατάλογο την στιγμή εκτέλεσης της εντολής) εκτός εάν και οι δύο κατάλογοι συμπίπτουν.
Η Εντολή ln - Παράδειγμα protocol Hello world Θέλουμε να δημιουργήσουμε σύνδεσμο με όνομα p.link, για το αρχείο protocol στον κατάλογο work ln s /etc/ppp/protocol /etc/ppp/work/p.link cat /etc/ppp/work/p.link ls l /etc/ppp/work/p.link Hello world lrwxrwxrwx 1 tele1 teiep 5 May 4 2001 p.link->protocol Το l δηλώνει ότι πρόκειται για σύνδεσμο