01 tk2123 - pemrograman shell-2

Post on 15-Apr-2017

517 views 2 download

Transcript of 01 tk2123 - pemrograman shell-2

TK2123 Pemrograman Shell Semester Genap 2014/2015

TASS, Bandung 2015

www.tass.telkomuniversity.ac.id

Hanya dipergunakan untuk kepentingan pengajaran di lingkungan Applied Science School – Telkom University

Kajian 1 – Dasar Pemrograman Shell

Aturan Perkuliahan Kehadiran 16 pekan ( 13x kuliah + 3x assessmen ) 1 pekan 2x pertemuan (teori + exercise) 32

pertemuan Hadir > 24 pertemuan

Presensi:

1. RFID card, dan 2. Tanda tangan

Keterlambatan Max 15 menit

Tugas / praktek / kuis : 30% Assessmen 1 : 20%-30% Assessmen 2 : 20%-30% 70% Assessmen 3 : 20%-30%

Penilaian

mahasiswa dapat membuat program yang mampu memanipulasi, memonitoring sistem operasi dan sumber daya komputer berbasis Linux dengan memanfaatkan Shell Programming

Standar Kompetensi

Burtch, K. O. (2004). Linuk Shell Scripting With Bash. (E. Finney, Ed.) Indianapolis, United States of America: Developer's Library.

Albing, C., Vossen, J., & Newham, C. (2007). Bash Cookbook (1st ed.). (L. R. Ruma, Ed.) United States of America: O'Reilly Media inc.

Quigley, E. (2005). Unix Shell by Example (4th ed.). (N. Regina, Ed.) United States of America: Prentice Hall.

Sobell, M. G. (2011). A practical guide to linux Command, editors, and Shell programming (2nd ed.). Boston, United States of America: Prentice Hall.

Referensi

Review OS (Linux) - History

Minix, 1987, Prof. Andrew S. Tanenbaum

Linux, 1991, Linus Torvalds

UNICS, 1969, AT&T

UNIX 6 ,1976

Linux Directory

Linux Command

http://linoxide.com/linux-command/linux-commands-cheat-sheet

$ date $ date +”Hari ini %A,%B %d, %Y.%nJam %r,%Z.”

$ cal 9 2006 $ cal -y

Waktu & Tanggal

$ whatis cal $ whatis date

$ date --help $ cal –help

$ man date $ man man $ man –f cal $ man –k date $ man –K date $ man 1 passwd $ man 5 passwd

$ info date $ info cal

Manual

$ ls /usr/share/doc $ pwd $ echo $HOME $ mkdir work $ cd /home/student/work $ cd .. $ cd -

Direktori

$ pwd $ cd . $ pwd $ cd .. $ pwd $ cd $ ls $ ls –a $ ls / $ ls –l /usr $ ls –ld /usr

Direktori

$ touch testfile $ ls /home/student $ cp ~student/tesfile /tmp/student_test_file $ ls /tmp $ cd /tmp $ ls –l file3.txt $ cp file3.txt ~/backups $ ls –l ~/backups $ cp file3.txt /home/student/backup/ $ ls –l /home/student/backup/ $ cp file3.txt /home/student/copies/

Manipulasi File & Direktori

$ ls ~student $ mv ~student/testfile /tmp/student_test_file

$ ls ~student $ ls /tmp/ $ mv procedure.txt.bak2 /home/student/procedures/

$ ls –l foo $ mv foo bar $ ls –l bar

Manipulasi File & Direktori

$ cd $ rm work $ rm –ri work $ mkdir work $ rmdir work

Manipulasi File & Direktori

$ file /usr/share/doc/HTML/bookmarks.html

$ file testfile $ cat /etc/profile $ cat /etc/passwd $ less /etc/profile $ more /etc/profile

Manipulasi File & Direktori

$ echo $HOME $ echo $PATH $ env $ printenv $ echo “Hello world” $ echo ‘Hello world’

Interaksi

Antarmuka interaksi user dan kernel sistem operasi berbasis command line.

Shell

Macam Shell Linux

# Melihat jenis shell yang ada $ cat /etc/shells <enter> # Menampilkan jenis shell aktif $ echo $SHELL <enter> # Menampilkan path aktif $ echo $PATH <enter>

Perintah Terkait Shell

#!/bin/bash #myinfo #membersihkan tampilan layar clear #menampilkan informasi echo -n "Waktu sistem :"; date echo -n "Nama :"; whoami echo -n "Banyak pemakai :"; who | wc –l echo -e "\ading" #end

nano latihan2a.sh shebang, sha-bang, hashbang, pound-bang,hash-exclam,hash-pling

