01 tk2123 - pemrograman shell-2

78
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

Transcript of 01 tk2123 - pemrograman shell-2

Page 1: 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

Page 2: 01   tk2123 - pemrograman shell-2

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

Page 3: 01   tk2123 - pemrograman shell-2

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

Penilaian

Page 4: 01   tk2123 - pemrograman shell-2

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

Standar Kompetensi

Page 5: 01   tk2123 - pemrograman shell-2

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

Page 6: 01   tk2123 - pemrograman shell-2

Review OS (Linux) - History

Page 7: 01   tk2123 - pemrograman shell-2

Minix, 1987, Prof. Andrew S. Tanenbaum

Linux, 1991, Linus Torvalds

UNICS, 1969, AT&T

UNIX 6 ,1976

Page 8: 01   tk2123 - pemrograman shell-2

Linux Directory

Page 9: 01   tk2123 - pemrograman shell-2

Linux Command

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

Page 10: 01   tk2123 - pemrograman shell-2

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

$ cal 9 2006 $ cal -y

Waktu & Tanggal

Page 11: 01   tk2123 - pemrograman shell-2

$ 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

Page 12: 01   tk2123 - pemrograman shell-2

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

Direktori

Page 13: 01   tk2123 - pemrograman shell-2

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

Direktori

Page 14: 01   tk2123 - pemrograman shell-2

$ 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

Page 15: 01   tk2123 - pemrograman shell-2

$ 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

Page 16: 01   tk2123 - pemrograman shell-2

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

Manipulasi File & Direktori

Page 17: 01   tk2123 - pemrograman shell-2

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

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

Manipulasi File & Direktori

Page 18: 01   tk2123 - pemrograman shell-2

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

Interaksi

Page 19: 01   tk2123 - pemrograman shell-2

Antarmuka interaksi user dan kernel sistem operasi berbasis command line.

Shell

Page 20: 01   tk2123 - pemrograman shell-2

Macam Shell Linux

Page 21: 01   tk2123 - pemrograman shell-2

# 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

Page 22: 01   tk2123 - pemrograman shell-2

#!/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

Page 23: 01   tk2123 - pemrograman shell-2

#!/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

Page 24: 01   tk2123 - pemrograman shell-2

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

Variabel

Page 25: 01   tk2123 - pemrograman shell-2

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

Macam Variabel

Page 26: 01   tk2123 - pemrograman shell-2

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

Page 27: 01   tk2123 - pemrograman shell-2

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

Latihan Set Prompt

Page 28: 01   tk2123 - pemrograman shell-2

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

Karakter backslash untuk prompt

Page 29: 01   tk2123 - pemrograman shell-2

Berikan perintah berikut $ env <enter>

List Variabel Environment

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

Page 30: 01   tk2123 - pemrograman shell-2

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

Positional Parameter

Page 31: 01   tk2123 - pemrograman shell-2

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

nano latihan2c.sh

Page 32: 01   tk2123 - pemrograman shell-2

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

nano latihan2d.sh

Page 33: 01   tk2123 - pemrograman shell-2

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

Page 34: 01   tk2123 - pemrograman shell-2

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

Contoh

Page 35: 01   tk2123 - pemrograman shell-2

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

nano latihan2e.sh

Page 36: 01   tk2123 - pemrograman shell-2

#!/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

Page 37: 01   tk2123 - pemrograman shell-2

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

Page 38: 01   tk2123 - pemrograman shell-2

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

nano latihan2g.sh

Page 39: 01   tk2123 - pemrograman shell-2

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

nano latihan2ged.sh

Page 40: 01   tk2123 - pemrograman shell-2

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

Page 41: 01   tk2123 - pemrograman shell-2

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>

Page 42: 01   tk2123 - pemrograman shell-2

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

Page 43: 01   tk2123 - pemrograman shell-2

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

Page 44: 01   tk2123 - pemrograman shell-2

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

Page 45: 01   tk2123 - pemrograman shell-2

$ 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

Page 46: 01   tk2123 - pemrograman shell-2

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

Page 47: 01   tk2123 - pemrograman shell-2

Tugas resume perintah

Page 48: 01   tk2123 - pemrograman shell-2

$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

Page 49: 01   tk2123 - pemrograman shell-2

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

Page 50: 01   tk2123 - pemrograman shell-2

#!/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

Page 51: 01   tk2123 - pemrograman shell-2

$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

Page 52: 01   tk2123 - pemrograman shell-2

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

Quote

Page 53: 01   tk2123 - pemrograman shell-2

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

Backslash

Page 54: 01   tk2123 - pemrograman shell-2

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)

Page 55: 01   tk2123 - pemrograman shell-2

Format READ

Page 56: 01   tk2123 - pemrograman shell-2

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

nano latihan2i.sh

Page 57: 01   tk2123 - pemrograman shell-2

#!/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

Page 58: 01   tk2123 - pemrograman shell-2

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

Timeout inputan

Page 59: 01   tk2123 - pemrograman shell-2

nano latihan2k.sh

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

Page 60: 01   tk2123 - pemrograman shell-2

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

Inputan Password

Page 61: 01   tk2123 - pemrograman shell-2

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

nano latihan2l.sh

Page 62: 01   tk2123 - pemrograman shell-2

String yang mengandung spasi, dapat dipisahkan dengan option -r

Multiple Values Split

Page 63: 01   tk2123 - pemrograman shell-2

#!/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

Page 64: 01   tk2123 - pemrograman shell-2

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

nano latihan2n.sh

Page 65: 01   tk2123 - pemrograman shell-2

#!/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

Page 66: 01   tk2123 - pemrograman shell-2

#!/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

Page 67: 01   tk2123 - pemrograman shell-2

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

Array

Page 68: 01   tk2123 - pemrograman shell-2

#!/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

Page 69: 01   tk2123 - pemrograman shell-2

#!/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

Page 70: 01   tk2123 - pemrograman shell-2

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

nano latihan2r.sh

Page 71: 01   tk2123 - pemrograman shell-2

#!/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

Page 72: 01   tk2123 - pemrograman shell-2

#!/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

Page 73: 01   tk2123 - pemrograman shell-2

#!/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

Page 74: 01   tk2123 - pemrograman shell-2

#!/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

Page 75: 01   tk2123 - pemrograman shell-2

#!/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

Page 76: 01   tk2123 - pemrograman shell-2

#!/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

Page 77: 01   tk2123 - pemrograman shell-2

#!/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

Page 78: 01   tk2123 - pemrograman shell-2

#!/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