wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

Σχετικά έγγραφα
Shell Scripts: loops / if / test

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 9o ΕΡΓΑΣΤΗΡΙΟ

Μερικές άλλες χρήσιμες εντολές

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Μερικές άλλες χρήσιμες εντολές

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Λειτουργικά Συστήματα

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εργαστήριο 6 Ασκήσεις: To Εργαλείo Ωφελιμότητας Awk Προγραμματισμός Κελύφους Bash

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Λειτουργικά Συστήματα. Shell Programming

Εισαγωγή στα Λειτουργικά Συστήματα

1st exercise of work2 - REMARKS

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Work12 REMARKS script file lab10 ask1-5 tabbing, ls2, urlparse, times, dates_correct

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

Αβδέλαρου Κωνσταντίνα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Εισαγωγή στα Λειτουργικά Συστήματα

Επαναληπτικές Ασκήσεις

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Εργαστήριο 4: Εργαλεία Συστήματος UNIX. Διδάσκων: Γιώργος Χατζηπολλάς. Στο εργαστήριο θα μελετηθούν: Εργαστηριακή Άσκηση 2 Παραδείγματα χρήσης awk

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 8ο Εργαστήριο

ΜΑΘΗΜΑ: ΕΙΑΓΩΓΗ ΣΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 10o ΕΡΓΑΣΤΗΡΙΟ

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

Εισαγωγή στα Λειτουργικά Συστήματα

Λειτουργικά Συστήματα - Εργαστήριο 6. 6ο Εργαστήριο. Συμπίεση αρχείων Χρήση ειδικών χαρακτήρων στην γραμμή εντολών. Χρήστες και Ομάδες Χρηστών

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ I. 1. Εισαγωγή 3 ΠΡΟΛΟΓΟΣ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Shell Scripts. $ friend=nikos $ echo $friend. $ set grep -n friend. [^a-z] π.χ. echo rm??ee*.txt [1] Nikos

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Λειτουργικό σύστημα Unix

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

Linux με τη χρήση κονσόλας

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Λειτουργικά Συστήματα - Εργαστήριο 4. 4ο Εργαστήριο

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Τυπικές χρήσεις της Matlab

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

Εντολές Διαχείρισης Αρχείων στο Λειτουργικό Σύστημα UNIX. Δημιουργία Αρχείων. Η Εντολή cat. Παράδειγμα Δένδρου Συστήματος Αρχείων

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Λειτουργικά Συστήματα

Mε την ονομασία Unix ή μάλλον Unix-like αναφερόμαστε

Δίκτυα Η/Υ στην Επιχείρηση

Διάλεξη 7 Εργαλεία Ωφελιμότητας Unix: Αwk

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 3o ΕΡΓΑΣΤΗΡΙΟ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

$ vi pass Κλήση του vi για το αρχείο pass. $ vi pass. :wq

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Εντολές Διαχείρισης Αρχείων στο Λειτουργικό Σύστημα UNIX

Βασικές εντολές του Unix-Linux

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python


Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Είσοδος/Έξοδος (I/O) Παράδειγμα Δένδρου Συστήματος Αρχείων. Ανακατεύθυνση Εισόδου/Εξόδου και Διασωλήνωση στο Λειτουργικό Σύστημα UNIX

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης

Διάλεξη 9 Προγραμματισμός Κελύφους

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

7ο Εργαστήριο - Ο φλοιός Bash και η διαμόρφωση του

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 2

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Μεταβλητές τύπου χαρακτήρα

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

2.Shell, users, groups και privilegies

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Προγραµµατισµός 2 The shell

Σενάρια φλοιού (Shell scripts)

Κεφάλαιο 10 Διαχείριση Αρχείων και Καταλόγων

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Transcript:

