Download - 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