Καλωσορίσατε στο μάθημα των Συστημάτων Υπολογιστών. Θα δώσουμε ιδιαίτερη βαρύτητα στο λειτουργικό σύστημα Linux και την γραμμή εντολών.
Η γραμμή εντολών ή αλλιώς κέλυφος (shell) μας επιτρέπει να δώσουμε εντολές, το σύστημα να τις εκτελέσει και να μας επιστρέψει το αποτέλεσμα. Οτιδήποτε γράφουμε και ξεκινάει από τον χαρακτήρα #
αποτελεί σχόλιο και δεν εκτελείται από το σύστημα.
Ας δώσουμε την πρώτη μας εντολή, ονομάζεται clear
και καθαρίζει την οθόνη.
stud@vm2:~$ clear
Η προτροπή (prompt) της γραμμής εντολών αποτελεί ένδειξη αναμονής του συστήματος για την εισαγωγή μιας εντολής.
Η προτροπή έχει συνήθως την παρακάτω μορφή:
<username>@<hostname>:<~>$
<username>
είναι το όνομα του χρήστη
<hostname>
είναι το όνομα του υπολογιστή που συνδεθήκαμε
<~>
είναι το σημείο του σκληρού δίσκου που βρισκόμαστε
(ο χαρακτήρας ~
συμβολίζει τον προσωπικό μας κατάλογο, δηλαδή το σημείο του σκληρού δίσκου που μπορούμε να αποθηκεύσουμε τα προσωπικά μας αρχεία).
Η προτροπή καταλήγει στον χαρακτήρα $
αν είμαστε απλοί χρήστες ή στον χαρακτήρα #
αν είμαστε o διαχειριστής του συστήματος.
Ας μάθουμε μια ακόμα εντολή, ονομάζεται ls και εμφανίζει τα αρχεία του τρέχοντος καταλόγου.
stud@vm2:~$ ls
file1 file2 file3
Δηλαδή, ο προσωπικός μας κατάλογος εμπεριέχει τρια αρχεία: το file1, το file2 και το file3.
Η γενική σύνταξη μιας εντολής που αναγνωρίζει το κέλυφος είναι:
όνομα_εντολής ορίσματα
Παράδειγμα:
ls -a -l
όπου το όνομα εντολής είναι η ls
και τα ορίσματα είναι τα -a
και -l
.
Τα ορίσματα των εντολών του κελύφους είναι αντίστοιχα με τα ορίσματα των συναρτήσεων σε μια γλώσσα προγραμματισμού. Δηλαδή δίνουν επιπλέον οδηγίες στην εντολή για το πως να προσαρμόσει την εκτέλεση της, ώστε ο χρήστης να έχει το επιθυμητό αποτέλεσμα.
Ανάλογα με την εντολή, υπάρχουν υποχρεωτικά ή προαιρετικά ορίσματα. Δηλαδή, η εντολή επιστρέφει λάθος, εαν δεν οριστούν τουλάχιστον τα υποχρεωτικά ορίσματα της.
Τα ορίσματα μπορούν να αντιστοιχούν σε ονόματα αρχείων ή ενεργοποίηση λειτουργιών. Τα τελευταία ονομάζονται σημαίες (flags) ή επιλογές (options).
Για παράδειγμα, η εντολή cat
εμφανίζει το περιεχόμενο ενός αρχείου. Δίνοντας την παρακάτω εντολή:
stud@vm2:~$ cat file1
αυτό είναι το περιεχόμενο του αρχείου 1.
εμφανίζεται το περιεχόμενο του αρχείου file1
.
Δηλαδή, το κέλυφος εκτελεί την εντολή cat
με όρισμα το όνομα αρχείου file1
.
Στην εντολή, μπορούμε να δώσουμε σαν όρισμα πολλά όνοματα αρχείων, π.χ.:
stud@vm2:~$ cat file1 file2 file3
αυτό είναι το περιεχόμενο του αρχείου 1.
αυτό είναι το περιεχόμενο του αρχείου 2.
αυτό είναι το περιεχόμενο του αρχείου 3.
Δηλαδή, εμφανίστηκε το περιεχόμενο των τριών αρχείων στην οθόνη.
Στην εντολή cat
μπορούμε να δώσουμε και ορίσματα τύπου σημαίας, όπως το όρισμα -n που εμφανίζει αύξοντα αριθμό πριν από κάθε γραμμή:
stud@vm2:~$ cat -n file1
1 αυτό είναι το περιεχόμενο του αρχείου 1.
2
(η δεύτερη γραμμή του αρχείου είναι κενή).
Μπορούμε να δούμε περισσότερες πληροφορίες για τη σύνταξη μιας εντολής, αξιοποιώντας την εντολή man
. Η εντολή man
εμφανίζει το εγχειρίδιο χρήσης μιας εντολής. Η σύνταξη της είναι man όνομα_εντολής
.
Δηλαδή, για να εμφανίσουμε το εγχειρίδιο της εντολής cat
:
stud@vm2:~$ man cat
CAT(1) User Commands CAT(1)
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]... [FILE]...
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, --show-all
equivalent to -vET
-b, --number-nonblank
number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends
display $ at end of each line
-n, --number
number all output lines
-s, --squeeze-blank
suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs
display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version
output version information and exit
EXAMPLES
cat f - g
Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
AUTHOR
Written by Torbjorn Granlund and Richard M. Stallman.
REPORTING BUGS
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report cat translation bugs to <http://translationproject.org/team/>
COPYRIGHT
Copyright © 2016 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
tac(1)
Full documentation at: <http://www.gnu.org/software/coreutils/cat>
or available locally via: info '(coreutils) cat invocation'
GNU coreutils 8.25 February 2017 CAT(1)
Μπορούμε να δούμε όλες τις σελίδες της εντολής man
με τη βοήθεια του πλήκτρου space
. Η εντολή man
τερματίζεται πληκτρολογώντας τον χαρακτήρα q
.
Τα συνηθισμένα τμήματα ενός εγχειριδίου χρήσης είναι τα:
- NAME: όνομα και σύντομη περιγραφή της εντολής.
- SYNOPSIS: η σύνταξη της εντολής.
- DESCRIPTION: τα ορίσματα που μπορεί να δεχθεί η εντολή.
- EXAMPLES: σύντομα παραδείγματα.
- AUTHOR: οι δημιουργοί της εντολής.
- COPYRIGHT: άδειες χρήσης.
- SEE ALSO: επιπρόσθετες πηγές πληροφοριών για την εντολή.
Ας δούμε τη σύνοψη της εντολής cat:
cat [OPTION]... [FILE]...
Τα ορίσματα σε ένα εγχειρίδιο της εντολής man έχουν την παρακάτω μορφή:
- OPTION: στο σημείο αυτό τοποθετούμε όρισμα τύπου σημαίας.
- []: δηλώνουν προαιρετικό όρισμα, δηλαδή η εντολή μπορεί να εκτελεστεί και με κανένα όρισμα.
- ...: μπορούμε να δώσουμε πολλά ορίσματα του συγκεκριμένου τύπου.
Δηλαδή, η εντολή cat
δέχεται από κανένα μέχρι πολλά ορίσματα, όπως και από κανένα μέχρι πολλά αρχεία.
Για παράδειγμα, η παρακάτω εντολή:
stud@vm2:~$ cat -n -E file1 file2
1 αυτό είναι το περιεχόμενο του αρχείου 1.$
2 $
3 αυτό είναι το περιεχόμενο του αρχείου 2.$
4 $
Χρησιμοποιεί 4 ορίσματα, δύο τύπου σημαίας και δύο ονόματα αρχείων.
Παρατηρούμε στο εγχειρίδιο χρήσης ότι τα ορίσματα τύπου σημαίας μπορούν να εκφραστούν με 2 τρόπους. Με τη βοήθεια μιας παύλας και ένος χαρακτήρα ή διπλής παύλας και μιας ή πολλών λέξεων που χωρίζονται μεταξύ τους από μονές παύλες.
Δηλαδή, οι παρακάτω εντολές είναι ισοδύναμες:
stud@vm2:~$ cat -n file1
1 αυτό είναι το περιεχόμενο του αρχείου 1.
2
stud@vm2:~$ cat --number file1
1 αυτό είναι το περιεχόμενο του αρχείου 1.
2
Σημειώνουμε ότι στην περίπτωση πολλαπλών παραμέτρων που ορίζονται με τον πρώτο τρόπο (μονή παύλα και μονός χαρακτήρας), μπορούμε να εκφράσουμε όλες τις παραμέτρους με μια παύλα.
Δηλαδή, οι εντολές cat -n -E file1
και cat -nE file1
είναι ισοδύναμες.