Τελευταίες σημειώσεις - 2016 Μεταβλητές Βάζουμε μεταβλητές πχ για πιο ευκρινές πρόγραμμα (προτιμήστε μικρά γράμματα και όχι ονόματα εντολών) πχ. filename="$1" (αποφύγετε το file="$1" υπάρχει εντολή file και το FILENAME="$1" ) Μην αφήνετε κενά πριν και μετά το = 1) a=date echo $a date 2) a=`date` echo $a Tue May 24 09:31:41 EEST 2016 3) set $a echo $1 $2 $4 Tue May 09:31:41 H ανάκτηση της τιμής μιας μεταβλητής γίνεται με $ π.χ. echo "$PWD $a" και την εσωκλείω σχεδόν πάντα σε "" π.χ. "$1" εκτός αν είναι αριθμός π.χ. n=3; echo $n ή αν θελω να την σπάσω με την set π.χ. set $a κτλ. Πράξεις με μεταβλητές αριθμούς (με πολλούς τρόπους..) π.χ. n=3; echo $[n+5] 8 Εντολή wc -l Mπορώ να μετρήσω πόσες γραμμές έχει ένα αρχείο π.χ. το file1 : vassik@aetos:~/work$ cat file1 wc -l 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : vassik@aetos:~/work$ finger wc -l 8 Ο διαχωριστής μεταβλητών ορίζεται στο IFS ( \t\n) Aν θέλω στο σκριπτάκι τον αλλάζω π.χ.: d="09:31:41" ; IFS=":" ; set $d echo $2 31 και μπορώ να βάλω το αποτέλεσμα σε μεταβλητή ώστε να κάνω πράξεις ή έλεγχο : ή vassik@aetos:~/work$ wc -l <file1 10 vassik@aetos:~/work$ lines=`finger wc -l ` ή vassik@aetos:~/ work$ echo $[lines -1] 7 if [ $lines -lt 11 ] ; then echo "There are.. " fi Εντολή tr a-z A-Z Mπορώ να γράψω με κεφαλαία ένα αρχείο π.χ. το file1 : vassik@aetos:~/work$ cat file1 tr [:lower:] [:upper:] HTTP://WWW.IT.TEITHE.GR/KERVEROS/~DIPLOMAT/INDEX.HTML HTTP://WWW.DEITEL.COM/~BOOKS.CGI/OS3E/ HTTP://WWW.PARINUX.ORG/PIPERMAIL/LINUX/2001JUNE/016876.HTML Ή vassik@aetos:~/work$ tr a-z A-Z<file1 HTTP://WWW.IT.TEITHE.GR/KERVEROS/~DIPLOMAT/INDEX.HTML HTTP://WWW.DEITEL.COM/~BOOKS.CGI/OS3E/ HTTP://WWW.PARINUX.ORG/PIPERMAIL/LINUX/2001JUNE/016876

