Διαγραφή χαρακτήρα | control-H ή control-? |
Διαγραφή γραμμής | control-U |
Παύση της εξόδου | control-S |
Συνέχιση της εξόδου | control-Q |
Τέλος του αρχείου | control-D |
Διακοπή | control-C |
Προσωρινή διακοπή | control-Z |
date | Τυπώνει τη μέρα και την ώρα |
whoami | Τυπώνει το όνομά μας |
cal | Τυπώνει το ημερολογίου του μήνα |
echo hello | Τυπώνει hello |
echo $HOST | Τυπώνει την τιμή της μεταβλητής HOST |
finger | Τυπώνει τους τρέχοντες χρήστες |
Παράδειγμα:
University of the Aegean Dept of Mathematics Samos - Greece *** Network Connection on ttyp0 Local Time: 19:00 on Wednesday, 29 October 1997 This is node athena.math.aegean.gr UNAUTHORIZED ACCESS PROHIBITED login: dspin dspin's Password: Last login: Wed Oct 29 18:29:10 on ttyp0 from kerkis.math.aeg No mail. There are no messages in your incoming mailbox. athena:~> date Wed Oct 29 19:01:20 EET 1997 athena:~> whoami dspin athena:~> echo hello hello athena:~> echo $HOST athena athena:~> cal October 1997 S M Tu W Th F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 athena:~> finger Login Name Tty Idle Login Time Office Office Phone dspin Diomidis Spinelis p0 Oct 29 19:00 [ rls105.math.aeg ] s95138 Antoniou Niki p1 Oct 29 18:35 [ pyth ]
Παράδειγμα:
athena:~> apropos topological tsort (1) - Topological sort of a directed graph athena:~> man tsort TSORT(1) UNIX Reference Manual TSORT(1) NAME tsort - topological sort of a directed graph SYNOPSIS tsort [file] DESCRIPTION ...
touch αρχείο | Δημιουργεί ένα κενό αρχείο |
ls | Τυπώνει τα αρχεία ενός καταλόγου |
rm | Διαγράφει αρχεία |
mv | Αλλάζει όνομα σε αρχεία |
more | Τυπώνει αρχεία σελίδα-σελίδα |
cat | Ενώνει και τυπώνει αρχεία |
grep λέξη [αρχείο] | Ψάχνει για τη λέξη στο αρχείο |
Παράδειγμα:
athena:~/eg> touch myfile athena:~/eg> ls myfile athena:~/eg> rm myfile athena:~/eg> ls athena:~/eg> touch one athena:~/eg> ls one athena:~/eg> mv one two athena:~/eg> ls two athena:~/eg> grep Elen /etc/passwd s95128:XyiD4md/Jk9.E:690:100:Xatzinikolaou Eleni:/home/stud/c95/s95128:/bin/tcsh s96027:savucWqVCSLHQ:587:100:Gkougkoulia Eleni:/home/stud/c96/s96027:/bin/tcsh s96035:Qys4Lwmsy.uLI:599:100:Drimtzia Eleni:/home/stud/c96/s96035:/bin/tcsh s96050:FokFq/a5cJBgs:626:100:Kontaraki Eleni:/home/stud/c96/s96050:/bin/tcsh s96052:7T6k.D7lzkyK.:631:100:Kote Maria-Elena:/home/stud/c96/s96052:/bin/tcsh s96138:GhPFvxg0F7W.g:840:100:Pozoukidou Eleni:/home/stud/c96/s96138:/bin/tcsh
ls >foo more <foo ls | more
Σε οποιοδήποτε σημείο χρειαστεί να δώσουμε ένα όνομα αρχείου ή καταλόγου μπορούμε να δώσουμε το αντίστοιχο μονοπάτι που να ορίζει το αντίστοιχο αρχείο ή τον κατάλογο.
Παράδειγμα:
athena:~> mkdir eg athena:~> cd eg athena:~/eg> pwd /home2/staff/dspin/eg athena:~/eg> cd /home2/staff/dspin/eg athena:~/eg> pwd /home2/staff/dspin/eg athena:~/eg> cd ../eg athena:~/eg> pwd /home2/staff/dspin/eg athena:~/eg> cd .. athena:~> rmdir eg
Παράδειγμα:
athena:~> ls -l >foo athena:~> ln foo bar athena:~> mv bar bar1 athena:~> rm foo athena:~> cat bar1 total 248 -rw-r--r-- 1 dspin users 2847 Oct 29 16:11 afm drwxr-xr-x 2 dspin users 1024 Feb 26 1997 bin/ -rw-r--r-- 1 dspin users 0 Oct 29 19:10 foo -rw------- 1 dspin users 29793 Jun 21 20:57 mbox -rwxr-xr-x 1 dspin users 100 Oct 29 17:42 myspell* -rw-r--r-- 1 dspin users 2023 Oct 29 16:07 names -rw-r--r-- 1 dspin users 2741 Oct 29 16:11 phones -rw-r--r-- 1 dspin users 2741 Oct 29 18:45 phones.sorted -rw-rw-r-- 1 dspin users 995 Mar 12 1997 submit -rw-r--r-- 1 dspin users 206662 Oct 22 15:08 words
Παράδειγμα:
athena:~> df Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hda1 243497 232125 0 100% / /dev/sda1 234961 213177 9651 96% /home /dev/hda3 221535 114008 96087 54% /home3 /dev/hdb1 302030 218400 68032 76% /home1 /dev/hdb2 197140 81081 105879 43% /home2 /dev/hdb3 427409 297456 107878 73% /usr/apps /dev/hdb4 72211 52270 16212 76% /tmp athena:~> mount /dev/hda1 on / type ext2 (rw) /dev/sda1 on /home type ext2 (rw,nosuid) /dev/hda3 on /home3 type ext2 (rw,nosuid) /dev/hdb1 on /home1 type ext2 (rw,nosuid) /dev/hdb2 on /home2 type ext2 (rw,nosuid) /dev/hdb3 on /usr/apps type ext2 (rw,nosuid) /dev/hdb4 on /tmp type ext2 (rw,nosuid) none on /proc type proc (rw)
Παράδειγμα:
athena:~> grep Giorg names Giorgos Tsolakakis Giorgos Kabourakis Giorgos Zaimis Giorgos Margaronis Limperis Giorgos athena:~> tr '[a-z]' '[A-Z]' <names HEALTH INSTITUTE RAFAIL MELAS MANOLIS GERASIMOU ARGIRIOS ALEXOPOULOS ANTONIS ANAGNOSTOU VAGELIS MELETIOU KOSTAS TSESMELIS IOANNIS VERGIS ATHANASIOS PANOUSOS NIKOLAS TZANETIS ... athena:~> fmt names | head Health Institute Rafail Melas Manolis Gerasimou Argirios Alexopoulos Antonis Anagnostou Vagelis Meletiou Kostas Tsesmelis Ioannis Vergis Athanasios Panousos Nikolas Tzanetis Maria Antoniou Nikos Michail Ioannis Xouvardas Giorgos Tsolakakis Kostantina Tzoula Yannis Asikoglou Ioannis Soutos Manolis Pirgiotis Dimitris Karakostas Aristidis Kalafatis Ioannis Diakostamatis Emmanouil Tjogias Aggelos Vouros Stamatis Skoutas Aegean Health Institute Dimitrios Rizakis Aristea Mela Alexandros Stratinakis Vaggelis Xatzikostas Panagiotis Charalampopoulos Efi Vergi Giorgos Kabourakis Giorgos Zaimis Konstantinos Kotis Antonis Margaros ... athena:~> wc names 111 227 2023 names athena:~> rev names | head etutitsnI htlaeH saleM liafaR uomisareG silonaM soluopoxelA soirigrA uotsonganA sinotnA uoiteleM silegaV silemsesT satsoK sigreV sinnaoI sosuonaP soisanahtA sitenazT salokiN ...
Παράδειγμα:
athena:~> grep 'abo' words ... sabotage seaboard taboo thereabouts turnabout vagabond whereabout ... athena:~> grep '^abo' words aboard abode abolish abolition abominable abominate aboriginal athena:~> grep bent words absorbent bent benthic debenture incumbent recumbent athena:~> grep 'bent$' words absorbent bent incumbent recumbent athena:~> grep -v '[AEIOUYaeiouy]' words ... MD MN MPH Mr Mrs Ms m's Mt n NBC ... athena:~> egrep '(.)(.)(.)\3\2\1' words braggart Brenner collocation diffident dissident glossolalia grammar grammarian installation staccato suffuse
Παράδειγμα:
athena:~> ls -l | tee foo total 251 -rw-r--r-- 1 dspin users 2847 Oct 29 16:11 afm -rw-r--r-- 1 dspin users 627 Oct 29 19:10 bar1 drwxr-xr-x 2 dspin users 1024 Feb 26 1997 bin/ -rw------- 1 dspin users 29793 Jun 21 20:57 mbox -rwxr-xr-x 1 dspin users 100 Oct 29 17:42 myspell* -rw-r--r-- 1 dspin users 2023 Oct 29 16:07 names -rw-r--r-- 1 dspin users 2741 Oct 29 16:11 phones -rw-r--r-- 1 dspin users 2741 Oct 29 18:45 phones.sorted -rw-rw-r-- 1 dspin users 995 Mar 12 1997 submit -rw-r--r-- 1 dspin users 272 Oct 29 19:44 t.c -r--r--r-- 1 dspin users 547 Oct 29 19:44 t.c,v -rw-r--r-- 1 dspin users 206662 Oct 22 15:08 words athena:~> head -2 foo total 251 -rw-r--r-- 1 dspin users 2847 Oct 29 16:11 afm athena:~> tail -2 foo -r--r--r-- 1 dspin users 547 Oct 29 19:44 t.c,v -rw-r--r-- 1 dspin users 206662 Oct 22 15:08 words
Παράδειγμα:
athena:~> sort names | head Aegean Health Institute Aggelos Vouros Alexandros Stratinakis Antonis Anagnostou Antonis Arxontoulis Antonis Margaros Argirios Alexopoulos Aristea Mela Aristidis Kalafatis Athanasios Panousos athena:~> sort names +1 | head Syllogos Agapi Tambakou Aikaterini Argirios Alexopoulos Antonis Anagnostou Miltos Anagnostou Maria Antoniou Nikos Antoniou Antonis Arxontoulis athena:~> sort -t: +1 phones | head Miltos Anagnostou:10025 Manolis Kalatzis:10706 Nikolas Tzanetis:10938 John Vidalis:11150 Konstantinos Kotis:11178 Ioannis Soutos:11601 Health Institute:12534 Health Institute:12535 Stamatis Skoutas:12887
Παράδειγμα:
athena:~> head -1 phones afm ==> phones <== Health Institute:12534 ==> afm <== Health Institute:12534081 athena:~> join -t: -j 1 phones afm | head Health Institute:12534:12534081 Health Institute:12535:12534081 Rafail Melas:54460:54460443 Manolis Gerasimou:41434:41434613 Argirios Alexopoulos:58397:58397370 Vagelis Meletiou:96171:96171096 Kostas Tsesmelis:69012:69012955 Ioannis Vergis:29257:29257932 Athanasios Panousos:56251:56251538 Nikolas Tzanetis:10938:10938443
Η εντολή cut επιτρέπει την επιλογή ορισμένων μόνο πεδίων από ένα αρχείο. Με την παράμετρο -f N μπορεί να καθοριστεί το πεδίο N το οποίο θα επιλεχθεί και την παράμετρο -dC ο χαρακτήρας που διαχωρίζει τα πεδία.
Παράδειγμα:
athena:~> cut -d: -f 2 phones | head 12534 12535 54460 41434 58397 17429 96171 69012 29257 56251
Η εντολή comm με παραμέτρους ένα ζεύγος αρχείων εμφανίζει τις γραμμές οι οποίες εμφανίζονται στο ένα, στο άλλο ή και στα δύο αρχεία.
Παράδειγμα:
athena:~> cut -d: -f 1 phones | sort | uniq -d Health Institute Stratologiko Grapheio Samou Vasilis Barekos athena:~> sort phones >phones.sorted athena:~> cut -d: -f 1 phones | sort | uniq -d | join - phones.sorted Health Institute Institute:12534 Health Institute Institute:12535 Stratologiko Grapheio Samou Grapheio Samou:58221 Stratologiko Grapheio Samou Grapheio Samou:58222 Stratologiko Grapheio Samou Grapheio Samou:58223 Vasilis Barekos Barekos:61312 Vasilis Barekos Barekos:89584
athena$ man ls | tr -cs '[^A-Za-z]' '\n' | tr '[A-Z]' '[a-z]' | sort | uniq | comm -23 - words | head [path abbreviation abcdfgiklmnopqrstuxabcfglnqrsux ables according affects after
Προσοχή όταν δίνετε μία εντολή έχει σημασία αν τα γράμματα είναι κεφαλαία ή μικρά.
Ανοίγοντας ένα αρχείο:
vi όνομα
Μετακίνηση μέσα στο αρχείο:
h (ή το αριστερό βελάκι) | Μία θέση αριστερά |
l (ή το δεξί βελάκι) | Μία θέση δεξιά |
k (ή το πάνω βελάκι) | Μία γραμμή πάνω |
j (ή το κάτω βελάκι) | Μία γραμμή κάτω |
w | Στην επόμενη λέξη |
Εισαγωγή και διαγραφή κειμένου:
Ο vi έχει δύο καταστάσεις, κατάσταση εντολών και κατάσταση
εισαγωγής κειμένου.
Για να μπείτε στην κατάσταση εισαγωγής κειμένου δίνετε:
i | Για να μπείτε στην κατάσταση εισαγωγής κειμένου χωρίς να μετακινηθεί ο δρομέας. |
a | Για να μπείτε στην κατάσταση εισαγωγής κειμένου μετακινούμενοι μία θέση δεξιά. |
I | Για να μπείτε στην κατάσταση εισαγωγής στην αρχή της γραμμής |
A | Για να μπείτε στην κατάσταση εισαγωγής στο τέλος της γραμμής |
Για να μπείτε στην κατάσταση εντολών δίνετε:
ESC ή ctrl-[
Για να κάνετε αλλαγές στο κείμενό σας:
x | διαγράφει τον χαρακτήρα όπου είναι ο δρομέας |
dd | διαγράφει την γραμμή που είναι ο δρομέας |
u | ακυρώνει την τελευταία αλλαγή |
Αναζήτηση χαρακτήρων/λέξεων μέσα στο κείμενο:
/χαρακτήρες | Βρίσκει την επόμενη γραμμή όπου εμφανίζεται το "χαρακτήρες". |
?χαρακτήρες | Βρίσκει την προηγούμενη γραμμή όπου εμφανίζεται το "χαρακτήρες". |
n | Επαναλαμβάνει την αναζήτηση στις επόμενες γραμμές. |
Σώζοντας και βγαίνοντας από ένα αρχείο:
:w | Σώζει τις τελευταίες αλλαγές και παραμένει μέσα στο αρχείο. |
:x | Σώζει τις τελευταίες αλλαγές και βγαίνει από το αρχείο |
:q! | Βγαίνει από το αρχείο χωρίς να σώσει τις αλλαγές |
Βασισμένο σε κείμενο του Αντώνη Δανάλη <danalis@edu.physics.uch.gr (http://www.edu.physics.uch.gr/~danalis/index3.html)>
Εντολές που σβήνουν ή αντιγράφουν κομμάτια του κειμένου
" | Ορίζει ένα ενταμιευτή ο οποίος μπορεί να χρησιμοποιηθεί από όλες τις εντολές που χρησιμοποιούν ενταμιευτές. Αν το " ακολουθείται από ένα γράμμα ή ένα νούμερο τότε αυτό είναι το όνομα του ενταμιευτή. |
D | Σβήνει από εκεί που βρίσκεται ο δρομέας μέχρι το τέλος της γραμμής |
p | Αντιγράφει τον ενταμιευτή που του ορίζουμε μετά την θέση ή την γραμμή που βρίσκεται ο δρομέας. Αν δεν ορίσουμε κάποιον συγκεκριμένο ενταμιευτή τότε η εντολή p χρησιμοποιεί τον γενικό.(Δείτε το παράδειγμα της εντολής ") |
P | Αντιγράφει τον ενταμιευτή που του ορίζουμε πριν την θέση ή την γραμμή που βρίσκεται ο δρομέας. Αν δεν ορίσουμε κάποιον συγκεκριμένο ενταμιευτή τότε η εντολή P χρησιμοποιεί τον γενικό.(Δείτε το παράδειγμα της εντολής ") |
x | Σβήνει τον χαρακτήρα πάνω στον οποίο βρίσκεται ο δρομέας. Αν πριν το x δώσουμε ένα αριθμό τότε θα σβηστούν τόσοι χαρακτήρες μετά το δρομέα. |
X | Σβήνει τον χαρακτήρα που βρίσκεται πριν το δρομέα. |
d | Σβήνει μέχρι εκεί που του ορίζουμε.Αν δώσουμε dd σβήνει όλη την γραμμή. Ό,τι σβήνεται τοποθετείται στον ενταμιευτή που του ορίζουμε με την εντολή " , αν δεν ορισθεί ενταμιευτής τότε χρησιμοποιείται ο γενικός. |
Y | Καταχωρεί την γραμμή στον ενταμιευτή που ορίζουμε, αν δεν ορίσουμε ενταμιευτή χρησιμοποιεί τον γενικό. |
y |
Καταχωρεί στον ενταμιευτή που του ορίζουμε (ή στον γενικό) το κομμάτι του
κειμένου που του ορίζουμε. Οι κανόνες που ακολουθεί είναι αυτοί που
ακολουθεί και η d εκτός από την καταχώρηση μίας γραμμής που γίνεται
δίνοντας yy |
Εντολές εισαγωγής κειμένου
A | Ξεκινάει την εισαγωγή του κειμένου από το τέλος της γραμμής |
I | Ξεκινάει την εισαγωγή του κειμένου από την αρχή της γραμμής |
o | Ξεκινάει την εισαγωγή του κειμένου στην από κάτω γραμμή από αυτή που βρίσκεται ο δρομέας. |
O | Το κεφαλαίο γράμμα Ο ξεκινάει την εισαγωγή του κειμένου στην από πάνω γραμμή από αυτή που βρίσκεται ο δρομέας. |
a | Ξεκινάει την εισαγωγή κειμένου μία θέση μετά από εκεί που βρίσκεται ο δρομέας. Συνδυάζοντας την εντολή a με έναν αριθμό n πετυχαίνουμε εισαγωγή κειμένου n φορές. |
i | Ξεκινάει την εισαγωγή κειμένου μία θέση πριν από εκεί που βρίσκεται ο δρομέας. Συνδυάζοντας την εντολή i με έναν αριθμό n πετυχαίνουμε εισαγωγή κειμένου n φορές. |
Μετακίνηση του δρομέα μέσα σε ένα αρχείο
^B | Πάει πίσω μία σελίδα. Μαζί με ένα νούμερο n γυρνάει n σελίδες πίσω. |
^F | Πάει μπροστά μία σελίδα. Μαζί με ένα νούμερο n πάει n σελίδες μπροστά. |
^D | Πάει μπροστά μισό παράθυρο. Μαζί με ένα νούμερο n πάει n παράθυρα μπροστά |
^H | Μετακινεί το δρομέα μία θέση αριστερά. Μαζί με ένα νούμερο n πάει n θέσεις δεξιά |
^J | Μετακινεί το δρομέα μία γραμμή κάτω στην ίδια γραμμή. Μαζί με ένα νούμερο n πάει n γραμμές κάτω. |
^M | Πηγαίνει στον πρώτο χαρακτήρα της επόμενης γραμμής. |
^N | Ό,τι και το ^J |
^P | Μετακινεί το δρομέα μία γραμμή κάτω στην ίδια γραμμή. Μαζί με ένα νούμερο n πάει n γραμμές κάτω. |
^U | Πάει πίσω μισό παράθυρο. Μαζί με ένα νούμερο n πάει n παράθυρα πίσω |
$ | Μετακινεί το δρομέα στο τέλος της γραμμής. Μαζί με ένα νούμερο n πάει στο τέλος της γραμμής που είναι n γραμμές κάτω από το δρομέα. |
% | Αν ο δρομέας είναι πάνω σε παρένθεση ή αγκύλη τότε τον μετακινεί σε αυτήν που της ταιριάζει |
( | Μετακινεί το δρομέα στην αρχή της περιόδου |
) | Μετακινεί το δρομέα στην αρχή της επόμενης περιόδου |
{ | Μετακινεί το δρομέα στην αρχή της παραγράφου |
} | Μετακινεί το δρομέα στην επόμενη παράγραφο |
| | n| Μετακινει το δρομέα στην στήλη n |
+ | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της επόμενης γραμμής |
- | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της προηγούμενης γραμμής |
^ | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα της γραμμής |
_ | Ό,τι και το ^ |
0 | Ο χαρακτήρας μηδέν μετακινεί το δρομέα στην πρώτη στήλη της γραμμής |
B | Μετακινεί το δρομέα μία λέξη πίσω |
E | Μετακινεί το δρομέα μία λέξη μπροστά |
nG | Μετακινεί το δρομέα στην γραμμή n. Αν δε δώσετε n, τότε πάει στο τέλος του κειμένου. |
H | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στην κορυφή της οθόνης |
L | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στο κάτω μέρος της οθόνης |
M | Μετακινεί το δρομέα στον πρώτο όχι-κενό χαρακτήρα στο κέντρο της οθόνης |
W | Μετακινεί το δρομέα μία λέξη πίσω |
b | Μετακινεί το δρομέα μία λέξη πίσω. Αν ο δρομέας είναι μέσα σε λέξη τότε τον πάει στο πρώτο της γράμμα |
e | Μετακινεί το δρομέα μία λέξη μπροστά. Αν ο δρομέας είναι μέσα σε λέξη τότε τον πάει στο τελευταίο της γράμμα |
w | Ό,τι και το e |
h | Μετακινεί το δρομέα μία θέση αριστερά |
j | Μετακινεί το δρομέα μία γραμμή κάτω |
k | Μετακινεί το δρομέα μία γραμμή πάνω |
l | Μετακινεί το δρομέα μία θέση δεξιά |
Μετακίνηση του δρομέα στην οθόνη
n^E | Μετακινεί την οθόνη n γραμμές πάνω, χωρίς να την μετακινεί μία γραμμή. |
n^Y | Μετακινεί την οθόνη n γραμμές κάτω, χωρίς να την μετακινεί μία γραμμή. |
z | Αλλάζει την οθόνη ως εξής: z τοποθετεί την γραμμή στην κορυφή της οθόνης. z. τοποθετεί την γραμμή στο κέντρο της οθόνης. z- τοποθετεί την γραμμή στο κάτω μέρος της οθόνης. Αν πριν το z υπάρχει ένα νούμερο n, τότε κάνει αυτές τις αλλαγές για την γραμμή n. Για παράδειγμα 16z τοποθετεί στην κορυφή της οθόνης την γραμμή 16 |
Αντικατάσταση κειμένου
C | Αλλάζει την γραμμή από την θέση του δρομέα μέχρι το τέλος της |
R | Αλλάζει τόσους χαρακτήρες όσους δίνουμε και αφήνει άθικτους τους υπόλοιπους |
S | Αλλάζει ολόκληρη την γραμμή |
c | Αλλάζει την γραμμή μέχρι να βρει μία τελεία. Το cc αλλάζει ολόκληρη την γραμμή |
r | Αλλάζει τον χαρακτήρα που βρίσκεται ο δρομέας |
s | Αλλάζει τον χαρακτηρα που είναι ο δρομέας και μπαίνει σε insert mode. Με έναν αριθμό n αλλάζει n χαρακτήρες. Ο τελευταίος χαρακτήρας που είναι να αλλάξει αντικαθίσταται προσωρινά με ένα $ |
Εντολές για να ψάχνετε μέσα σε ένα κείμενο
/ | Ψάχνει προς τα κάτω το κείμενο για τη συμβολοσειρά (κανονική έκφραση) που ορίζουμε μετά το / |
? | Ψάχνει προς τα επάνω το κείμενο για τη συμβολοσειρά (κανονική έκφραση) που ορίζουμε μετά το ? |
n | Επαναλαμβάνει την τελευταία εντολή / ή ? |
N | Ό,τι και το n αλλά στην αντίθετη κατεύθυνση |
f | Ψάχνει μέσα στην γραμμή για τον χαρακτήρα που δίνουμε μετά το f και μετακινεί το δρομέα εκεί. |
F | Ψάχνει προς τα πίσω μέσα στην γραμμή για τον χαρακτήρα που δίνουμε μετά το f και μετακινεί το δρομέα εκεί. |
T | Ό,τι και το T αλλά πάει το δρομέα στην επόμενη θέση από τον χαρακτήρα. |
t | Ό,τι και το f αλλά πάει το δρομέα στην προηγούμενη θέση από τον χαρακτήρα |
; | Επαναλαμβάνει την τελευταία εντολή f ή F ή t ή T |
, | Επαναλαμβάνει την τελευταία εντολή f ή F ή t ή T αλλά στην αντίθετη κατεύθυνση |
Εντολές μορφοποίησης χαρακτήρων και γραμμών
~ | Αλλάζει από κεφαλαίο σε μικρό και από μικρό σε κεφαλαίο το γράμμα που είναι ο δρομέας |
<< | Μετακινεί την γραμμή προς τα αριστερά. Η τιμή του είναι μεταβλητή και μπορεί να ορισθεί από την set shiftwidth |
>> | Μετακινεί την γραμμή προς τα δεξιά. Η τιμή του είναι μεταβλητή και μπορεί να ορισθεί από την set shiftwidth |
J | Ενώνει την γραμμή που βρίσκεται ο δρομέας με την επόμενη. Με ένα νούμερο n μπροστά ενώνει n γραμμές |
Εντολές για να σώσετε και να βγείτε από ένα αρχείο
^\ | Μπαίνει σε ΕΧ mode. Ο EX editor είναι αυτός πάνω στον οποίο "χτίστηκε" ο VI. Για να επιστρέψετε σε vi mode δίνετε :vi |
Q | Ό,τι και η ^\ |
ZZ | Βγαίνει από το αρχείο σώζοντας τις αλλαγές |
Μερικές ακόμα εντολές
^G | Δείχνει το όνομα του αρχείου τον συνολικό αριθμό γραμμών που έχει και τον αριθμό της γραμμής που βρίσκεται ο δρομέας |
^L | Καθαρίζει την οθόνη. |
^R | Ξανασχεδιάζει την οθόνη και διορθώνει τα λάθη |
^[ | Το σύμβολο <ctrl>-[ είναι ουσιαστικά το <ESC> |
! | Η εντολή ! ξεκινάει ένα shell. Αμα ορίσετε κάποιες συγκεκριμένες γραμμές τότε χρησιμοποιεί αυτές σαν input και τις αντικαθιστά με το output. Η !! χρησιμοποιεί σαν input την γραμμή που είναι ο δρομέας. |
& | Επαναλαμβάνει την τελευταία εντολή αλλαγής :s |
. | Επαναλαμβάνει την τελευταία εντολή |
: | Δίνει την δυνατότητα να εκτελεστεί μια εντολή του ex. |
U | Φέρνει την γραμμή που είναι ο δρομέας στην γραμμή που ήταν πριν την αλλάξετε |
m | "Σημαδεύει" την θέση με τον χαρακτήρα που ακολουθεί το m |
u | Ακυρώνει την τελευταία αλλαγή. Δύο συνεχόμενα u αφήνουν το αρχείο όπως ήταν πριν από αυτά |
Εντολές του EX
Ο vi editor είναι βασισμένος πάνω σε έναν διορθωτή γραμμών, τον ex. Ετσι ο vi δίνει την δυνατότητα να εκτελεστούν οι εντολές του ex.
:ab string strings |
Κάνει συντομογραφία μιας συμβολοσειράς σε μια άλλη. Ετσι αν δώσετε: :ab usa United States of America τότε κάθε φορά που θα γράφετε usa θα εμφανίζεται το United States of America |
:map keys new_seq | Με την μέθοδο του mapping μπορείτε να κάνετε συντομογραφίες σε εντολες. |
:q | Βγαίνει από το αρχείο. Αν έχετε κάνει αλλαγές που δεν έχετε σώσει τότε εμφανίζεται ένα μήνυμα και δεν βγαίνει από το αρχείο |
:q! | Βγαίνει από το αρχείο χωρίς να σώσει τις τελευταίες αλλαγές |
:s/from/to/options | Αντικαθιστά την λέξη from στην λέξη to. |
:set [all] | Ορίζει της μεταβλητές του vi. Η εντολή set all δείχνει όλες τις μεταβλητές και για όσες υπάρχει, την τιμή τους. |
:una string | κάνει το ανάποδο από την ab, δηλαδή αφαιρεί από μια συμβολοσειρά την ιδιότητά του να είναι συντομογραφία κάποιας άλλης. |
:unm keys | Το αντίστοιχο του una αλλά για την εντολή map |
:vi filename | Ξεκινάει την επεξεργασία ενός άλλου αρχείου. |
:w | Σώζει το αρχείο και παραμένει μέσα σε αυτό |
:w new_file | Σώζει τα περιεχόμενα του αρχείου σε ένα άλλο με όνομα new_file |
:w >> filename | Προσθέτει το αρχείο, κάτω από το αρχείο filename |
:wq | Σώζει τις τελευταίές αλλαγές και βγαίνει από το αρχείο |
:x | Ότι και το x |
Βασισμένο σε κείμενο του Αντώνη Δανάλη <danalis@edu.physics.uch.gr (http://www.edu.physics.uch.gr/~danalis/index3.html)>
vi myprog echo Current Date: date echo Calendar for the Current Month: cal
sh myprog
kerkis:~$ sh myprog Current Date: Wed Nov 5 08:22:38 GMT+2 1997 Calendar for the Current Month: November 1997 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
read input echo $input
Παράδειγμα:
NAME=john ls -rtl cat foo bar >foobar calc_pi &
Παράδειγμα:
ls -l | more ! grep check file
Παράδειγμα:
mail john <foo && rm foo cat foo >bar || echo "Unable to read foo" ls /tmp ; ls /dev
for name [ in word; ] do list ; done
Παράδειγμα:
for fname in *.c do ls -l $fname cat $fname done
case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
Παράδειγμα:
case $fname in *.c|*.for) echo Source file ; cat *.c ;; *.o) echo Object file ;; *) echo Other file ;; esac
if list_c1 then list_r1 [ elif list_c2 then list_r2 ] ... [ else list_r3 ] fi
Παράδειγμα:
if grep John /etc/passwd then echo John is a valid user else echo No user named John was found fi
while list1 do list2 done
Παράδειγμα:
while ! {finger | grep John ; } do sleep 10 done echo John left
$?
$1
$2
$ν
$*
Παράδειγμα:
myrm *.c Delete prog1.c (y/n)? y prog1.c deleted Delete prog2.c (y/n)? n Did not delete prog2.c
awk program fileΤο πρόγραμμα καλό είναι να περιλαμβάνεται σε μονά εισαγωγικά. Αν δε δοθεί αρχείο η awk επεξεργάζεται τα στοιχεία από την κανονική είσοδο.
πρότυπο { ενέργεια }
awk '/going/ { print }' /usr/dict/wordsτυπώνει όλες τις γραμμές του αρχείου /usr/dict/words που περιέχουν τη λέξη going:
athena:~> awk '/going/ {print} ' /usr/dict/words churchgoing easygoing foregoing ongoing thoroughgoing
athena:~> ls -l | awk '{print $9, $5}' afm 2847 bar1 627 bin/ 1024 foo 748 mbox 29793 myspell* 100 names 2023 phones 2741 phones.sorted 2741 submit 995 t.c 272 t.c,v 547 words 206662
athena:~> awk -F: '{print $5}' /etc/passwd ... Dialup-Dieuthinsi Georgias Samou,,, Dialup-Dieuthinsi Dason Samou,,, Dialup-Aggelis Nikolaos,,, Dialup-Gimnasio Marathokampou,,, Dialup-Vettas Christos,,, Dialup-Kritikos Theoktistos,,, Dialup-Spazokoilis Emmanouil,,, Dialup-Markou Manolis,,, Dialup-Bourboulis Kostas,,, Foititikos Sylogos Dep. of Mathematics,44651,44651,
athena:~> ls -l | awk '{print} END {print "--FINISHED--"}' total 252 -rw-r--r-- 1 dspin users 2847 Oct 29 12:11 afm -rw-r--r-- 1 dspin users 627 Oct 29 15:10 bar1 drwxr-xr-x 2 dspin users 1024 Feb 26 1997 bin/ -rw-r--r-- 1 dspin users 748 Oct 29 15:57 foo -rw------- 1 dspin users 29793 Jun 21 15:57 mbox -rwxr-xr-x 1 dspin users 100 Oct 29 13:42 myspell* -rw-r--r-- 1 dspin users 2023 Oct 29 12:07 names -rw-r--r-- 1 dspin users 2741 Oct 29 12:11 phones -rw-r--r-- 1 dspin users 2741 Oct 29 14:45 phones.sorted -rw-r--r-- 1 dspin users 995 Mar 12 1997 submit -rw-r--r-- 1 dspin users 272 Oct 29 15:44 t.c -r--r--r-- 1 dspin users 547 Oct 29 15:44 t.c,v -rw-r--r-- 1 dspin users 206662 Oct 22 11:08 words --FINISHED--
athena:~> ls -l | awk '{size = size + $5; num++; print $9, $5} END {print num, " files", size, " bytes"}' afm 2847 bar1 627 bin/ 1024 foo 748 mbox 29793 myspell* 100 names 2023 phones 2741 phones.sorted 2741 submit 995 t.c 272 t.c,v 547 words 206662 14 files 251120 bytes
FOR I :=0 TO 9 WRITELN(i)της Pascal γράφεται σε awk ως
for (i = 0; i < 10; i++) print i
Τα προγράμματα της C αποτελούνται από ένα σύνολο ορισμών συναρτήσεων και μεταβλητών. Η εκτέλεση του προγράμματος αρχίζει πάντα από τη συνάρτηση main η οποία πρέπει να έχει οποσδήποτε οριστεί. Το παρακάτω είναι ένα απλό πρόγραμμα σε C:
/* Τύπωσε hello, world */ #include <stdio.h> int main() { printf("hello, world\n"); return (0); }
Οι συναρτήσεις ορίζονται με βάση το όνομά τους, τον τύπο του αποτελέσματος που επιστρέφουν και τα ονόματα και τους τύπους των ορισμάτων τους. Η τιμή που θα επιστρέψει η συνάρτηση δίδεται ως παράμετρος στην εντολή return. Η παρακάτω συνάρτηση επιστρέφει το τετράγωνο ενός ακεραίου:
int sqr(int n) { return (n * n); }
FOR I :=0 TO 9 WRITELN(i)της Pascal γράφεται σε C ως
for (i = 0; i < 10; i++) printf("%d\n", i);
switch (έκφραση) { case σταθερά1: εντολή1; break; case σταθερά2: εντολή2; break; default: εντολήΝ; break; }
main(int argc, char *argv[]) { ... }Το πρώτο στοιχείο του πίνακα argv, το argv[0], περιέχει πάντα το όνομα της διεργασίας. Τα επόμενα στοιχεία περιέχουν τις αντίστοιχες παραμέτρους. Για παράδειγμα αν ο χρήστης εκτελέσει την εντολή
rm foo
οι μεταβλητές argc, argv θα έχουν τις παρακάτω τιμές:
argc: 2 argv[0]: "rm" argv[1]: "foo"
kerkis:~$ myecho hello world hello world kerkis:~$
kerkis:~$ mymkdir foo kerkis:~$ ls -l ... drwxr-xr-x 2 dspin users 1024 Oct 21 12:05 foo/ ... kerkis:~$
char buff[1024];
kerkis:~$ mycat /etc/motd Linux 2.0.30. kerkis:~$
int pid; pid = fork(); if (pid == 0) { /* I am the child process */ ... } else { /* I am the parent process */ ... }
execlp("/bin/ls", "ls", "-la", 0);Για να μπορέσει να συνεχίσει η εκτέλεση της αρχικής διεργασίας η exec() συνδιάζεται συχνά με τη fork(). Στοιχεία όπως σωληνώσεις και αλλαγή της εισόδου και εξόδου δεν μπορούν να προσδιοριστούν στην exec μια και αυτά τα χειρίζεται ο φλοιός και όχι ο πυρήνας.
int fd[2], n; char buff[100]; pipe(fd); write(fd[1], "hello", 5); n = read(fd[0], buff, 100); write(1, buff, n);