Η δομή των αρχείων και καταλόγων του Linux είναι αρκετά παρόμοια με αυτήν του DOSWin. Τα αρχεία έχουν ονόματα που υπόκεινται σε ορισμένους κανόνες, φυλάσσονται σε καταλόγους, κάποια είναι εκτελέσιμα και μεταξύ των εκτελεσίμων κάποια έχουν διακόπτες (switches) ως εντολές. Επιπλέον, μπορείτε να χρησιμοποιείτε χαρακτήρες μπαλαντές (wildcard), ανακατεύθυνσης (redirection) και piping. Υπάρχουν μόνο κάποιες μικρές διαφορές:
NOTENOUG.TXT
. Στο Linux κάνουμε καλύτερα πράγματα. Αν εγκαταστήσατε το Linux χρησιμοποιώντας ένα σύστημα αρχείων (file system) όπως το ext2 ή το umsdos, μπορείτε να χρησιμοποιείτε μακρύτερα ονόματα (έως 255 χαρακτήρες), και με περισσότερες της μίας τελείες: παραδείγματος χάριν, Ayto_einai.ena.POLY_makry.onomaarxeioy
. Σημειώστε ότι χρησιμοποίησα τόσο κεφαλαίους όσο και μικρούς χαρακτήρες: Άλλωστε...
FILENAME.tar.gz
και filename.tar.gz
είναι δύο διαφορετικά αρχεία. Το ls
είναι μια εντολή, το LS
είναι ένα λάθος·
$ # h parakatw entolh ftiaxnei enan katalogo poy legetai "My old files"
$ mkdir "My old files"
$ ls
My old files bin tmp
Επίσης, κάποιοι χαρακτήρες καλό είναι να μη χρησιμοποιούνται. Π.χ.:
!*$&#
·
*
' στο τέλος του ονόματός τους, όταν εκτελείτε την εντολή ls -F
. Για παράδειγμα:
$ ls -F
I_am_a_dir/ cindy.jpg cjpg* letter_to_Joe my_1st_script* old~
Τα αρχεία cjpg*
και my_1st_script*
είναι εκτελέσιμα, δηλαδή «προγράμματα» . Στο DOS, τα αρχεία backup λήγουν σε .BAK, ενώ στο Linux λήγουν με μια περισπωμένη `~
'. Επίσης, ένα αρχείο το όνομα του οποίου ξεκινά με τελεία θεωρείται κρυφό. Παράδειγμα: το αρχείο .I.am.a.hidden.file
δε θα φανεί μετά την εντολή ls
·
/switch
, ενώ στο Linux δίνονται με -switch
ή --switch
. Παράδειγμα: το dir /s
θα γίνει ls -R
. Σημειώστε ότι πολλά προγράμματα του DOS, όπως το PKZIP
ή το ARJ
, χρησιμοποιούν διακόπτες τύπου UNIX.
Μπορείτε τώρα να μεταφερθείτε στην ενότητα Μετάφραση εντολών από το DOS στο Linux, στη θέση σας όμως θα διάβαζα κι άλλο.
Στο UNIX υπάρχει ένα είδος αρχείων που δεν υπάρχει στο DOS: ο συμβολικός δεσμός (symbolic link). Αυτό μπορεί να θεωρηθεί ως δείκτης προς ένα αρχείο ή έναν κατάλογο, και μπορεί να χρησιμοποιείται αντί για το δεικνυόμενο· είναι παρόμοιο με τις συντομεύσεις των Windows. Παραδείγματα συμβολικών δεσμών είναι το /usr/X11
, που δείχνει στο /usr/X11R6
· το /dev/modem
, που δείχνει είτε στο /dev/ttyS0
ή στο /dev/ttyS1
.
Για να φτιάξετε έναν συμβολικό δεσμό:
$ ln -s <arxeio_h_katalogos> <onoma_desmou>
Παράδειγμα:
$ ln -s /usr/doc/g77/DOC g77manual.txt
Τώρα μπορείτε να αναφέρεστε στο g77manual.txt
αντί για το /usr/doc/g77/DOC
.
Οι δεσμοί φαίνονται έτσι στην έξοδο του ls
:
$ ls -F
g77manual.txt@
$ ls -l
(diafora_pragmata...) g77manual.txt -> /usr/doc/g77/DOC
Τα αρχεία και οι κατάλογοι στο DOS έχουν τα ακόλουθα χαρακτηριστικά (attributes): A (archive, αρχεία), H (hidden, κρυφά), R (read-only, μόνο για ανάγνωση), and S (system, συστήματος). Μόνον τα H και τα R έχουν νόημα στο Linux: τα κρυφά αρχεία ξεκινούν με μία τελεία, όσο για το attribute R, διαβάστε κι άλλο.
Στο UNIX ένα αρχείο έχει «δικαιώματα» (permissions) και έναν ιδιοκτήτη (owner), ο οποίος με τη σειρά του ανήκει σε μία «ομάδα» (group). Δείτε το παράδειγμα:
$ ls -l /bin/ls
-rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls*
Το πρώτο πεδίο περιέχει τα δικαιώματα του αρχείου /bin/ls
, που ανήκει στον root, ομάδα bin. Αφήνοντας τις υπόλοιπες πληροφορίες που δίνει η εντολή, στεκόμαστε στη σημασία του -rwxr-xr-x
από αριστερά προς τα δεξιά:
-
είναι το είδος του αρχείου (-
= κανονικό αρχείο, d
= κατάλογος,
l
= δεσμός, κλπ)` rwx
είναι τα δικαιώματα του ιδιοκτήτη του αρχείου (owner) και είναι(read=ανάγνωση, write=εγγραφή, execute=εκτέλεση)· r-x
είναι τα δικαιώματα της ομάδας (group) του ιδιοκτήτη (owner) του αρχείου και είναι (read=ανάγνωση, execute=εκτέλεση)· (Δε θα καλύψω την έννοια της ομάδας, θεωρώ ότι μπορείτε να κάνετε και χωρίς αυτήν, εφ' όσον είστε αρχάριοι ;-) και r-x
είναι τα δικαιώματα για όλους τους άλλους χρήστες (read=ανάγνωση, execute=εκτέλεση).
Ο κατάλογος /bin
έχει επίσης δικαιώματα: δείτε στην ενότητα
Directories Permissions για περαιτέρω πληροφορίες. Γι' αυτό δεν μπορείτε να διαγράψετε το αρχείο /bin/ls
παρά μόνο αν είστε root: δεν έχετε το δικαίωμα (permission) να το κάνετε. Για να αλλάξετε τα δικαιώματα ενός αρχείου, η εντολή είναι:
$ chmod <whoXperm> <file>
όπου who είναι u
(user=χρήστης, είναι ο ιδιοκτήτης), g
(group=ομάδα), o
(other=άλλοι), X είναι είτε +
ή -
, perm είναι r
(read=ανάγνωση), w
(write=εγγραφή), or x
(execute=εκτέλεση). Κάποια παραδείγματα της χρήσης της chmod
είναι τα ακόλουθα:
$ chmod +x file
αυτό θέτει το δικαίωμα εκτέλεσης για το αρχείο.
$ chmod go-rw file
αυτό αφαιρεί τα δικαιώματα ανάγνωσης και εγγραφής για όλους, πλην του ιδιοκτήτη.
$ chmod ugo+rwx file
αυτό δίνει σε όλους (χρήστη, ομάδα, άλλους) δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης.
# chmod +s file
αυτό φτιάχνει ένα αρχείο «setuid» ή «suid» --- ένα αρχείο που μπορούν όλοι να εκτελέσουν, με τα δικαιώματα του ιδιοκτήτη του. Θα συναντήσετε αρκετά suid αρχεία του root· αυτά είναι συνήθως σημαντικά αρχεία του συστήματος, όπως ο X server.
Ένας πιο σύντομος τρόπος για να αναφερθεί κανείς στα δικαιώματα είναι με αριθμητικά ψηφία: Το rwxr-xr-x
μπορεί να εκφραστεί ως 755 (κάθε γράμμα αντιστοιχεί σε έναν αριθμό: το ---
είναι 0, το --x
είναι 1, το -w-
είναι 2, το -wx
είναι 3...).
Δείχνει δύσκολο, αλλά με λίγη εξάσκηση θα καταλάβετε την έννοια. Ο root, όντας ο «υπερχρήστης» μπορεί να αλλάξει τα δικαιώματα των αρχείων όλων των χρηστών. RMP.
Αριστερά βρίσκονται οι εντολές του DOS· δεξιά οι αντίστοιχες για το Linux.
ATTRIB: chmod
COPY: cp
DEL: rm
MOVE: mv
REN: mv
TYPE: more, less, cat
Τελεστές ανακατεύθυνσης (redirection) και plumbing: < > >> |
Χαρακτήρες Μπαλαντέρ: * ?
nul: /dev/null
prn, lpt1: /dev/lp0 ή /dev/lp1; lpr
DOS Linux
---------------------------------------------------------------------
C:\NIKOS>ATTRIB +R FILE.TXT $ chmod 400 file.txt
C:\NIKOS>COPY JOE.TXT JOE.DOC $ cp joe.txt joe.doc
C:\NIKOS>COPY *.* TOTAL $ cat * > total
C:\NIKOS>COPY FRACTALS.DOC PRN $ lpr fractals.doc
C:\NIKOS>DEL TEMP $ rm temp
C:\NIKOS>DEL *.BAK $ rm *~
C:\NIKOS>MOVE PAPER.TXT TMP\ $ mv paper.txt tmp/
C:\NIKOS>REN PAPER.TXT PAPER.ASC $ mv paper.txt paper.asc
C:\NIKOS>PRINT LETTER.TXT $ lpr letter.txt
C:\NIKOS>TYPE LETTER.TXT $ more letter.txt
C:\NIKOS>TYPE LETTER.TXT $ less letter.txt
C:\NIKOS>TYPE LETTER.TXT > NUL $ cat letter.txt > /dev/null
n/a $ more *.txt *.asc
n/a $ cat section*.txt | less
Σημειώσεις:
*
είναι εξυπνότερο στο Linux: το *
σημαίνει όλα τα
αρχεία εκτός από τα κρυφά· το .*
σημαίνει όλα τα κρυφά αρχεία (και
επίσης τον τρέχοντα κατάλογο `.
' και τον προηγούμενο `..
':
προσοχή!)· το *.*
σημαίνει μόνο τα αρχεία που έχουν ένα `.
' στη
μέση με μια τελεία· το p*r
σημαίνει «peter» και «piper»· το *c*
σημαίνει «picked» και «peck»·
more
, πιέζετε <SPACE> για να
διαβάσετε το αρχείο και «q» για έξοδο. Το less
έχει περισσότερες
λειτουργίες και επιτρέπει τη χρήση των βελών·
UNDELETE
, γι' αυτό σκεφτείτε το καλά προτού
σβήσετε οτιδήποτε·
< > >>
του DOS, το Linux έχει
2>
για να ανακατευθύνει μηνύματα λάθους (stderr)· επιπλέον, το
2>&1
ανακατευθύνει από το stderr στο stdout, ενώ το
1>&2
ανακατευθύνει από το stdout στο stderr·
[]
. Χρήση: το [abc]*
σημαίνει όλα τα αρχεία που ξεκινούν με a, b, c· το *[I-N1-3]
σημαίνει
τα αρχεία που τελειώνουν σε I, J, K, L, M, N, 1, 2, 3·
lpr
<file> τυπώνει μία σελίδα στο παρασκήνιο. Για να ελέγξετε την
κατάσταση της αλληλουχίας εκτύπωσης (print queue) χρησιμοποιείστε το lpq
· για να
αφαιρέσετε ένα αρχείο από την αλληλουχία εκτύπωσης χρησιμοποιείστε lprm
·
RENAME
του DOS· δηλαδή, το mv *.xxx *.yyy
δε θα δουλέψει.
Μια εντολή παρόμοια με την REN είναι διαθέσιμη στο
ftp://sunsite.unc.edu/pub/Linux/utils/file·
cp -i
και mv -i
για να ειδοποιηθείτε όταν ένα αρχείο
πρόκειται να επικαλυφθεί.
Για να τρέξετε ένα πρόγραμμα πληκτρολογείστε το όνομά του όπως θα κάνατε και στο DOS. Αν ο
κατάλογος (Ενότητα
Χρήση Καταλόγων) που είναι εγκατεστημένο
το πρόγραμμα περιέχεται στο the PATH (Section
Αρχεία Αρχικοποίησης (Initialisation) Συστήματος), το πρόγραμμα θα ξεκινήσει.
Εξαίρεση: Εν αντιθέσει προς το DOS, στο Linux ένα πρόγραμμα που περιέχεται στον τρέχοντα
κατάλογο δε θα τρέξει, εκτός αν ο κατάλογος περιέχεται στο PATH. Λύση: αν το πρόγραμμα είναι prog
πληκτρολογείστε ./prog
.
Η συνήθης γραμμή εργαλείων είναι κάπως έτσι:
$ command [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< input] [> output]
όπου -s1
, ..., -sn
είναι οι διακόπτες της εντολής, par1
,
..., parn
είναι οι παράμετροι του προγράμματος. Μπορείτε να χρησιμοποιήσετε
περισσότερες της μίας εντολές στην γραμμή εντολών:
$ command1 ; command2 ; ... ; commandn
Αυτά έχω να πω για το τρέξιμο προγραμμάτων, είναι όμως πολύ απλό να πούμε κάτι περισσότερο. Ένας από τους βασικούς λόγους για τη χρήση του Linux είναι το γεγονός ότι πρόκειται για ένα πολυδιεργασιακό Λ.Σ., δηλαδή ότι μπορεί να τρέχει περισσότερα του ενός προγράμματα (εφ' εξής διαδικασίες (processes) ταυτοχρόνως). Μπορείτε να ξεκινάτε διαδικασίες στο περιθώριο (background) συνεχίζοντας να εργάζεστε όπως πριν. Επιπλέον, στο Linux μπορείτε να έχετε πολλές συνεδρίες: είναι σαν να έχετε πολλούς υπολογιστές να λειτουργούν ταυτοχρόνως!
su - <loginname>
. Παράδειγμα: su - root
. Αυτό είναι
χρήσιμο, για παράδειγμα, αν θέλετε να εκτελέσετε μια εργασία που μπορεί να κάνει μόνο ο
root.
exit
. Αν υπάρχουν
σταματημένες εργασίες (stopped jobs) (βλέπε παρακάτω), θα ειδοποιηθείτε.
&
'
στο τέλος της γραμμής εντολών:
$ programma [-diakoptes] [parametroi] [< eisodos] [> eksodos] &
[1] 123
το κέλυφος αναγνωρίζει τη διαδικασία με έναν αριθμό εργασίας (π.χ. [1]
· βλ.
παρακάτω), και με έναν PID (Process Identification Number, Αριθμό Αναγνωρίσεως Διαδικασίας
· στο παράδειγμά μας 123).
ps ax
. Αυτό θα δώσει
ως αποτέλεσμα έναν κατάλογο των τρεχόντων διαδικασιών τη στιγμή αυτή.
kill
<PID>
. Κάποιες φορές ίσως θελήσετε να σκοτώσετε μία διαδικασία όταν δεν ξέρετε πώς
να την τερματίσετε με τον φυσιολογικό τρόπο... Μπορείτε να σκοτώσετε τις διαδικασίες άλλων
χρηστών μόνον αν είστε ο root. Κάποιες φορές, μία διαδικασία σκοτώνεται μόνον με
kill -SIGKILL <PID>
.
Επιπροσθέτως, το κέλυφος σας επιτρέπει να σταματάτε ή να διακόπτετε προσωρινά μία
διαδικασία, να τη στείλετε στο παρασκήνιο και να φέρετε μία διαδικασία από το παρασκήνιο.
Όταν αναφερόμαστε σε αυτά τα θέματα θα καλούμε τις διαδικασίες «εργασίες» (jobs).
jobs
. Εδώ, οι εργασίες
αναγνωρίζονται από τον αριθμό εργασίας τους και όχι το PID.
bg <%job>
(μετατρέπεται σε εργασία).
fg <%job>
. Για
να φέρετε στο foreground την τελευταία εργασία που στείλατε στο παρασκήνιο, δώστε απλά fg
.
kill <%job>
όπου
<job> μπορεί να είναι 1, 2, 3,...
Χρήσει αυτών των εντολών μπορείτε να διαμορφώσετε ένα δίσκο, να συμπιέσετε ένα πλήθος αρχείων, να μεταγλωττίσετε ένα πρόγραμμα και να αποσυμπιέσετε ένα συμπιεσμένο αρχείο ταυτοχρόνως, έχοντας ακόμη το prompt στη διάθεσή σας! Δοκιμάστε να το κάνετε αυτό και στα Windows και δείτε την διαφορά αποδόσεως (εφ' όσον δεν κολλήσουν....).
Για να τρέξετε ένα πρόγραμμα σε έναν απομακρυσμένο υπολογιστή ονόματι remote.machine.edu
:
$ telnet remote.machine.edu
Αφού κάνετε log in, ξεκινήστε το αγαπημένο σας πρόγραμμα. Εννοείτε πως θα πρέπει να έχετε λογαριασμό κελύφους (shell account) στον απομακρυσμένο υπολογιστή.
Αν έχετε X11, μπορείτε να τρέξετε και εφαρμογές X από απομακρυσμένους υπολογιστές,
κάνοντάς τις να φαίνονται στην οθόνη του προσωπικού σας υπολογιστή. Έστω
remote.machine.edu
το απομακρυσμένο σύστημα και local.linux.box
το Linuxόκουτό
σας. Για να τρέξετε από το local.linux.box
μία εφαρμογή Χ ευρισκόμενη στο remote.machine.edu
,
κάντε τα παρακάτω:
xterm
ή κάποιον άλλον συμβατό εξομοιωτή
τερματικού (terminal emulator) και πληκτρολογείστε:
$ xhost +remote.machine.edu
$ telnet remote.machine.edu
remote:$ DISPLAY=local.linux.box:0.0
remote:$ progname &
(αντί για DISPLAY...
, ίσως χρειαστεί να γράψετε: setenv DISPLAY
local.linux.box:0.0
. Εξαρτάται από το απομακρυσμένο κέλυφος.)
Et voila! Το progname
θα ξεκινήσει στον remote.machine.edu
και θα φαίνεται στον
υπολογιστή σας. Καλύτερα να μην το χρησιμοποιήσετε όμως με σύνδεση μέσω modem, γιατί θα
είναι εξαιρετικά αργό και άρα όχι ιδιαίτερα χρήσιμο.. Επιπλέον, είναι μία άξεστη και
ανασφαλής μέθοδος: καλύτερα διαβάστε το «Remote X Apps mini-HOWTO» στη διεύθυνση
http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.