ή να γράψω με κεφαλαία το αποτέλεσμα μιας οποιαδήποτε άλλης εντολή π.χ. της ls : vassik@aetos:~/work$ ls -lt tr a-z A-Z TOTAL 2064 DRWXRWXRWX 9 VASSIK CONIT 4096 MAY 2321:49 ONLINE DRWXR-XR-X 2 VASSIK CONIT 4096 MAY 2321:41 WORK10 -RWXR-XR-X 2 VASSIK CONIT 1268 MAY 2320:42 CHECK.SH και tr -s " " για να μετατρέψω τα πολλαπλά κενά, που δίνει μια εντολή σε ένα κενό, π.χ. η ps : vassik@aetos:~/work$ ps -ef tr -s ' ' root 5526 1860 0 09:11? 00:00:00 sleep 60 iliou 5538 6427 76 09:11? 00:00:00 [php-cgi] <defunct> vassik 5541 25416 0 09:11 pts/1 00:00:00 ps -ef Αυτό κυρίως σε συνδυασμό με το cut (για μια στήλη ή για την τελευταία) vassik@aetos:~/work$ ps -ef tr -s ' ' cut -d" " -f 8- /sbin/klogd -x /usr/sbin/inetd pop3-login /usr/sbin/apache2 -k start Ζητώ την 8 η και στήλη και μετά με 8- για να πάρω την στήλη με την εντολή Εντολή cut -f8 Εμφανίζω ένα ή περισσότερα πεδία (-field) Μπορώ να αλλάξω τον διαχωριστή των πεδίων (-delimeter) ls -l tr -s ' ' cut -d ' ' -f8 21:49 11:30 10:06 ls -l tr -s ' ' cut -d ' ' -f8 cut -d':' -f1 21 11 10 Aφού βγάλω τα πολλά κενά από την ls ζητώ (-f8) την 8 η στήλη, με την ώρα και με διαχωριστή (-d" ") το κενό. Mετά ξαναλλάζω διαχωριστή και βάζω -d':' για να πάρω την 1 η στήλη-ώρα (hh) ** Ότι δεν θέλουμε (επικεφαλίδες εντολών) το αφαιρούμε, π.χ. την 1 η γραμμή της ls -l ( total 2068 ) ls -l egrep -v '^total' Eντολή sort -k5 Ταξινόμηση αλφαβητική Μπορώ να αλλάξω το κλειδί (-key) της ταξινόμησης καθώς και τον διαχωριστή των πεδίων (-t) cat /etc/passwd sort -t":" -k5 konadam:x:1319:1044:adamidis Konstantinos:/home/student/x0405/konadam:/bin/bash adamidis:x:1337:1000:adamidis Panagiotis:/home/staff/it/adamidis:/bin/bash chagapid:x:1531:1066:agapidis Charalampos:/home/student/x1516/chagapid:/bin10:06

Eντολή uniq -c Για να βρώ και να μετρήσω πόσες φορές επαναλαμβάνεται ένα αλφαριθμητικό Προηγείται το sort ps aux egrep -v '^USER' cut -d' ' -f1 sort uniq -c 4 vlainidi 10 www-data 1 zbourtzo Eντολή sed Για να βρώ και να μετρήσω ποιο αλφαριθμητικό εμφανίζεται περισσότερες φορές Προηγείται και έπεται το sort ps aux egrep -v '^USER' cut -d' ' -f1 sort uniq -c sort -n tail -1 211 root Eντολή sed -r Για να μην εμφανίσω μια γραμμή (ή περισ/ρες ) ps sed '1d' 1607 pts/1 00:00:00 ps 1608 pts/1 00:00:00 sed 25416 pts/1 00:00:01 bash Για να μην εμφανίσω μια στήλη (ή περισ/ρες ) - αντικατάσταση στήλης με κενό ps sed 1d sed -r 's/^[^:]+:..:.. //' ps sed sed bash sed -r 's/pattern/αντικατάσταση/' μπορείτε να δοκιμάζετε πρώτα το pattern με egrep --color π.χ. Για να εμφανίσω μια στήλη πολλές φορές - με buffers \1 \1 \1 ps sed 1d sed -r 's/^([ 0-9]+ )/\1 \1 \1/' Για εναλλαγή στηλών με buffers \1 \2 κτλ. ps sed 1d sed r 's/^([^:]+:)(..):(..) /\1\3:\2 /' 1 2 3 Kαλή Επιτυχία.