#!/bin/bash echo "halo $LOGNAME ,senang bertemu denganmu" echo "direktori anda saat ini `pwd`“ echo "anda bekerja di mesin `uname –a`" #end LOGNAME merupakan variabel environtment

nano latihan2b.sh

Nama lokasi di memori yang dipakai untuk menyimpan data, bersifat temporer / sementara.

Variabel

1. Environment Variable 2. Positional Parameter 3. User Defined Variable

Macam Variabel

variabel yang dipakai khusus untuk proses kerja sistem. Contoh PS1, PS2, HOME, PATH, USER, SHELL, dll PS1 untuk men-set prompt shell pertama (default "\s-\v\$") PS2 untuk prompt pelengkap perintah, ditampilkan jika perintah dianggap belum lengkap oleh shell (default ">").

Environment Variable

#Simpan dulu prompt lama $ PS1LAMA=$PS1 <enter> #set prompt ke nilai baru $ PS1="Promptku!“<enter>

Latihan Set Prompt

#contoh pemakaian $ PS1="[\t][\u@\h:\w]\$"<enter>

Karakter backslash untuk prompt

Berikan perintah berikut $ env <enter>

List Variabel Environment

Buatlah shell script untuk menampilkan berbagai varibel yang ada. Jangan lupa berikan labelnya

Merupakan parameter yang digunakan shell untuk menampung argumen pemanggilan baik berupa argumen saat sebuah file dijalankan atau argumen yang dikirim ke subrutin.

Positional Parameter

#!/bin/bash #argumen1 echo $1 adalah salah satu $2 populer di $3 #end ./argumen1 joko siti asep

nano latihan2c.sh

#!/bin/bash #argumen2 clear echo "Nama script : $0"; echo "Banyak argumen : $#"; echo "Argumennya adalah: $*"; #end ./argumen 1 2 3 empat

nano latihan2d.sh

variabel yang didefinisikan sendiri oleh pembuat script. Ketentuan : dimulai dengan huruf atau underscore hindari pemakaian karakter spesial seperti

*,$,#,dll ... bersifat case sensitive

User Defined Variable

myos="linux" #double-quoted nama='pinguin' #single-quoted hasil=`ls -l`; #back-quoted angka=12

Contoh

#!/bin/bash nama="pinguin" kata='Hi $nama, apa kabar' #menyisipkan variabel nama echo $kata;

nano latihan2e.sh

#!/bin/bash hapus=`clear`; #hasil dari perintah ls -l disimpan di variabel isi isi=`ls -l`; #hapus layar echo $hapus #ls -l echo $isi;

nano latihan2f.sh

Adalah sebuah metode yang dilakukan untuk mencari, mengurangi, menghilangkan bug (error atau kesalahan) dalam program. Memakai command built in : set -x : display commands dengan

argument yang dieksekusi. set -v : menampilkan baris shell input

seperti yang tertulis.

Debugging

#!/bin/bash echo "hello ${LOGNAME}" echo "hari ini ${date}" echo "Mencoba melakukan debug pada script" w

nano latihan2g.sh

#!/bin/bash -x echo "hello ${LOGNAME}" echo "hari ini ${date}" echo "Mencoba melakukan debug pada script" w

nano latihan2ged.sh

Melihat identitas diri (nomor id dan group id)

$ id

Melihat tanggal dan kalender dari system

Melihat tanggal saat ini

$ date

Melihat kalender

$ cal 18 2008

$ cal -y

Melihat identitas mesin

$ hostname

$ uname

$ uname -a

Perintah-perintah

Melihat siapa yang sedang aktif Mengetahui siapa saja yang sedang aktif $ w $ who $ whoami Mengubah informasi finger $ chfn <user> Changing finger information for student. Password: Name[user wks]: <Nama Pengguna di wks> Office[]: Lab Pemrograman 2 Office Phone []: 2301 Home Phone []: 5947280 Finger information changed. Melihat informasi finger $ finger $ finger <user>

Menggunakan manual $ man ls $ man man $ man –k file $ man 5 passwd Menghapus layer $ clear Mencari perintah yang deskripsinya mengandung kata kunci yang dicari $ apropos date $ apropos mail $ apropos telnet Mencari perintah yang tepat sama dengan kunci yang dicari $ whatis date

Melihat tipe file

$ file

$ file *

$ file /bin/ls

Menyalin file

Mengkopi suatu file. Berikan opsi –i untuk pertanyaan interaktif bila file sudah ada.

$ cp /etc/group f1

$ ls –l

$ cp –i f1 f2

$ cp –i f1 f2

Mengkopi ke direktori

$ mkdir backup

$ cp f1 f3

$ cp f1 f2 f3 backup

$ ls backup

$ cd backup

$ ls

Melihat isi file Menggunakan instruksi cat $ cat f1 Menampilkan file per satu layar penuh $ more f1 $ pg f1 Mengubah nama file Menggunakan instruksi mv

