1st exercise of work2 - REMARKS #scriptfilename: script1apipinik #Prwta kanw NAME="Apostolos Pipinikas" kai meta dinw tin entoli echo $NAME alios den tha doulepsei NAME="Apostolos Pipinikas" echo Name: $NAME Σωστά γιατί η µεταβλητή ΝΑΜΕ δεν είναι µεταβλητή του συστήµατος (επειδή την βάζουµε µε κεφαλαία δεν σηµαίνει και ότι υπάρχει). Άρα πρέπει να την ορίσουµε. #scriptfilename: script1dstais echo $tree/home/student/x1516/dstais #ΟΧΙ Θέλει να εκτελέσει την εντολή που δίνει το δένδρο στο /home/student/x1516/dstais Η εντολή που έπρεπε να βάλει είναι tree /home/student/x1516/dstais # ζητώ να εκτελεστεί η εντολή tree µιας και η εντολή συντάσσεται tree φάκελος1 φάκελος2 Αν δώσει tree/home/student/x1516/dstais ΧΩΡΙΣ ΚΕΝΟ λάθος Αν δώσει $tree/home/student/x1516/dstais ΜΕΤΑΒΛΗΤΗ $tree δεν υπάρχει Tελικά η εντολή που έδωσε µε echo θα τυπώσει home/student/x1516/dstais #scriptfilename:script1igougoul echo Date: $(date).. echo Catalogue Structure: $(tree) #ΟΧΙ ΟΠΩΣ ΘΑΘΕΛΑΜΕ #scriptfilename: script1imanousi echo Today : $(date) # Θα µπορούσες στα σχόλια να το εξηγήσεις.. #scriptfilename: script1kgrigori echo Today : $(date) # Ωραία χρήση των µονών εισαγωγικών 1.H date δεν είναι µεταβλητή για να πούµε echo $date (αυτό δεν δίνει κάτι) Μπορώ όµως να πω echo -n "Date: " # βάζω " " για να µου πάρει και τα κενά µετά την : date # ζητώ να εκτελεστεί η εντολή date Γίνεται όµως να την εκτελέσω και το αποτέλεσµά της να το βάλω σε µια µεταβλητή π.χ. #βάζοντας την εντολή, µέσα σε ανάποδα εισαγωγικά ` `
d1=`date` # το αποτέλεσµα της date µπαίνει στην d1 # βάζοντας την εντολή, µέσα σε $() d2=$(date) # το αποτέλεσµα της date µπαίνει στην d2 #τυπώνω την d1 και στην άλλη γραµµή την d2 echo -e "$d1 \n $d2" 2. echo Catalogue Structure: $(tree) Θα περιµέναµε η εκτέλεση της εντολής $(tree) να δώσει το δένδρο ωραία δεν το δίνει όµως ωραίο ( τρώει τα newlines). Να κάποιες λύσεις : # ή κατευθείαν εντολή tree echo -n Catalogue Structure: tree #ή περικλείω το $(tree) σε διπλά " echo Catalogue Structure: "$(tree)" echo "Onoma: Konstantinos" echo "Username: " $USER echo "Date: " tr -d '\n'; date +%F #µπορείς να µην αλλάξεις γραµµή µε echo -n echo $HOMO echo $home # setting envvars export BROWSER=qutebrowser 1.Χρήση της tr(anslate) -d(elete) '\n', για να σβυστεί το newline, ώστε να µην αλλαχθεί η γραµµή. Η εντολή echo "Date: " tr -d '\n'; date +%F µπορεί να γραφτεί και echo -n "Date: " date +%F # το %F σηµάινει full date; δηλ. σαν %Y-%m-%d 2. Ωραία εκτύπωση ηµεροµηνίας που θα δώσει π.χ. 2016-03-08 3.Επίσης δοκίµασε 2 µη ορισµένες/ανύπαρκτες µετ/τές, την ΗΟΜΟ και την home 4. export, set and setenv είναι εντολές µε τις οποίες µπορούν να δοθούν τιµές σε µετ/τές του συστήµατος/environment variable. (Για να εξάγεται µεταβλητές µόνιµα, µπορείτε να προσθέσετε την επιθυµητή εντολή π.χ. export PATH="~/bin:$PATH" στα εξής start-up files : ~/.profile ~/.bash_profile /etc/profile ) echo User:lrigouts echo Today:06/03/2016 echo path:/home/student/x1516/lrigouts
echo terminal type: vt100 echo User:vkiosses echo Today:06/03/2016 echo path:/home/student/x1516/vkiosses echo terminal type:vt100 Στην άσκηση θέλουµε να εµφανίσουµε µεταβλητές του συστήµατος έτσι να έβαζες echo $PATH echo $TERM ή ακόµη καλύτερα µε κατατοπιστικό µήνυµα echo Τhe value of system variable path is $PATH script1ngrammen echo User: $USER echo Today: $DATE echo $TREE Μην παραλείπεις την 1 η γραµµή Tο USER είναι µεταβλητή συστήµατος Μεταβλητές συστήµατος µε όνοµα DATE και ΤREE δεν υπάρχουν, ενώ υπάρχουν οι εντολές date και tree echo User: $USER echo Today: #και αν το θες στην ίδια γραµµή echo -n "Today:" date tree #script1gpapad2 # A EIO!!! #scriptfilename: script1username script1ckaripia echo ===================== echo "name : " # κλείνεις τα εισαγωγικά " name=christos # και αλλάζεις γραµµή echo $name echo "user : user=ckaripia # κλείνεις τα εισαγωγικά ", αλλάζεις γραµµή $echo $user # δεν βάζεις $
echo "today is: date=12/3/2016 $echo $date #scriptfilename: script1ksianidi echo path: /home/student/x1516/ksianidi echo terminal type: vt100 #Zητούσε να βάλεις τις µεταβλητές δηλ. echo path: $PATH echo terminal type: $TERM EINAI /bin/bash,δεν έβαλες / #! bin/bash #scriptfilename: script1gmotsias echo SSH connection; $SSH CONNECTION ΚΑΝΕ ΤΟ ΑΡΧΕΙΟ ΣΟΥ ΕΚΤΕΛΕΣΙΜΟ ιόρθωσε το ; σε : και βάλε και _ Αλλιώς είναι σαν να δίνεις 2 εντολές: echo SSH connection $SSH CONNECTION Αλλά δεν υπάρχει εντολή $SSH αλλά η µεταβλητή $SSH_CONNECTION που την βλέπεις µε echo $SSH_CONNECTION #! /bin/bash #scriptfilename: script1vzafeiri #... echo?oday : 4/4/2016 #Βάλε Τ ΚΑΝΕ ΤΟ ΑΡΧΕΙΟ ΣΟΥ ΕΚΤΕΛΕΣΙΜΟ No comments for script1deligia script1npertsel script1pmalliot script1vlainidi Ακολουθεί η 2 η άσκηση για όλους
2st exercise of work2 - REMARKS #scriptfilename: script2apipiniik οκίµασε να το κάνεις (και) µε read a #scriptfilename: script2dstais a="5" echo pleyra a read a ίνεις τιµή a="5" και µετά ακολουθεί το read a, Τώρα το a θα πάρει την τιµή, που θα πληκτρολογήσουµε. #scriptfilename: sript2imanousi echo -n "Enter width" read a Για να µην κολλήσει βάζεις ή : ή/και κενό echo -n "Enter width: " #scriptfilename: script2 lrigouts echo 2: x=unix y=2016 #script2vkiosses H εντολή αυτή δεν θα σου δηµιουργήσει µεταβλητές- απλά θα τυπώσει 2: x=unix y=2016 Αν δηλ. αν µετά γράψεις echo $x δεν θα πάρεις κάτι Πρέπει να πεις x=unix echo $x µην βάλεις export, απλή ανάθεση κάνε πχ a=3.και να κάνεις την πράξη ώστε να βρεις και να εµφανίσεις το εµβαδόν script2vlainidi x=unix echo x Μην παραλείπεις την 1 η γραµµή, στοιχεία σου και σχόλια Το echo x θα τυπώσει x και όχι UNIX. Πρέπει να πεις echo $x script2pmalliot #Μην παραλείπεις την 1 η γραµµή, στοιχεία σου και σχόλια
#script2ngrammen #Ayto einai to 2o scriptaki echo exoume tin pleyra a i opoia exei diastasi $a # Πρέπει κάπως να τις δώσεις τιµή to embadon tou orthogoniou tha exei $a * $b = $E ΟΧΙ Μην παραλείπεις την 1 η γραµµή, και τα στοιχεία σου 1.Να δώσεις τιµή πρώτα στις µεταβλητές σου π.χ. a=5 echo exoume tin pleyra a i opoia exei diastasi $a 2. to embadon tou orthogoniou tha exei $a * $b = $E # δεν είναι εντολή Αυτό δεν είναι σωστό α) γιατί δεν είναι εντολή, λείπει το echo b) δεν γίνεται έτσι η πράξη αλλά π.χ. Ε=$[a*β] echo to embadon tou orthogoniou tha exei $E #script2gpapad2 Να κάνεις τα αρχεία σου εκτελέσιµα: chmod +x onomaarxeiou bash script2gpapad2 ΟΧΙ # Βγάλε αυτήν την γραµµή ή βάλτην σε σχόλια # αλλιώς θα τρέχει για πάντα Μην παραλείπεις την 1 η γραµµή, στοιχεία σου και σχόλια #scriptfilename: script1username script2ckaripia # Μην ξεχνάς να κλείνεις τα εισαγωγικά " # και να βάζεις 1 εντολή ανα γραµµή. # Αν θες 2 εντολες στην ιδια γραµµή αναµεσά τους βάζεις ; p.x. a=5 b=6 # OXI δεν γινεται ή θα βάλεις a=5; b=6 ή αλλιώς µια µια a=5 b=6 read a,b E=$[a*b] echo $E # ΜΙΑ ΜΙΑ ΕΝΤΟΛΗ #scriptfilename: script2ksianidi echo 1: export x y # BAZE MΙΑ εντολή /ανά γραµµή ή βάζε ανάµεσα τους ; πχ echo 2: x=unix y=2016 # x=unix ; y=2016 echo 3: export a=3 b=5 e=$ [a*b] #Μην αφήνεις κενό µεταξύ $[ ================================================================== No comments for script2kdeligia και script2ktoumpid.sh, script2vzafeiri