Τελευταίες σημειώσεις - Παλαιοτέρων ετών test [ ] #! /bin/bash # SXOLIO if test $# -eq 0 then echo "Give arguments pls " 1>&2 exit 1 fi ΙΔΙΑ #! /bin/bash # SXOLIO if [ $# -eq 0 ] then echo "Give arguments pls " 1>&2 exit 1 fi Αν το πλήθος των ορισμάτων ισούται με 0 Μήνυμα στη έξοδο λαθών 1>&2 Εξοδος από το πρόγραμμα Αν το πλήθος των ορισμάτων ΔΕΝ ισούται με 6 if [ $# -ne 6 ] test ή [ ] Αν το πλήθος των ορισμάτων > 3 : if [ $# -gt 3 ] -eq -ne -gt -lt Αν το 1 ο όρισμα δεν είναι αρχείο : if [! -f "$1" ] -f -d -s Αν το 3 ο όρισμα δεν είναι φάκελος: if [! -d "$3" ] =!= Συνδυαστικοί έλεγχοι με -a(and) και -ο(οr)(κενά πριν και μετά) while test $a!= y -a $a!= n ελέγχει αν η μεταβλητή a δεν είναι y,n. αριθμοί αρχεία strings ΜΕ KENA π.χ. [ $# -eq 0 ] κενό πριν/μετά από τα : [ ] -eq Προσοχή στα ΚΕΝΑ, μπαίνουν ΠΡΙΝ και ΜΕΤΑ από κάθε ΤΕΛΕΣΤΗ. Προσοχή το!= είναι ο τελεστής ανισότητας δυο strings [ $a!= $b ] O τελεστής ανισότητας! ΔΕΝ πρέπει να κολλάει [! -f "$1" ] Aυτός είναι τελεστής δεν χωρίζουμε το! από το = ΧΩΡΙΣ ΚΕΝΟ Στην ανάθεση τιμής σε μεταβλητή δεν μπαίνει κενό ΠΡΙΝ ΚΑΙ ΜΕΤΑ ΤΟ ΙΣΟΝ = π.χ. αριθμητικές πράξεις a=3 b=$(($a+1)) ή b=$((a+1)) ή b=`expr $a + 1 ` ή b=$[$a+1] ΜΗΝΥΜΑΤΑ Τα μηνύματά σας να είναι τα κατάλληλα πάρτε παράδειγμα από τις ίδιες τις εντολές unix Αν πχ. δώστε την εντολή copy χωρίς ορίσματα, ή με ένα όρισμα μόνο : vassik@aetos:~ $ cp cp: missing file operand vassik@aetos:~ $ cp filea Try `cp --help' for more information. cp: missing destination file operand after `filea' Try `cp --help' for more information.

