ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μητανικών Πληροθορικής ΤΕ Λειηοσργικά Σσζηήμαηα (Εργαζηήριο) Διδάζκων: I. Τζακνάκης 5ο Εργαζηήριο Πξόηππα αξρεία εηζόδνπ/εμόδνπ Τειεζηέο αλαθαηεύζπλζεο Βαζηθέο εληνιέο δηαρείξηζεο πεξηερνκέλσλ αξρείσλ Σπκπίεζε αξρείσλ Χξήζε εηδηθώλ ραξαθηήξσλ ζηελ γξακκή εληνιώλ 1
Standard streams πξόηππα αξρεία εηζόδνπ/εμόδνπ Σην Unix, θαζώο θαη ζε νξηζκέλεο γιώζζεο πξνγξακκαηηζκνύ, ηα standard streams είλαη πξνζπλδεδεκέλα θαλάιηα (αξρεία) εηζόδνπ θαη εμόδνπ αλάκεζα ζε κία εθαξκνγή, πνπ μεθηλά ηελ εθηέιεζή ηεο, θαη ζην πεξηβάιινλ ηεο. Απηά ηα ηξία θαλάιηα εηζόδνπ/εμόδνπ νλνκάδνληαη standard input (stdin), standard utput (stdut) θαη standard errr (stderr). Σηα πεξηζζόηεξα, πξνγελέζηεξα ηνπ UNIX, ιεηηνπξγηθά ζπζηήκαηα, ηα πξνγξάκκαηα έπξεπε λα ζπλδεζνύλ ξεηώο κε ηελ θαηάιιειε είζνδν θαη έμνδν δεδνκέλσλ. Σε πνιιά από απηά ηα ζπζηήκαηα, απηό ζα κπνξνύζε λα είλαη κία ζθιεξή πξόθιεζε πξνγξακκαηηζκνύ, ιόγσ εμεηδηθεπκέλσλ αλά ιεηηνπξγηθό πεξηπινθώλ, όπσο ε αλάθηεζε ησλ ξπζκίζεσλ ηνπ πεξηβάιινληνο ειέγρνπ, ε πξόζβαζε ζηνλ ηνπηθό πίλαθα αξρείσλ, ν θαζνξηζκόο ηνπ θαηάιιεινπ data set θαη ν νξζόο ρεηξηζκόο κίαο ζπζθεπήο αλάγλσζεο θαξηώλ, καγλεηηθήο ηαηλίαο, δίζθνπ, εθηύπσζεο γξακκήο, δηάηξεζεο θαξηώλ ή δηαδξαζηηθνύ ηεξκαηηθνύ. Τν UNIX εηζήγαγε νξηζκέλα πξσηνπνξηαθά πιενλεθηήκαηα, έλα εθ ησλ νπνίσλ ήηαλ λα παξέρεη αθεξεκέλεο (γεληθέο) ζπζθεπέο, πξάγκα πνπ θαηαξγεί ηελ αλάγθε ηνπ θάζε πξνγξάκκαηνο (εθαξκνγήο) λα γλσξίδεη ή λα ελδηαθέξεηαη γηα ην είδνο ησλ ζπζθεπώλ κε ηηο νπνίεο επηθνηλσλεί. Τα παιαηόηεξα ιεηηνπξγηθά ζπζηήκαηα επέβαιιαλ ζηνλ πξνγξακκαηηζηή κία δνκή γηα θάζε εγγξαθή, ηνλ έιεγρν ηεο ζπζθεπήο θαη πνιύ ζπρλά data semantics. Τν UNIX εμάιεηςε απηή ηελ πνιππινθόηεηα εηζάγνληαο ηελ έλλνηα ηεο ξνήο δεδνκέλσλ, δειαδή κηα δηαηεηαγκέλε ζεηξά από bytes δεδνκέλσλ πνπ κπνξνύλ λα δηαβαζηνύλ κέρξη ην ηέινο ηνπ αξρείνπ. Έλα πξόγξακκα κπνξεί επίζεο λα γξάςεη bytes δεδνκέλσλ όπνηε ζειήζεη θαη δε ρξεηάδεηαη λα δειώζεη πόζα bytes δεδνκέλσλ ζα εγγξαθνύλ (πξάγκα πνπ είλαη δύζθνιν λα ππνινγηζηεί), ή πώο ζα νκαδνπνηεζνύλ. Μηα άιιε ζεκαληηθή εμέιημε πνπ εηζήγαγε ην UNIX ήηαλ λα ζπλδέζεη απηόκαηα ηελ είζνδν θαη ηελ έμνδν από πξνεπηινγή. Τν πξόγξακκα (θαη ν πξνγξακκαηηζηήο) δελ ρξεηάδεηαη λα θάλεη νηηδήπνηε γηα λα θαζνξίζεη ηελ είζνδν θαη ηελ έμνδν όηαλ αθνινπζείηαη ε ηππηθή αξρηηεθηνληθή είζνδνο δεδνκέλσλ επεμεξγαζία έμνδνο δεδνκέλσλ. Γηα λα επηηεπρζεί απηή ε ζύλδεζε, κε ηελ είζνδν θαη ηελ έμνδν ησλ δεδνκέλσλ, ζηα πξνεγνύκελα ιεηηνπξγηθά ζπζηήκαηα απαηηνύληαλ ζπλήζσο ε ρξήζε κίαο γιώζζαο ειέγρνπ εξγαζίαο (jb cntrl), ε νπνία ζπρλά ήηαλ ηδηαίηεξα ζύλζεηε. Από ηε ζηηγκή πνπ ην UNIX απνθάζηζε λα παξέρεη πξόηππα αξρεία εηζόδνπ/εμόδνπ, ην runtime πεξηβάιινλ ηεο UNIX C ήηαλ ππνρξεσκέλν λα ππνζηεξίμεη θη απηό ηε δπλαηόηεηα απηή. Ωο απνηέιεζκα, ηα πεξηζζόηεξα runtime πεξηβάιινληα ηεο C (θαη νη απόγνλνη ηεο C), αλεμάξηεηα από ην ιεηηνπξγηθό ζύζηεκα, παξέρνπλ ηζνδύλακεο ιεηηνπξγίεο. 2
stdin Standard input είλαη δεδνκέλα (ζπρλά ζε κνξθή θεηκέλνπ) πνπ δίλνληαη σο είζνδνο ζε έλα πξόγξακκα. Τν πξόγξακκα δεηάεη ηε κεηαθνξά ησλ δεδνκέλσλ (από ηελ είζνδν πξνο απηό) κε ηε ρξήζε ηεο ιεηηνπξγίαο read (αλάγλσζε). Να ζεκεησζεί πσο δελ ρξεηάδνληαη όια ηα πξνγξάκκαηα θάπνηα είζνδν. Γηα παξάδεηγκα ε εληνιή ls (ε θάζε εληνιή είλαη έλα πξόγξακκα) εθηειεί ηε ιεηηνπξγία ηεο ρσξίο λα δέρεηαη θαλέλα δεδνκέλν από ηελ είζνδν. Δθηόο θη αλ δεηεζεί θάπνηα αλαθαηεύζπλζε, ε είζνδνο ησλ δεδνκέλσλ αλακέλεηαη από ην πιεθηξνιόγην ην νπνίν μεθίλεζε ην πξόγξακκα. Τν file descriptr (αξηζκόο - ηαπηόηεηα πνπ αληηζηνηρεί ζε θάζε αλνηθηό αξρείν) γηα ην πξόηππν αξρείν εηζόδνπ είλαη ην 0 (κεδέλ), ζηε C αληηζηνηρεί ζηε κεηαβιεηή FILE* stdin ηεο βηβιηνζήθεο <stdi.h> ελώ ζηε C++ αληηζηνηρεί ζην κεηαβιεηή std::cin ηεο βηβιηνζήθεο <istream> stdut Standard utput είλαη έλα αξρείν ξνή (stream) όπνπ ην πξόγξακκα γξάθεη ηα δεδνκέλα εμόδνπ. Τν πξόγξακκα δεηάεη ηε κεηαθνξά ησλ δεδνκέλσλ (από απηό πξνο ηελ έμνδν) κε ηε ρξήζε ηεο ιεηηνπξγίαο write (εγγξαθή). Να ζεκεησζεί πσο δελ παξάγνπλ δεδνκέλα εμόδνπ όια ηα πξνγξάκκαηα. Γηα παξάδεηγκα ε εληνιή mv πνπ κεηνλνκάδεη ή/θαη κεηαθηλεί αξρεία δελ παξάγεη θαλέλα κήλπκα όηαλ εθηειείηαη επηηπρεκέλα. Δθηόο θη αλ δεηεζεί θάπνηα αλαθαηεύζπλζε, ε πξόηππε έμνδνο ησλ δεδνκέλσλ είλαη ην ηεξκαηηθό θεηκέλνπ (θνηλώο ε νζόλε) ην νπνίν αξρηθνπνίεζε ην πξόγξακκα. Τν file descriptr γηα ην πξόηππν αξρείν εμόδνπ είλαη ην 1 (έλα), ζηε C αληηζηνηρεί ζηε κεηαβιεηή FILE* stdut ηεο βηβιηνζήθεο <stdi.h> ελώ ζηε C++ αληηζηνηρεί ζην κεηαβιεηή std::cut ηεο βηβιηνζήθεο <istream>. stderr Standard errr είλαη έλα αθόκα αξρείν ξνή (stream) εμόδνπ πνπ ρξεζηκνπνηείηαη από ηα πξνγξάκκαηα γηα λα εμάγνπλ κελύκαηα ιάζνπο ή δηαγλσζηηθά κελύκαηα. Δίλαη έλα αξρείν ξνή αλεμάξηεην από ην standard utput θαη κπνξεί λα αλαθαηεπζπλζεί αλεμάξηεηα από απηό. Δθηόο θη αλ δεηεζεί θάπνηα αλαθαηεύζπλζε, ε πξόηππε έμνδνο ησλ κελπκάησλ ιάζνπο είλαη ζπλήζσο ην ηεξκαηηθό θεηκέλνπ (θνηλώο ε νζόλε) ην νπνίν αξρηθνπνίεζε ην πξόγξακκα. Τν file descriptr γηα ην πξόηππν αξρείν εμόδνπ είλαη ην 2 (δύν), ζηε C αληηζηνηρεί ζηε κεηαβιεηή FILE* stderr ηεο βηβιηνζήθεο <stdi.h> ελώ ζηε C++ αληηζηνηρεί ζηηο κεηαβιεηέο std::cerr θαη std::clg ηεο βηβιηνζήθεο <istream>. 3
Τειεζηέο αλαθαηεύζπλζεο Τειεζηέο αλαθαηεύζπλζεο νλνκάδνληαη νη ηειεζηέο πνπ ππνρξεώλνπλ ηελ εθαξκνγή ζηελ νπνία εθαξκόδνληαη λα εθηξέςεη ηα κελύκαηά ηεο από ηα πξνθαζνξηζκέλα αξρεία εηζόδνπ/εμόδνπ ζε ηξίηα αξρεία. Ο ηειεζηήο αλαθαηεύζπλζεο > Σηε γεληθή πεξίπησζε ν ηειεζηήο > εθηξέπεη ηα κελύκαηα πνπ είραλ σο πξννξηζκό ην αξρείν stdut, ζην αξρείν πνπ αθνινπζεί κεηά ηνλ ηειεζηή. Αλ ην αξρείν, ην νπνίν αθνινπζεί ηνλ ηειεζηή θαη ζην νπνίν εθηξέπνληαη ηα κελύκαηα, ππάξρεη, ηόηε ην πεξηερόκελό ηνπ δηαγξάθεηαη πξνηνύ απνζεθεπζνύλ ζε απηό ηα κελύκαηα ηεο εληνιήο. Σηελ πεξίπησζε πνπ δελ ππάξρεη ηόηε δεκηνπξγείηαη. Παξάδεηγκα: ls -l > DirListing Εθηξνπή ηωλ κελπκάηωλ ηεο εληνιήο ls -l από ην stdut ζην αξρείν DirListing. Αλ ην αξρείν DirListing ππάξρεη ηόηε δηαγξάθνληαη όια ηα πεξηερόκελά ηνπ θαη κεηά απνζεθεύνληαη ζε απηό όια ηα κελύκαηα πξνο ην stdut ηεο εληνιήο ls -l. Αλ ην αξρείν DirListing δελ ππάξρεη ηόηε δεκηνπξγείηαη. ην ηέινο ηεο εθηέιεζεο ηεο εληνιήο ην αξρείν DirListing, πνπ ππάξρεη (ή δεκηνπξγείηαη) ζηνλ ίδην θαηάινγν ζηνλ νπνίν εθηειείηαη ε εληνιή, πεξηέρεη ζε κνξθή θεηκέλνπ όια ηα κελύκαηα πνπ ζα εκθάληδε ζηελ νζόλε ηνπ ζπζηήκαηνο ε εθηέιεζε ηεο εληνιήο ls -l. Γηα ηελ εθηξνπή ησλ κελπκάησλ ιάζνπο ζην ίδην αξρείν ζην νπνίν γίλεηαη ε εθηξνπή ησλ κελπκάησλ ηνπ stdut ζα πξέπεη ζην ηέινο ηεο εληνιήο λα ζπκπιεξσζεί 2>&1 Παξάδεηγκα: ls -l ~bb/dcuments > BbDcumentsListing 2>&1 Τα κελύκαηα κε πξννξηζκό ην stdut ηεο εληνιήο ls -l ~bb/dcuments, πνπ δείρλεη ηα πεξηερόκελα ηνπ θαθέινπ Dcuments θάησ από ηνλ αξρηθό θάθειν ηνπ ρξήζηε bb αλαθαηεπζύλνληαη (θη άξα απνζεθεύνληαη) ζην αξρείν BbDcumentsListing. Σην ίδην αξρείν ζα απνζεθεπζνύλ θη όια ηα κελύκαηα ιάζνπο πνπ ζα πηζαλώο ζα παξάγεη ε εθηέιεζε ηεο εληνιήο (πρ όηη ν ρξήζηεο δελ έρεη ηα θαηάιιεια δηθαηώκαηα λα δεη ηα πεξηερόκελα ηνπ θαθέινπ απηνύ). Ο ηειεζηήο αλαθαηεύζπλζεο >> Σηε γεληθή πεξίπησζε ν ηειεζηήο >> εθηξέπεη ηα κελύκαηα πνπ είραλ σο πξννξηζκό ην αξρείν stdut, ζην αξρείν πνπ αθνινπζεί κεηά ηνλ ηειεζηή. Αλ ην αξρείν, ην νπνίν αθνινπζεί ηνλ ηειεζηή θαη ζην νπνίν εθηξέπνληαη ηα κελύκαηα, ππάξρεη, ηόηε ηα κελύκαηα ζπκπιεξώλνληαη ζην ηέινο ηνπ αξρείνπ. Σηελ πεξίπησζε πνπ δελ ππάξρεη ηόηε δεκηνπξγείηαη. 4
Παξάδεηγκα: pwd >> MyCurrentLcatin Σν κήλπκα ηεο εληνιήο pwd, δειαδή ην απόιπην path γηα ηνλ θάθειν ζηνλ νπνίν βξίζθεηαη ν ρξήζηεο όηαλ εθηειείηαη ε εληνιή, απνζεθεύεηαη ζην αξρείν MyCurrentLcatin. Αλ ην αξρείν ππάξρεη ηόηε ην κήλπκα γξάθεηαη ζην ηέινο ηνπ αξρείνπ, κεηά από όια ηα δεδνκέλα πνπ ήδε πεξηέρεη. Αλ δελ ππάξρεη ηόηε δεκηνπξγείηαη, ώζηε λα απνζεθεπζεί κέζα ζε απηό ην απόιπην path πνπ επηζηξέθεη ε θιήζε ηεο εληνιήο pwd. Ο ηειεζηήο αλαθαηεύζπλζεο < Ο ηειεζηήο < ππνρξεώλεη ηελ εληνιή ζηελ νπνία εθαξκόδεηαη λα δηαβάζεη σο είζνδν ην πεξηερόκελν ηνπ αξρείνπ πνπ ηνλ αθνινπζεί, αληί ηνπ αξρείνπ stdin (δειαδή ην πιεθηξνιόγην). Παξάδεηγκα: $ mail bb < data.dat Θα εθηειεζηεί ην πξόγξακκα mail κε παξαιήπηε ηνλ ρξήζηε bb θαη ηα δεδνκέλα ζα πξνέξρνληαη νρη κεηά από εηζαγωγή από ην πιεθηξνιόγην αιιά απηόκαηα από ην αξρείν data.dat. Γηα ηε δηαθνπή ηεο ξνήο ηνπ πξνγξάκκαηνο παηήζηε ην πιήθηξν break. Ο ηειεζηήο αλαθαηεύζπλζεο Ο ηειεζηήο ρξεζηκνπνηείηαη γηα ηελ εθηξνπή ησλ κελπκάησλ κίαο εληνιήο από ην stdut ζη stdin ηεο εληνιήο πνπ αθνινπζεί. Κνηλώο ηα απνηειέζκαηα ηεο εληνιήο ζηα αξηζηεξά ηνπ ηειεζηή ρξεζηκνπνηνύληαη ζαλ ην ηειεπηαίν όξηζκα ηεο εληνιήο ζηα δεμηά ηνπ ηειεζηή Παξάδεηγκα: cat /tmp/myfile srt Γεληθά ε εληνιή cat εκθαλίδεη ην πεξηερόκελν ηωλ αξρείωλ πνπ δέρεηαη ωο όξηζκα. ηε ζπγθεθξηκέλε πεξίπηωζε, ηα κελύκαηα ηεο εληνιήο cat /tmp/myfile κε πξννξηζκό ην stdut, δειαδή ην πεξηερόκελν ηνπ αξρείνπ myfile θάηω από ηνλ θάθειν tmp ηνπ rt, δίλεηαη ωο παξάκεηξνο ζηελ εληνιή srt, ε νπνία ηαμηλνκεί ην πεξηερόκελν αξρείωλ πνπ δέρεηαη ωο νξίζκαηα. Απηό έρεη ωο απνηέιεζκα λα εκθαληζηεί ην πεξηερόκελν ηνπ αξρείνπ myfile ζηελ νζόλε ηαμηλνκεκέλν αλά γξακκή. 5
Βαζηθέο εληνιέο δηαρείξηζεο πεξηερνκέλσλ αξρείσλ xargs Η εληνιή xargs είλαη κία αξθεηά ζύλζεηε εληνιή. Παίξλεη σο είζνδν ηα κελύκαηα ηνπ αξρείνπ stdin, ηα ρσξίδεη ζε ηκήκαηα θάζε θνξά πνπ ζπλαληά ηνλ ραξαθηήξα ' ' (θελό), ή ηνλ ραξαθηήξα cr (λέα γξακκή) θαη γηα θάζε ηκήκα εθηειεί ηελ εληνιή πνπ παίξλεη σο παξάκεηξν βάδνληαο ζε απηήλ ην ηκήκα σο παξάκεηξν. Παξάδεηγκα: ls *TDelete* xargs rm -r H xargs δηαβάδεη ηα κελύκαηα ηνπ stdin. ην stdin έρνπλ απνζεθεπζεί (ιόγω ηνπ ηειεζηή αλαθαηεύζπλζεο πνπ πξνεγείηαη) ηα κελύκαηα πξνο ην stdut ηεο εληνιήο ls *TDelete*, δειαδή ηα νλόκαηα ηωλ αξρείωλ ηνπ ηξέρωλ θαηαιόγνπ πνπ ζην όλνκά ηνπο πεξηέρνπλ ην string TDelete. H xargs ζα πάξεη ηε ιίζηα απηή, ζα ηελ ρωξίζεη ζε ηκήκαηα κε βάζε ηνλ ραξαθηήξα θελό. Επνκέλωο θάζε ηκήκα είλαη έλα όλνκα αξρείνπ (απηό ηζρύεη κόλν ζηελ πεξίπηωζε πνπ θαλέλα από ηα αξρεία ηνπ θαθέινπ δελ πεξηέρεη θελό ζην όλνκά ηνπ). Γηα θάζε ηκήκα εθηειεί ηελ εληνιή rm -r τμήμα_x, θη αθνύ θάζε ηκήκα είλαη έλα όλνκα αξρείνπ, ηόηε ε εληνιή απηή ζα ζβήζεη όια ηα αξρεία πνπ ην όλνκά ηνπ πεξηέρεη ην string TDelete θαη είλαη θάηω από ηνλ ηξέρωλ θαηάινγν. ech Γξάθεη ην κήλπκα πνπ παίξλεη σο όξηζκα ζην πξόηππν αξρείν εμόδνπ (stdut). Παξάδεηγκα: ech Hell Wrld Γξάθεη ην κήλπκα Hell Wrld ζην stdut (εκθαλίδεηαη ζηελ νζόλε ηνπ ηεξκαηηθνύ). cat Σην Unix/Linux ππάξρνπλ πνιιέο εληνιέο κε ηηο νπνίεο κπνξνύκε λα δνύκε ηα πεξηερόκελα ελόο ή πεξηζζόηεξσλ αξρείσλ. Η εληνιή cat εκθαλίδεη ηα πεξηερόκελα ησλ αξρείσλ ζεηξηαθά, ρσξίο θαλέλα δηαρσξηζκό κεηαμύ ηνπο. cat [ptins] filenames filenames: Λίζηα νλνκάησλ αξρείσλ ρσξηζκέλα κεηαμύ ηνπο κε θελό. Παξάδεηγκα: cat /etc/prfile /etc/passwd Εκθάληζε ηωλ πεξηερνκέλωλ ηωλ αξρείωλ prfile θαη passwd θάηω από ηνλ θαηάινγν etc ηνπ rt. mre H εληνιή mre εκθαλίδεη ηα πεξηερόκελα ησλ αξρείσλ ζεηξηαθά, κε δηαρσξηζκό κεηαμύ ηνπο θαη κε ζειηδνπνίεζε (αλ ην πεξηερόκελν ησλ αξρείσλ μεπεξλάεη ζε κέγεζνο ην παξάζπξν ηνπ ηεξκαηηθνύ, ηόηε γεκίδεη κία νζόλε θαη ζηακαηάεη πεξηκέλνληαο από ηνλ ρξήζηε λα πξνρσξήζεη κπξνζηά. 6
Μπνξνύκε λα πξνρσξήζνπκε κπξνζηά κόλν είηε κε space (πξνρσξάεη κπξνζηά ηόζεο γξακκέο όζεο ην κέγεζνο ηεο νζόλεο) είηε κε cr (enter) (πξνρσξάεη κπξνζηά κία γξακκή) είηε κε άιιεο επηινγέο (δείηε man mre γηα πεξηζζόηεξεο πιεξνθνξίεο). mre [ptins] filenames filenames: Λίζηα νλνκάησλ αξρείσλ ρσξηζκέλα κεηαμύ ηνπο κε θελό. Παξάδεηγκα: mre /etc/prfile /etc/passwd εκθάληζε ηωλ αξρείωλ prfile θαη passwd πνπ βξίζθνληαη θάηω από ηνλ θάθειν etc. less Η εληνιή less εκθαλίδεη ηα πεξηερόκελα ησλ αξρείσλ ζεηξηαθά, κε δηαρσξηζκό κεηαμύ ηνπο θαη κε ζειηδνπνίεζε. Γηα λα εκθαλίζνπκε ην πεξηερόκελν ηνπ επόκελνπ αξρείνπ ρξεζηκνπνηνύκε ηνλ ζπλδπαζκό :n ελώ γηα ην πεξηερόκελν ηνπ πξνεγνύκελνπ αξρείνπ ηνλ ζπλδπαζκό :p. Μπνξνύκε λα πξνρσξήζνπκε κπξνζηά θαη πίζσ κε επηινγέο όπσο space ή f (πξνρσξάεη κπξνζηά ηόζεο γξακκέο όζεο ην κέγεζνο ηεο νζόλεο) θαη b (κεηαθηλείηαη πίζσ ηόζεο γξακκέο όζεο ην κέγεζνο ηεο νζόλεο). Γείηε man less γηα πεξηζζόηεξεο πιεξνθνξίεο. less [ptins] filenames filenames: Λίζηα νλνκάησλ αξρείσλ ρσξηζκέλα κεηαμύ ηνπο κε θελό. Παξάδεηγκα: less /etc/prfile /etc/passwd εκθάληζε ηωλ αξρείωλ prfile θαη passwd πνπ βξίζθνληαη θάηω από ηνλ θάθειν etc. head Η εληνιή head ρξεζηκνπνηείηαη γηα λα εκθαλίζεη ηηο πξώηεο γξακκέο ελόο αξρείνπ. Η head εκθαλίδεη 10 πξώηεο γξακκέο, εθηόο αλ γίλεη ρξήζε ηνπ δηαθόπηε n. Αλ ν αξηζκόο πνπ αθνινπζεί ηνλ δηαθόπηε n είλαη ζεηηθόο ηόηε εκθαλίδεη ηόζεο γξακκέο ηνπ αξρείνπ όζεο θη ν αξηζκόο. Αλ όκσο ν αξηζκόο είλαη αξλεηηθόο ηόηε εκθαλίδεη όιεο ηηο γξακκέο ηνπ αξρείνπ εθηόο από απηόλ ηνλ αξηζκό ησλ ηειεπηαίσλ γξακκώλ ηνπ. head [ptins] filename Παξάδεηγκα 1: head n 30 /etc/passwd Εκθάληζε ηωλ 30 πξώηωλ γξακκώλ ηνπ αξρείνπ passwd. Παξάδεηγκα 2: head n -3 /etc/grup Εκθάληζε όιωλ γξακκώλ ηνπ αξρείνπ grup εθηόο από ηηο 3 ηειεπηαίεο tail Η εληνιή tail ρξεζηκνπνηείηε γηα λα εκθαλίζεη ηηο ηειεπηαίεο γξακκέο ελόο αξρείνπ. Η tail εκθαλίδεη 10 ηειεπηαίεο γξακκέο, εθηόο αλ ρξεζηκνπνηήζεηε ηνλ δηαθόπηε n. Η εληνιή tail ζπρλά ρξεζηκνπνηείηαη γηα λα 7
βιέπνπκε ηηο ηειεπηαίεο εγγξαθέο ελόο αξρείνπ θαηαγξαθήο (lg file). Γηα λα βιέπνπκε ζπλερώο ηηο ηειεπηαίεο εγγξαθέο ελόο αξρείνπ, ρξεζηκνπνηνύκε ηνλ δηαθόπηε f. tail [ptins] filename Παξάδεηγκα 1: tail n 5 /etc/passwd Eκθάληζε ηωλ ηειεπηαίωλ 5 γξακκώλ ηνπ αξρείνπ passwd. Παξάδεηγκα 2: tail n +4 /etc/passwd Εκθάληζε όιωλ ηωλ γξακκώλ ηνπ αξρείνπ passwd από ηελ ηέηαξηε γξακκή θαη κεηά. Παξάδεηγκα 3: tail f /var/lg/messages. πλερήο εκθάληζε ηωλ ηειεπηαίωλ εγγξαθώλ ζην αξρείν messages. find Η εληνιή find ρξεζηκνπνηείηαη γηα ηελ αλεύξεζε αξρείσλ θαη θαηαιόγσλ πνπ ηαηξηάδνπλ κε ην επηζπκεηό όλνκα αξρείνπ ή άιια θξηηήξηα. Η απινύζηεξε δπλαηή ζύληαμε ηεο εληνιήο find ζα δώζεη κία ιίζηα ησλ αξρείσλ πνπ ππάξρνπλ ζε έλα θαηάινγν θαη ζηνπο ππνθαηαιόγνπο ηνπ. find [path...] [expressin] path: Λίζηα από θαθέινπο ρσξηζκέλνπο κε θελό κεηαμύ ηνπο κέζα ζηνπο νπνίνπο γίλεηαη ε αλαδήηεζε. expressin: Παξαζηάζεηο από ptins (επηινγέο), tests θαη actins (ελέξγεηεο) πνπ ζπλδένληαη κεηαμύ ηνπο κε ηειεζηέο. Αλ δελ ππάξρεη θάπνηνο ηειεζηήο ηόηε ελλνείηαη ν ηειεζηήο and. Μεξηθνί ρξήζηκνη δηαθόπηεο ηεο εληνιήο find είλαη νη αθόινπζνη: - name pattern, Bξίζθεη αξρεία θαη θαθέινπο πνπ ην όλνκά ηνπ αθνινπζεί ην pattern. - iname pattern, Βξίζθεη αξρεία θαη θαθέινπο πνπ ην όλνκά ηνπο αθνινπζεί ην pattern. Η αλαδήηεζε αγλνεί ην case (case insensitive). - amin [+n -n n], Βξίζθεη αξρεία ζηα νπνία έγηλε πξόζβαζε πξηλ από πεξηζζόηεξα από n ιεπηά (ιηγόηεξα από n ιεπηά/αθξηβώο πξηλ από n ιεπηά). - atime [+n -n n], Βξίζθεη αξρεία ζηα νπνία έγηλε πξόζβαζε πξηλ από πεξηζζόηεξεο από n εκέξεο (ιηγόηεξεο από n εκέξεο/αθξηβώο πξηλ από n εκέξεο). - mmin [+n -n n], Βξίζθεη αξρεία πνπ ηξνπνπνηήζεθαλ πξηλ από πεξηζζόηεξα από n ιεπηά (ιηγόηεξα από n ιεπηά/αθξηβώο πξηλ από n ιεπηά). - mtime [+n -n n], Βξίζθεη αξρεία πνπ ηξνπνπνηήζεθαλ πξηλ από πεξηζζόηεξεο από n εκέξεο (ιηγόηεξεο από n εκέξεο/αθξηβώο πξηλ από n εκέξεο). 8
- uname [user user ID], Βξίζθεη αξρεία πνπ αλήθνπλ ζην ρξήζηε user ή ζην ρξήζηε κε ην ζπγθεθξηκέλν user ID. - grup [gname grup ID], Βξίζθεη αξρεία πνπ αλήθνπλ ζηελ νκάδα κε ην όλνκα gname ή κε ην ζπγθεθξηκέλν grup ID. - type filetype, Αλαδεηά αξρεία ηνπ ζπγθεθξηκέλνπ ηύπνπ. T filetype κπνξεί λα πάξεη ηηο παξαθάησ ηηκέο: bblck (buffered) special ccharacter (unbuffered) special ddirectry pnamed pipe (FIFO) fregular file lsymblic link sscket - size [+n -n n] [spaceunit], Αλαδεηά αξρεία κεγέζνπο κεγαιύηεξνπ (κηθξόηεξνπ ή ίζνπ) κε ην κέγεζνο πνπ θαζνξίδεη ν ρξήζηεο. Τν spaceunit κπνξεί λα πάξεη κία από ηεο παξαθάησ ηηκέο: c γηα bytes k γηα Kilbytes M γηα Megabytes G γηα Gigabytes Αλαιπηηθόηεξεο πιεξνθνξηέο γηα ηνπο δηαθόπηεο θαη ηηο ρξήζεηο ηεο εληνιήο find ζην manual ηεο εληνιήο (man find). Παξάδεηγκα 1: find ~ -iname Passwd Αλαδήηεζε αξρείωλ θάηω από ην hme directry πνπ ην όλνκά ηνπο είλαη passwd αλεμάξηεηα από ην case (Πρ PASSWD, passwd, PASSwd, PassWd) Παξάδεηγκα 2: find name "*file" xargs cat >> myfile Αλαδήηεζε αξρείωλ θάηω από ηνλ ηξέρνληα θάθειν πνπ ην όλνκά ηνπο θαηαιήγεη ζε file. Εθηύπωζε ηωλ πεξηερνκέλωλ απηώλ ηωλ αξρείωλ θαη απνζήθεπζή ηνπο ζην αξρείν myfile. Παξάδεηγκα 3: find ~ size +10k Αλαδήηεζε αξρείωλ πνπ ην κέγεζόο ηνπο είλαη κεγαιύηεξν από 10Kbytes θαη πνπ βξίζθνληαη θάηω από ην hme directry. Παξάδεηγκα 4: find / -grup Ubuntu Αλαδήηεζε όιωλ ηωλ αξρείωλ θάηω από ην rt πνπ αλήθνπλ ζην grup Ubuntu. Παξάδεηγκα 5: find ~ -type f -size -10c -ctime -5 9
πλδπαζκόο δηαθνπηώλ. Αλαδήηεζε θάηω από ηνλ αξρηθό θάθειν ρξήζηε όιωλ ηωλ αξρείωλ πνπ είλαη ηύπνπ θαλνληθό αξρείν, κε κέγεζνο κηθξόηεξν ή ίζν κε 10 bytes θαη δεκηνπξγήζεθαλ ηηο ηειεπηαίεο 5 εκέξεο. grep Aλαδήηεζε ζπγθεθξηκέλνπ pattern κέζα ζε αξρεία θεηκέλνπ. Η πξνθαζνξηζκέλε ζπκπεξηθνξά ηεο εληνιήο grep είλαη λα ηππώλεη ηηο γξακκέο ηνπ αξρείνπ πνπ πεξηέρνπλ ην pattern. grep [ptins] [pattern] filename Αλ ζηε ζέζε ηνπ pattern ρξεζηκνπνηεζεί ν ραξαθηήξαο. (ηειεία) ηόηε ζεκαίλεη νπνηαδήπνηε ιέμε. Οη ζεκαληηθόηεξνη δηαθόπηεο ηεο grep είλαη νη παξαθάησ: -i--ignre-case, Η αλαδήηεζε γίλεηαη αγλνόληαο ην case Παξάδεηγκα 1: grep -i UBUNTU /etc/passwd Αλαδήηεζε ηεο ιέμεο UBUNTU αγλνώληαο ην case ζην αξρείν passwd. Επηζηξέθεη όιεο ηηο γξακκέο ηνπ αξρείνπ πνπ πεξηέρνπλ ηε ιέμε είηε κε θεθαιαίνπο ραξαθηήξεο, είηε κε πεδνύο, είηε κε ζπλδπαζκό ηνπο. -v--invert-match, Δκθαλίδεη ηηο γξακκέο πνπ δελ πεξηέρνπλ ην pattern Παξάδεηγκα 2: grep -v ubuntu /etc/passwd Αλαδήηεζε ηεο ιέμεο ubuntu ζην αξρείν passwd. Επηζηξέθεη όιεο ηηο γξακκέο ηνπ αξρείνπ πνπ ΔΕΝ πεξηέρνπλ ηε ιέμε. -w--wrd-regexp, Δκθαλίδεη ηεο γξακκέο πνπ πεξηέρνπλ ην pattern σο μερσξηζηή ιέμε Παξάδεηγκα 3: grep -w buntu /etc/passwd Αλαδήηεζε νιόθιεξεο ηεο ιέμεο buntu ζην αξρείν passwd θαη εκθάληζε ηωλ γξακκώλ ηνπ αξρείνπ πνπ ηελ πεξηέρνπλ. -c--cunt, Δκθαλίδεη ηνλ αξηζκό ησλ γξακκώλ πνπ πεξηέρνπλ ην pattern Παξάδεηγκα 4: grep -c ubuntu /etc/passwd Αλαδήηεζε ηεο ιέμεο ubuntu ζην αξρείν passwd. Επηζηξέθεη ΣΟΝ ΑΡΙΘΜΟ ηωλ γξακκώλ ηνπ αξρείνπ πνπ πεξηέρνπλ ηε ιέμε. -l--files-with-matches, Αλαδεηά θαη εκθαλίδεη ηα αξρεία πνπ πεξηέρνπλ ην pattern Παξάδεηγκα 5: grep -l ubuntu /etc/* Αλαδήηεζε ηεο ιέμεο ubuntu ζε όια ηα αξρεία θάηω από ηνλ θάθειν etc. Εκθαλίδεη κόλν ηα νλόκαηα ηωλ αξρείωλ πνπ πεξηέρνπλ ηε ιέμε. Αλ δελ είρε ρξεζηκνπνηεζεί ε επηινγή l ηόηε δίπια από ην όλνκα ηνπ αξρείνπ ζα εκθάληδε θαη ηελ γξακκή πνπ πεξηέρεη ηε ιέμε. split Η split ρσξίδεη έλα αξρείν ζε κηθξόηεξα αλάινγα κε ην κέγεζνο πνπ ζα νξηζηεί. Αλ δελ δνζεί κέγεζνο ηόηε ρσξίδεη ην αξρείν αλά 1000 γξακκέο. 10
Τα λέα αξρεία πνπ δεκηνπξγνύληαη νλνκάδνληαη κε ηε ζεηξά xaa xab xac xad θ.ν.θ split [ptins] [input [prefix]] Παξάδεηγκα 1: split /var/lg/messages Δηάζπαζε ηνπ αξρείνπ messages ζε αξρεία κεγέζνπο 1000 γξακκώλ ην θάζε έλα. Παξάδεηγκα 2: split -l 3 /etc/passwd Δηάζπαζε ηνπ αξρείνπ passwd ζε αξρεία κεγέζνπο 3 γξακκώλ ην θάζε έλα Παξάδεηγκα 3: split /var/lg/messages smessage Δηάζπαζε ηνπ αξρείνπ messages ζε αξρεία κεγέζνπο 1000 γξακκώλ ην θάζε έλα. Σα αξρεία πνπ δεκηνπξγνύληαη έρνπλ νλόκαηα smessageaa, smessageab, smessageac θ.ν.θ. cut Δκθαλίδεη ζπγθεθξηκέλν ηκήκα θάζε γξακκήο από ην αξρείν cut [ptins] [file] Παξάδεηγκα 1: cut -c 4-10 /etc/passwd Εκθαλίδεη από ηνλ 4ν έωο ηνλ 10ν ραξαθηήξα θάζε γξακκήο Παξάδεηγκα 2: cut -d: -f 5 /etc/passwd Εκθαλίδεη ην 5ν πεδίν θάζε γξακκήο. Σα πεδία νξίδνληαη θάζε θνξά πνπ ζπλαληάηαη ν ραξαθηήξαο : srt Ταμηλνκεί ηελ είζνδν αιθαβεηηθά. Η πξνθαζνξηζκέλε ηαμηλόκεζε είλαη αιθαξηζκεηηθή ελώ ππάξρεη δπλαηόηεηα θαη γηα αξηζκεηηθή ηαμηλόκεζε. srt [ptins] [file] -ο: δεκηνπξγείηαη έλα λέν αξρείν κε ηα απνηειέζκαηα ηεο ηαμηλόκεζεο. -n: ρξεζηκνπνηείηαη γηα αξζκεηηθή ηαμηλόκεζε. Παξάδεηγκα 1: srt /etc/passwd Αιθαξηζκεηηθή ηαμηλόκεζε ηνπ αξρείνπ passwd. Παξάδεηγκα 2: srt - passwd2 /etc/passwd Δεκηνπξγεί ην αξρείν passwd2 πνπ πεξηέρεη ηα πεξηερόκελα ηνπ αξρείνπ passwd ηαμηλνκεκέλα αιθαξηζκεηηθά. Παξάδεηγκα 3: cut -d: -f3 /etc/passwd >passwd2 srt -n passwd2 11
Δεκηνπξγία ηνπ αξρείνπ passwd2 πνπ πεξηέρεη ην 3ν πεδίν (ζπάδνληαο θάζε γξακκή κε βάζε ηνλ ραξαθηήξα :) θάζε γξακκήο ηνπ αξρείνπ passwd (ην 3ν πεδίνπ ηνπ ζπγθεθξηκέλνπ αξρείν είλαη έλαο αξηζκόο). Καηόπηλ αξηζκεηηθή ηαμηλόκεζε ηνπ αξρείνπ passwd2. Η εληνιή uniq Απόξξηςε όισλ εθηόο από κίαο ησλ δηαδνρηθά ίδησλ γξακκώλ ηεο εηζόδνπ θαη εκθάληζή ηνπο ζηελ έμνδν. uniq [ptins] [input [utput]] Παξάδεηγκα: cut -d: -f3 /etc/passwd >> passwd2 srt -n passwd2 > spasswd2 uniq spasswd2 uspasswd2 Σν αξρείν passwd2 πνπ δεκηνπξγείηαη πεξίερεη κόλν αξηζκεηηθέο ηηκέο. Σν spasswd2 δεκηνπξγείηαη λα πεξηέρεη ηηο αξηζκεηηθέο ηηκέο ηνπο passwd2 ηαμηλνκεκέλεο αξηζκεηηθά. Με ηελ εληνιή uniq δεκηνπξγείηαη ην αξρείν uspasswd2 πνπ πεξηέρεη ηηο κνλαδηθέο αξηζκεηηθέο ηηκέο ηνπ spasswd2. 12
Σπκπίεζε αξρείσλ Σηα ιεηηνπξγηθά ζπζηήκαηα Unix θαη Linux ρξεζηκνπνηνύληαη δηάθνξεο εθαξκνγέο γηα ζπκπίεζε θαη απνζπκπίεζε ησλ αξρείσλ. Γηα ην ζθνπό απηό ρξεζηκνπνηνπληαη 2 βαζηθέο εληνιέο: gzip θαη cmpress. gzip θαη gunzip Η εληνιή gzip παίξλεη όξηζκα έλα αξρείν ην νπνίν ην ζπκπηέδεη, πξνζζέηεη ζ' απηό ηελ επέθηαζε.gz θαη δηαγξάθεη ην πξσηόηππν αξρείν. Γηα λα απνζπκπηέζνπκε έλα αξρείν, ρξεζηκνπνηνύκε ηελ εληνιή gunzip ή ηελ εληνιή gzip κε ηελ επηινγή -d αιιά πξέπεη ην αξρείν πνπ ζέινπκε λα απνζπκπηέζνπκε λα έρεη ηελ επέθηαζε.gz. Με ηελ επηινγή -S κπνξνύκε λα θαζνξίζνπκε ηελ δηθή καο επέθηαζε θαη κε ηελ επηινγή -l κπνξνύκε λα δνύκε ηα ζπκπηεζκέλα ή απνζπκπηεζκέλα κεγέζε ησλ αξρείσλ θαηά ηε δηάξθεηα ηεο ζπκπίεζεο ή ηεο απνζπκπίεζεο. Με ηελ επηινγή -t κπνξνύκε λα ειέγμνπκε ηελ αθεξαηόηεηα ηνπ ζπκπηεζκέλνπ αξρείνπ. Η εληνιή gunzip κπνξεί λα απνζπκπηέζεη θαη αξρεία πνπ έρνπλ δεκηνπξγεζεί κε ηελ εληνιή cmpress πνπ παξνπζηάδεηαη παξαθάησ. Παξάδεηγκα: $ gzip mydir.tar πκπηέδεη ην αξρείν mydir.tar ζην αξρείν mydir.gz θαη δηαγξάθεη ην mydir.tar. bzip2 θαη bunzip2 Η εληνιή bzip2 παίξλεη όξηζκα έλα αξρείν ην νπνίν ην ζπκπηέδεη, πξνζζέηεη ζ' απηό ηελ επέθηαζε.gz2 θαη δηαγξάθεη ην πξσηόηππν αξρείν. Δπηηπγράλεη ζπλήζσο θαιύηεξα απνηειέζκαηα από ηελ gzip. zip Η εληνιή zip ρξεζηνπνηείηαη ηόζν γηα ηελ ζπκπίεζε όζν θαη γηα ηελ απνζπκπίζε αξρείσλ. Δίλαη ζπκβαηή κε ηελ εθαξκνγή winzip θαη pkzip ησλ Windws. Σε αληίζεζε κε ηηο πξνεγνύκελεο εληνιέο κπνξεί λα ζπκπηέζεη πεξηζζόηεξα από έλα αξρεία. cmpress θαη uncmpress Η εληνιή cmpress παίξλεη όξηζκα έλα αξρείν ην νπνίν ην ζπκπηέδεη, πξνζζέηεη ζ' απηό ηελ επέθηαζε.z θαη δηαγξάθεη ην πξσηόηππν αξρείν. Παξάδεηγκα: $ cmpress mydir.tar πκπηέδεη ην αξρείν mydir.tar ζην αξρείν mydir.z θαη δηαγξάθεη ην mydir.tar. 13
Χξήζε εηδηθώλ ραξαθηήξσλ ζηελ γξακκή εληνιώλ Η γξακκή εληνιώλ ηνπ θινηνύ bash παξέρεη πνιιέο επθνιίεο ζην ρξήζηε. Οη ζεκαληηθόηεξεο από απηέο είλαη: Αληηθαηάζηαζε κεηαραξαθηήξσλ (File glbbing) File glbbing: είλαη ε ιεηηνπξγία αληηθαηάζηαζεο ησλ wildcards (ή κεηαραξαθηήξσλ ή ραξαθηήξσλ-κπαιαληέξ) *, ηαηξηάδεη κε νπνηνδήπνηε πιήζνο ραξαθηήξσλ?, ηαηξηάδεη κε έλα κόλν (νπνηνδήπνηε) ραξαθηήξα [a-z], ηαηξηάδεη κε νπνηνδήπνηε ραξαθηήξα αλήθεη ζε απηό ην εύξνο [^a-z], ηαηξηάδεη κε νπνηνδήπνηε ραξαθηήξα δελ αλήθεη ζε απηό ην εύξνο Η εληνιή ech κπνξεί λα ρξεζηκνπνηεζεί γηα λα ειέγμνπκε αλ ε αληηθαηάζηαζε ησλ κεηαραξαθηήξσλ έγηλε όπσο ζθνπεύακε, πξηλ εθηειέζνπκε κία εληνιή κε κεηαραξαθηήξεο. Τν πιήθηξν Tab Τν πιήθηξν Tab ρξεζηκνπνηείηαη γηα λα ζπκπιεξώζνπκε ην όλνκα εληνιήο ή αξρείνπ (πνπ πξέπεη λα είλαη όξηζκα ζε κία εληνιή) Αγθύιεο {} Οη αγθύιεο { θαη } ρξεζηκνπνηνύληαη γηα λα δεκηνπξγνύκε πξόηππα ζπκβνινζεηξώλ. Γηα ην δηαρσξηζκό ησλ ζπκβνινζεηξώλ ρξεζηκνπνηείηαη ν ραξαθηήξαο θόκκα (,). Αλ ν πξώηνο ραξαθηήξαο είλαη θόκκα, ελλνείηαη ε θελή ζπκβνινζεηξά. H εληνιή ech x{a,b} είλαη ηζνδύλακε κε ηελ ech xa xb. H εληνιή cp file.txt{,-save} είλαη ηζνδύλακε κε ηελ cp file.txt file.txt-save. Απνηειέζκαηα εληνιώλ Μπνξείηε λα ζπκπεξηιάβεηε ηα απνηειέζκαηα ηεο εθηέιεζεο κίαο εληνιήο, ρξεζηκνπνηώληαο ην $( ) ή ηα ``. Οη εληνιέο: ech "This machine is named: $(hstname)" ech "This machine is named: `hstname`" παξάγνπλ ηα ίδηα απνηειέζκαηα. Αξρηθά ζα εθηειεζηεί ε εληνιή hstname θαη ην απνηέιεζκά ηεο ζα αληηθαηαζηαζεί ζηελ εληνιή πνπ δώζακε. 14
Μαζεκαηηθέο πξάμεηο Οξηζκέλεο καζεκαηηθέο πξάμεηο κπνξνύλ λα εθηειεζηνύλ από ην θινηό. Με ρξήζε ηεο εληνιήο expr:, π.ρ. ech Area: `expr $X \* $Y`. Η ρξήζε ηεο expr δελ είλαη βνιηθή γηαηί έρεη απζηεξό ζπληαθηηθό. Με ρξήζε ηεο $[ ]: Οη εληνιέο ech Area: $[$X*$Y] ech Area: $[ $X * $Y ] και ech Area: $[ $X*$Y ] είλαη ηζνδύλακεο, γηαηί ην ζπληαθηηθό είλαη αλεθηηθό. Βαζηθέο πξάμεηο πνπ εθηεινύληαη από ην θινηό θαη νη ηειεζηέο ηνπο: πξόζζεζε (+), αθαίξεζε (-), πνιιαπιαζηαζκόο (*), δηαίξεζε (/), ύςσζε ζε δύλακε (**), ππόινηπν δηαίξεζεο (%). Σηε ζειίδα bash ηνπ man, ηκήκα ARITHMETIC EVALUATIONS, ππάξρεη πιήξεο θαηάινγνο ησλ αξηζκεηηθώλ πξάμεσλ πνπ κπνξεί λα εθηειέζεη ν θινηόο. Αθύξσζε ηεο ζεκαζίαο ησλ εηδηθώλ ραξαθηήξσλ Γηα λα αθπξώζνπκε ηελ ζεκαζία ησλ εηδηθώλ ραξαθηήξσλ θαη λα ηνπο ρεηξηζηνύκε σο ζπλεζηζκέλνπο ραξαθηήξεο πξέπεη λα ελεκεξώζνπκε ην θινηό. Ο ραξαθηήξαο backslash (\) Η εληνιή ech Yur cst: \$5.00 δελ ζα αλαδεηήζεη κεηαβιεηή (αθπξώλεηαη ε εηδηθή ζεκαζία ηνπ ραξαθηήξα $). Έζησ όηη ζέινπκε λα βξνύκε όια ηα αξρεία πνπ βξίζθνληαη ζηνλ ηξέρνληα θαηάινγν θαη ην όλνκά ηνπο μεθηλάεη από file*. Αλ εθηειέζνπκε ηελ εληνιή: find file* ν θινηόο ζα καο επηζηξέςεη όια ηα αξρεία ησλ νπνίσλ ην όλνκα αξρίδεη κε "file". Δκείο όκσο ζέινπκε λα επηζηξαθνύλ κόλν ηα αξρεία ησλ νπνίσλ ην όλνκα αξρίδεη κε "file*". Γηα λα βξνύκε απηό πνπ ςάρλνπκε πξέπεη λα δώζνπκε ηελ εληνιή σο find file\** Μνλά θαη δηπιά εηζαγσγηθά Οξηζκέλεο θνξέο ζέινπκε λα αθπξώζνπκε ηελ εηδηθή ζεκαζία πνιιώλ ραξαθηήξσλ ζηε ζεηξά, π.ρ. ζηελ εληνιή ech \*\*\* SALES \*\*\* 15
είλαη πην βνιηθό (θαη πην ζσζηό) λα ρξεζηκνπνηήζεηε ηα κνλά ή ηα δηπιά εηζαγσγηθά. Τα κνλά εηζαγσγηθά αθπξώλνπλ ηελ εηδηθή ζεκαζία όισλ ησλ ραξαθηήξσλ. Τα δηπιά εηζαγσγηθά αθπξώλνπλ ηελ εηδηθή ζεκαζία όισλ ησλ ραξαθηήξσλ εθηόο από ηνπο $, $(), $[], `, \,!. Σε πνιιέο πεξηπηώζεηο ε ρξήζε κνλώλ ή δηπιώλ εηζαγσγηθώλ παξάγεη ηα ίδηα απνηειέζκαηα. Σπλδπαζκνί πιήθηξσλ γηα ηε γξακκή εληνιώλ <Ctrl+a>, κεηαθίλεζε ζηελ αξρή ηεο γξακκήο <Ctrl+e>, κεηαθίλεζε ζη ηέινο ηεο γξακκήο <Ctrl+u>, δηαγξαθή κέρξη ηελ αξρή ηεο γξακκήο <Ctrl+k>, δηαγξαθή κέρξη ην ηέινο ηεο γξακκήο 16