$ mv f1 prog.txt $ ls Memindahkan file ke direktori lain. Bila argumen terakhir adalah nama direktori, maka berkas-berkas akan dipindahkan ke direktori tersebut. $ mkdir mydir $ mv f1 f2 f3 mdir Menghapus file $ rm f1 $ cp mydir/f1 f1 $ cp mydir/f2 f2 $ rm f1 $ rm –i f2

Mencari kata atau kalimat dalam file $ grep root /etc/passwd $ grep “:0:” /etc/passwd $ grep student /etc/passwd

Tugas resume perintah

$echo "$var" atau $echo $var atau $echo "${var} " atau $printf $var atau printf "%s\n" ${Var} // gunakan man printf untuk kontrol lainnya atau $echo ${var=nilai variabel} atau $echo ${var-nilai variable} atau ${var:=defaultvalue}

Variabel

$ echo ${coba:=test} $ kelas=PCE102 $ echo ${kelas:=PCE103} $ unset kelas $ echo ${kelas:=PCE103}

#!/bin/bash # welcome message echo "*** Backup Shell Script ***" echo echo "*** Run time: $(date) @ $(hostname)" echo # Definisi variabel BACKUP="/PCE10" NOW=$(date +"%d-%m-%Y") # Start backup echo "*** Dumping MySQL Database to $BACKUP/$NOW..." # Just sleep for 3 secs sleep 3 # And we are done... echo echo "*** Backup wrote to $BACKUP/$NOW/latest.tar.gz"

nano latihan2h.sh

$vech="shell" $printf "%s\n" $vech $printf "%1s\n" $vech $printf "%1.1s\n" $vech $printf "%1.2s\n" $vech $printf "%1.3s\n" $vech $printf "%10.3s\n" $vech $printf "%10.1s\n" $vech $no=10 $printf "%d\n" $no $big=5355765 $printf "%e\n" $big $printf "%5.2e\n" $big $sales=54245.22 $printf "%f\n" $sales $printf "%.2f\n" $sales

printf

$echo "Path is $PATH" ## $PATH akan dieksekusi atau $echo 'I want to print $PATH' ## PATH tidak dieksekusi

Quote

$FILE="/etc/resolv.conf" $echo "File is \"$FILE\" " FILE="/etc/resolv.conf" echo "File is \$FILE "

Backslash

read -p "Prompt" variable1 variable2 variableN Jika tidak ada opsi, masukan dibaca tanpa dipilah terlebih dahulu. Batas pembacaan adalah karakter <enter>

READ (Input dari keyboard)

Format READ

#!/bin/bash read -p "Enter your name : " name echo "Hi, $name. Welcome to Shell Programming Lab.!"

nano latihan2i.sh

#!/bin/bash # baca multiple input, 3 angka read -p "Bilangan pertama : " n1 read -p "Bilangan kedua : " n2 read -p "Bilangan ketiga : " n3 # tampilkan echo "Angka 1 - $n1" echo "Angka 2 - $n2" echo "Angka 3 - $n3"

nano latihan2j.sh

Untuk membatasi waktu penginputan nilai variable dapat diset waktunya dengan option –t .

Timeout inputan

nano latihan2k.sh

#!/bin/bash read -t 10 -p "Nama domain internet : " nama_domain echo $nama_domain

Penanganan form untuk password dengan menyembunyikan karakter yang dimasukkan dapat menggunakan option –s.

Inputan Password

#!/bin/bash read -s -p "Enter Password : " my_password echo echo "Your password - $my_password"

nano latihan2l.sh

String yang mengandung spasi, dapat dipisahkan dengan option -r

Multiple Values Split

#!/bin/bash nameservers="ns1.telu.cu ns2.telu.cu ns3.telu.cu" echo "$nameservers" printf "%s" $nameservers read -r ns1 ns2 ns3 <<< "$nameservers" echo "DNS Server #1 $ns1" echo " #2 $ns2" echo " #3 $ns2" printf "DNS Server #1 %s\n #2 %s\n #3 %s\n" $ns1 $ns2 $ns3

nano latihan2m.sh

#!/bin/bash echo "Surname\n" echo "First name: \c" read name1 name2 echo "Welcome to Tel U $name2 $name1"

nano latihan2n.sh

#!/bin/bash declare –i data1 data2 hasil read –p "Masukkan sebuah angka : " data1=$REPLY read –p "Masukkan angka lagi : " data2=$REPLY hasil=data1/data2 echo "hasil dari $data1 / data2 adalah $hasil" unset data1 data2 hasil

nano latihan2o1.sh