Τα ανάποδα εισαγωγικά ` ` προκαλούν εκτέλεση εντολής χωρίς όμως εμφάνιση στην οθόνη (κανονικό output) d=`date` ; με echo "$d" Wed Jun 1216:53:24 EEST 2013 εμφανίζει την ημερομηνία Η μεταβλητή d έχει το αποτέλεσμα της εντολής lines=`cat myfile wc -l` Η μεταβλητή lines ισούται με το πλήθος των γραμμών του αρχείου myfile echo "$lines" (προσοχή πάντα την μεταβλητή μέσα σε " ") Τo /dev/null entoli 1>/dev/null 2>&1 Στην παραπάνω εντολή, το πρώτο μέρος entoli 1>/dev/null ανακατευθύνει την έξοδο της εντολής από το stut στο /dev/null αρχείο το οποίο είναι κάτι σαν μια «τρύπα χωρίς πυθμένα" στο Linux, ότι πάει εκεί ποτέ δεν έρχεται πίσω. Αυτό είναι χρήσιμο όταν θέλω να ελέγξω κάτι π.χ. if test entoli αλλά δεν θέλω να δω το αποτέλεσμά του μόνο να το κρίνω. Το >& δηλώνει ανακατεύθυνση ενός stream σε άλλο stream µε fd 0:stdin, 1:stut 2:stderr if echo "$a" egrep '[^0-9]' 1>/dev/null 2>/dev/null ελέγχει αν η μεταβλητή a έχει ένα χαρακτήρα που δεν είναι ψηφίο (δηλ. αν η a δεν είναι αριθμός ) π.χ. αν η μεταβλητή a είναι π.χ. 3ma4, τότε το 3ma45 θα τυπωθεί και αυτό δεν το θέλουμε. Τo $? Αν η εντολή επιτύχει το "exit status" της $? είναι 0 αλλιώς είναι διάφορο του 0. vassik@aetos:~$ echo "MHNYMA" MHNYMA vassik@aetos:~$ echo $? 0 vassik@aetos:~$ echooooo "MHNYMA" -bash: echooοοο: command not found vassik@aetos:~$ echo $? 127 Το "exit status" της τελευταίας εντολής που εκτελέστηκε (μεταβλητή μιας χρήσης) Μια σωστή εντολή (π.χ. echo MHNYMA ) επιστρέφει μηδέν Στο πρόγραμμά μας για τα λάθη λέμε exit 1 exit 2 κτλ. Το exit 0 σημαίνει εκτελέστηκε σωστά (αλλά και το echo.. επιστρέφει μηδέν) Όταν τo exit χρησιμοποιείται xωρίς νούμερο επιστρέφεται το exit code της εντολής ($?) που εκτελέστηκε τελευταία. for Το i παίρνει τιμές από for i in "$@" echo "$i" ne την λίστα των oρισμάτων που δίνονται με την εντολή (shell script) for i in * echo "$i" ne Οι μεταβλητές που χρησιμοποιούμε να είναι σε διπλά " π.χ. echo "$i" οντότητες (αρχεία, directories,..) που βρίσκονται στο τρέχοντα φάκελο for i in "$1"/* echo "$i" ne οντότητες στο φάκελο που αντιπροσωπεύει η $1

while i=10 while [ $i -ne 0 ] i=`expr $i - 1` ne Το loop επαναλαμβάνεται μέχρι η μεταβλητή i να γίνει 0. Aνακατεύθυνση εντολής >, >>, <, << vassik@aetos:~$ head -4 "$1" > newfile vassik@aetos:~$ ls -la >> newfile while read line echo "$line" ne < "$1" > overwrite >> append Ανάγνωση του αρχείου $1 και εμφάνιση κάθε γραμμής του set Η εντολή set αν δοθεί με όρισμα μια μεταβλητή, «σπάει» την μεταβλητή σε πεδία π.χ. vassik@aetos:~$ a="h SET THA TO KANEI 7 PEDIA" vassik@aetos:~$ set $a vassik@aetos:~$ echo $1 $2 $3 $4 $5 H SET THA TO KANEI Προσοχή: Αν απαιτείται σε ένα πρόγραμμα να χρησιμοποιήσετε έτσι την set, Να μην χάσετε τις μεταβλητές του προγράμματος ne <"$filename" Η μεταβλητή IFS (Internal Field Separator) περιέχει τους διαχωριστές των λέξεων π.χ. το κενό, το tab κτλ. O διαχωριστής μπορεί να αλλάξει στο κέλυφος π.χ. αν θέλαμε να ήταν το : θα γράφαμε IFS=":" cut Η εντολή cut εμφανίζει κάθετα κομμάτια από ένα αρχείο (με διαχωριστή στηλών το tab). cut -d ":" -f 5 /etc/passwd έτσι αλλάζω διαχωριστή : και παίρνω το 5 ο πεδίο του αρχείου (ονοματεπώνυμο). Όταν οι στήλες χωρίζονται με πολλά κενά, μπορούν να αφαιρεθούν με tr π.χ. ls -l tr -s " " cut -d " " -f 9 έτσι αλλάζω διαχωριστή σε κενό και παίρνω το 9 ο πεδίο του αρχείου (όνομα αρχείου/φακέλου). uniq uniq -c uniq -u sort στην αρχή κάθε γραμμής, ένας αριθμός δηλώνει πόσες φορές εμφανίζεται η ίδια γραμμή εμφανίζει μόνον εκείνες τις γραμμές που δεν επαναλαμβάνονται sort -r -n -f file1αντιστροφή λειτουργίας/σορτάρισμα αριθμών/αγνοεί πεζά-κεφαλαία sort -k 2 file1 σορτάρισμα 2 ης στήλης (με διαχωριστή στήλης το κενό) sort -t ":" αλλαγή διαχωριστή στήλης σε : tr tr -s " " < file1 μετατρέπει τα συνεχόμενα κενά, σε ένα κενό tr ":" " "< file1 μετατρέπει τo :, σε ένα κενό διαχωριστής των λέξεων είναι το κενό filename="$1" while read line set $line echo $1 $3 $2