#!/bin/bash let data1 data2 hasil read –p "masukkan sebuah angka : " data1=$REPLY read –p "masukkan sebuah angka lagi : " data2=$REPLY ((hasil=data1-data2)) echo "hasil dari $data1 - $data2 adalah $hasil " unset data1 data2 hasil

nano latihan2o2.sh

Variabel yang menyimpan nilai lebih dari satu. Biasanya bertipe sama. Cara mendefinisikan : - declare –a - read –a - varX[index]

Array

#!/bin/bash declare –a nilai=(mhs1 mhs2 mhs3 mhs4) echo "isi dari array indek 0 adalah ${nilai[0]} " echo "isi array ke 1 adalah ${nilai[1]} " echo "jumlah indek adalah ${#nilai[*]}" echo "isi array adalah ${nilai[*]} " unset nilai

nano latihan2p.sh

#!/bin/bash declare –a x=(2 [3]=hai [8]=ali) echo "indek ke 0 berisi ${x[0]}" echo "indek ke 1 berisi ${x[1]}" echo "indek ke 3 berisi ${x[3]}" echo "indek ke 8 berisi ${x[8]}" echo "total indek adalah ${#x[*]}" unset x

nano latihan2q.sh

#!/bin/bash echo "Ketikkan min. 3 nama buah " read –a buah echo "nama buah : ${buah[*]}" echo "jumlah buah ${#buah[*]}"

nano latihan2r.sh

#!/bin/bash x[0]=3 x[5]=2 x[2]=4 echo "isi array adalah ${x[*]}" echo "jmlh indeks adalah ${#x[*]}" unset x

nano latihan2s.sh

#!/bin/bash declare –ai x x[0]=2 x[2]=3 x[3]=${x[0]}*${x[2]} echo "hasil ${x[0]} kali ${x[2]} = ${x[3]}" echo "jumlah indek array adalah ${#x[*]}"

nano latihan2t.sh

#!/bin/bash declare -ai larik larik[1,1]=1 larik[1]=10 larik[1,1,1]=4 echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}" echo "[1,1]= ${larik[1,1]}" echo "[1]= ${larik[1]}" echo "[1,1,1]=${larik[1,1,1]}"

nano latihan2u.sh

#!/bin/bash declare -ai larik larik[1,1]=1 echo "[1,1]= ${larik[1,1]}" larik[1]=10 echo "[1]= ${larik[1]}" larik[1,1,1]=4 echo "[1,1,1]=${larik[1,1,1]}" echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}"

nano latihan2v.sh

#!/bin/bash declare -ai larik larik[1,1]=1 larik[1,2]=2 larik[1,3]=3 larik[2,1]=20 larik[2,2]=40 larik[2,3]=60 echo "[1,1]=${larik[1,1]}" echo "[1,2]=${larik[1,2]}" echo "[1,3]=${larik[1,3]}" echo "[2,1]=${larik[2,1]}" echo "[2,2]=${larik[2,2]}" echo "[2,3]=${larik[2,3]}" echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}"

nano latihan2w.sh

#!/bin/bash declare -Ai larik larik[1,1]=1 larik[1,2]=2 larik[1,3]=3 larik[2,1]=20 larik[2,2]=40 larik[2,3]=60 echo "[1,1]=${larik[1,1]}" echo "[1,2]=${larik[1,2]}" echo "[1,3]=${larik[1,3]}" echo "[2,1]=${larik[2,1]}" echo "[2,2]=${larik[2,2]}" echo "[2,3]=${larik[2,3]}" echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}"

nano latihan2x.sh

#!/bin/bash declare -Ai larik larik[1,1]=1 larik[1,2]=2 larik[1,3]=3 larik[2,1]=20 larik[2,2]=40 larik[2,3]=60 echo –n "[1,1]=${larik[1,1]}" echo –n "[1,2]=${larik[1,2]}" echo "[1,3]=${larik[1,3]}" echo –n "[2,1]=${larik[2,1]}" echo –n "[2,2]=${larik[2,2]}" echo "[2,3]=${larik[2,3]}" echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}"

nano latihan2y.sh

#!/bin/bash declare -Ai larik larik[1.nim]=1 larik[1.nama]="Mbilung" larik[1.kelas]="SP1" larik[2.nim]=20 larik[2.nama]="Cangik" larik[2.kelas]="SP2" echo –n "[1.nim]=${larik[1.nim]}" echo –n "[1.nama]=${larik[1.nama]}" echo "[1.kelas]=${larik[1.kelas]}" echo –n "[2.nim]=${larik[2.nim]}" echo –n "[2.nama]=${larik[2.nama]}" echo "[2.kelas]=${larik[2.kelas]}" echo "Jumlah elemen larik ${#larik[*]}" echo "Isi larik ${larik[*]}"

nano latihan2z.sh