Selasa, 25 November 2014

LAPORAN PRAKTIKUM SISTEM OPERASI PRAKTIKUM 6-B << Pemrograman shell>>

Tanggal Kumpul
Nilai
Tanda tangan
Asisten
Dosen
 8 NOVEMBER 2014




LAPORAN PRAKTIKUM SISTEM OPERASI
PRAKTIKUM 6-B
<< Pemrograman shell>>
DISUSUN OLEH

NAMA                              : KOKO HENDRIAWAN
NIM                                  : 4611414039
PERTEMUAN                 : Ke-10

PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI SEMARANG
2014
PERCOBAAN 8 : INTRUKSI TEXT
1.      $ mahasiswa=ilkom
$ test $mahasiswa = ilkom
$ echo $?
$ test $mahasiswa = fmipa
$ echo $?
Tampilan outputnya :
Analisanya :

2.      $ vi masukdaftar.sh
Tampilang outputnya :
#!/bin/sh
#masukdaftar.sh
Echo –n “MAHASISWA = “
Read MAHASISWA
If test “$MAHASISWA” = ILKOM
Then
Echo “ Selamat datang mahasiswa $MAHASISWA”
Else
Echo “anda bukan mahasiswa ilkom, sorry!”
fi
Tampilan outputnya :
Analisisnya:
Di sini kita menggunakan perintah “if” dan “else”. Ini di gunakan untuk. Jika program mengalami kesalahan makan pertintah kedua yang akan mengerjakannya nanti.
3.      $ . masukdaftar.sh
[MAHASISWA : ILKOM]
$ . masukdaftar.sh
[MAHASISWA : MATEMATIKA]
Tampilan outputnya :
Analisanya :
Pada string pertama tidak ada pesan error dan berjalan semestinya karena pada perintah yang ada di dalam file masukdaftar.sh sudah berjalan dengan sempurna di jalankan dalam perintah pertama. Akan tetapi di string ke 2 terjadi ke gagalan ini di karenakan pada perintah di dalam file masukdaftar.sh jika perintah salah maka akan di jalankan pada perintah yang kedua.pada perintah ini seperti kita menggunakan nya untuk masuk seminar atau apapun itu jika benar dia termasuk dalam anggota itu maka programa akan mengatakan selamat datang tetapi jika sala makan program akan mengatakan anda buka anggota itu sendiri
4.      Modifikasi masukdaftar.sh dengan menggunakan notasi untuk test
#!/bin/sh
#masukdaftar.sh
Echo –n “MAHASISWA = “
Read MAHASISWA
If [ “$MAHASISWA” = ILKOM ]
Then
Echo “ Selamat datang mahasiswa $MAHASISWA”
Else
Echo “anda bukan mahasiswa ilkom, sorry!”
fi

Tampilan outputnya :
Analisanya :
Program masih bias berjalan tanpa ada test akan tetapi harus di tambahkan tanda buka dan tutup kurung”[ ]”.
5.      $ . masukdaftar.sh
[MAHASISWA : ILKOM]
$ . masukdaftar.sh
[MAHASISWA : IPA]
Tampilan outputnya :
Analisanya :
Perintah masih bias di jalankan dengan baik dan sucses walaupun di dalam file tidak ada test sebagai perintahnya.
PERCOBAAN 9 : NOTASI && DAN ||
1.      Bila file  masukdaftar.sh ada (TRUE), maka jalankan program berikutnya File masukdaftar.sh ada,  karena  itu  exit  status adalah TRUE, hasil operasi AND masih tergantung pada hasil eksekusi instruksi ke 2, dan dengan demikian instruksi echo akan dijalankan.
$ [ -f masukdaftar.sh ] && echo “masukdaftar.sh ada”
Tampilan outputnya :
Analisanya :
Jika ada file yang kita buat di dalam diktory maka perintah dapat di peroses.
2.      $ [ -f masuk.sh ] && echo “masuk.sh ada”

Tampilan outputnya :
Analisanya :
File masuk.sh  tidak ada, karena itu exit status adalah FALSE dan instruksi echo tidak dijalankan.
3.      $ [ -f biodata01.sh ] && . biodata01.sh
Tampilan outputnya :
Analisanya :
Pada percobaan kali ini Bila biodata01.sh  ada maka shell script dapat di jalankan.
4.      $ [ -f biodata01.sh ] || echo “Dieksekusi tidak ?”

Tampilan outputnya :
Analisanya :
Pada   File  biodata01.sh memang ada, karena itu exit status adalah TRUE, dan karena sudah TRUE maka instruksi echo tidak lagi dijalankan.
5.      $ [ -f lokasi.sh ] || echo “Di eksekusi tidak ?”
Tampilan outputnya :
Analisanya :
File  lokasi.sh tidak  ada,  karena  itu  exit  status  adalah  FALSE,  hasil  masih tergantung atas exit status instruksi ke dua, karena itu instruksi echo dijalankan.
6.      $ [ -f lokasi.sh ] || echo “maaf, lokasi tidak penah ada filenya untuk di eksekusi tidak?”
Tampilan outputnya :
Analisanya:
File  lokasi.sh tidak  ada,  karena  itu  exit  status  adalah  FALSE,  hasil  masih tergantung atas exit status instruksi ke dua, karena itu instruksi echo dijalankan.
PERCOBAAN 10
1.      $ i=10
$ test “$ieq 10
$Echo $?
$ i=10
$ test “$ieq 5
$Echo $?
$ i=10
$ test “$ieq 2
$Echo $?
$ i=10
$ test “$ieq 10
$Echo $?
Tampilan outputnya :
Analisanya;
Pada percobaan kali ini menggunakan operator dengan notasi test. Jika “I” sama dengan string maka sukses akan tetapi jika berbeda maka akan menghasilkan 1 berarti tidak berhasil di jalankan.
2.      $ i=10
$ [ “$ieq 10 ]
$Echo $?
$ i=10
$ [ “$ieq 2 ]
$Echo $?
$ i=10
$ [ “$ieq 10 ]
$Echo $?

Tampilan outputnya:
Analisanya :
Pada percobaan kali ini kita menggunakan operator dengan notasi [ ] (penganti notasi test). Disini hasilnya akan sama saja dengan percobaan 10 nomor 1 jika di jalankan. Perbedaannya Cuma menggunakan operator dengan notasi [ ].
PERCOBAAN 11 :
1.      Vi pembayaranwarnet.sh
#!/bin/sh
#pembayaranwarnet.sh
Echo –n “menit= “
Read menit
If [$menit –ge 0 –a $menit –le 15 ]
Then
BIAY=1000
Elif [ $menit –gt 15 –a $menit –le 30 ]
Then
BIAYA=2500
Else
BIAYA=3000
Fi
Echo “biaya = $BIAYA”
Tampilan outputnya :
Analisanya :
Membuat file yang berisi perintah untuk pembayaran warnet.
2.      . pembayaranwarnet.sh [menit = 10 ]
. pembayaranwarnet.sh [menit = 15 ]
.pembayaranwarnet.sh [menit =  30 ]
. pembayaranwarnet.sh [menit = 40 ]
Tampilan outputnya :
Analisanya :
Pada percobaan kali ini kita dapt membuat suatu program yang biasamembayar warnet degan menginput waktu yang berjalan makan dengan perintah yang ada di file pembayaran warnet akan ter output biaya yang harus di bayar.
PERCOBAAN 12 :
1.      $ expr 125 + 325
$ A=15
$ expr $A + 55
$ expr $A 10
$ expr $A * 2     (Ada Pesan Error)
$ expr $A \* 2
$expr $A / 6 +10
$ expr 17 % 5

Tampilan outputnya :
Analisanya :
Pada percobaan kali ini kita dapat menghitu berapa pun itu juka di jumlahkan akan tetapi harus di awali dengan expr dan di beri spasi antara agka dengan notasi “+” serta yang lainnya.
Pada saat perkalian terjadi error kenapa, karena antara angka dan tanda “*”  harus ada \ ini bagi perkalian untuk pembagian menggunakan tanda “/” serta spasi di antara semua angkanya .
2.      $ a=300
$ b=`expr $a + 30`
$echo $b
Tampilan outputnya :
Analisanya:
Pada percobaan kali ini kita dapat menghitungnya dengan mudah jika angka di ubah menjadi pemisalan jadi kita lebih dibuat untuk mempermudah menyelesaikan soal dalam menghitung sengan dijid angka yang banyak.
PERCOBAAN 13:
1.      $ vi keluar.sh
#!/bin/sh
If [ -f biodata01.sh ]
Then
Exit 3
Else
Exit -1
fi
Tampilan outputnya :
Analisanya :
Disini kita membuat file untuk keluar dengan menggunakan perintah if dan else.
2.      Menjalankan program
$ . keluar.sh
$ echo $?
Tampilan outputnya :
Analisanya :
Jika string 0 maka perintah yang ada di file keluar berhasil untuk di eksekusi.
PERCOBAAN 14:
1.      $vi cericek.sh
#!/bin/sh
#cek:cericek.sh
echo “1. User apa saja yang aktif”
echo “2. Tanggal berapa hari ini”
echo “3. Kalender bulan ini”
echo n  Pilihan :
read PILIH
case $PILIH in
1)      echo “Yang aktif saat ini”
who
;;
2)      echo “Tanggal hari ini”
date
;;
3)      echo “Kalender bulan ini”
cal
;;
*)   echo “Salah pilih !!”
;;
Tampilan outputnya :
Analisanya :
Pada file ini kita menggunakan perintah case.
2.      $ . cericek.sh
Pilih 1
$ . cericek.sh
Pilih 2
$ . cericek.sh
Pilih 3
$ . cericek.sh
Pilih
Tampilan otputnya :
Analisanya :
Pada percobaan ini perintah file menggunakan case .pada program case jika perintah memang sudah di input da nada makan akan di lakaukan prosesnya akan tetapi jika perintah tidah ada di dalam file akan di munculkan program yang menyatakan itu tidak ada di dalam pilihan.
3.      Bentuk lain dari case
$ vi yesorno.sh
#!/bin/sh
# Prog: yesorno.sh

echo n “jawab (Y/T) :
read jwb

case $jwb in
y | y | ya |ya |ya ) jwb=y ;;
t | t | tidak | tidak | tidak ) jwb=t ;;
esac

Tampilan outputnya :
Analisanya :
Ini adalah perintah case yang lainnya . variable darii ya adalah y dan variable tidak adalah t jika kita ingin memilihnya kita nanti.
4.      Jalankan file
$ . yesorno.sh
Analisnya :
Saat kita menjalankan file yesorno.sh maka kita akan di tujukan dua pilihan y atau t di mana y ya dan t tidak.
5.      Modifikasi yesorno.sh
#!/bin/sh
# Prog: yesorno.sh
echo n “jawab (y/t) :
read jwb
case $jwb in
[yy] | [yy] [ya] ) jwb=y ;;
[t t] | [tt] | tidak ) jwb=t ;;
esac
Tampilan outputnya :
Analisanya :
Tanda [] merupakan atau kalau gak pakai ini maka pakai yang itu maksud perintah tersebut.
6.      Jalankan file yesorno.sh
Tampilan outputnya :
Analisanya :
PERCOBAAN 15 :
1.      Vi namasiswa.sh
#!/bin/sh
#prog: namasiswa.sh
For NAMA in kus rizal hendi safit koko
Do
Echo "Nama mahasiswa ilkom : $NAMA”
done
Tampilan outputnya :
Analisanya:
paling utama disini adalah menggunakan perintah perulangan for dan untuk mengakhirinya menggunakan done.
2.      Jalankan program
$ . namasiswa.sh
tampilan outputnya :
Analisanya :
setelah dijalankan bisa kita ketahui bahwa perulangan akan dijalankan sampai nilai akhir dari perulangan tadi. kita membuat nilai variable ada 4 maka itu semua akan di ulang sampai 4 kali.
3.      Buatlah file  filediktory.sh  yang berisi konstruksi for dan wildcard,
$ vi filediktory.sh
#!/bin/sh
# Prog: filediktory.sh
for F in *
do
echo $F
done

Tampilan outputnya :
 
Analisanya:
 dalam perulangan ini isi dari variable adalah suatu perintah untuk menampilkan semua data (*). Perulangan akan dijalankan sampai semua data muncul.
4.      Jalankan program filediktory.sh 
$ . filediktory.sh 
Tampilan outputnya :
Analisanya :
Pada saat kita jalankan maka yang akan terjadi semua file akan tampil dan akan berhenti jika semua file sedah muncul.
5.      Modifikasi file  filediktory.sh,  program ini akan menampilkan  long list dari file yang mempunyai ekstensi lst
#!/bin/sh
# Prog: filediktory.sh
for F in *lst.sh
do
ls –l $F
done

Tampilan outputnya :
Analisanya :
perulangan diatas memiliki isi variable perintah menampilkan data dengan ekstensi sh, maka perulangan akan selesai jika semua data dengan ekstensi sh muncul semua.
6.      Jalankan file
$ . filediktory.sh
Tampilan outputnya :
Analisanya :
setelah kita jalankan maka data dengan ekstensi sh akan muncul semua dan apabila semuanya sudah muncul perulangan baru akan selesai.
PERCOBAAN 16 :
1.      Buatlah file klik.sh
$ vi klik.sh
#!/bin/sh
# Prog: klik.sh
PILIH=1
while [ $PILIH –ne 4 ]
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo “ Pilihan :  \c”
read PILIH
if [ $PILIH  –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”
Tampilan outputnya :
Analisanya :
setelah diamati kita akan mengetahui bahwa di dalam perulangan terdapat percabangan yaitu jika pilih bukan 4 maka kan menampilkan list dan inputan, lalu didalam setelah kita input maka akan masuk percabangan jika 4 maka akan selesai namun jika bukan 4 maka akan menjalankan perintah clear.
2.      Jalankan prog ram   klik.sh

$ . klik.sh
Tampilan outputnya :
Analisanya :
diatas kita menginputkan 4 maka program akan selesai, namun jika selain 4 maka akan menjalankan perintah clear.

PERCOBAAN 17
1.      Modifikasi file  klik.sh

$ vi klik.sh
#!/bin/sh
# Prog: klik.sh 
PILIH=1
while :
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo “ Pilihan : \c”
read PILIH
if[ $PILIH –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”
Tampilan outputnya :
Analisanya :
walaupun menggunakan : perulangan akan tetap jalan.
2.      Jalankan program  prog13.sh

$ . prog13.sh

Tampilan outputnya :
Analisanya :
masih sama bila kita menginput 4 maka program akan selesai, namun bila selain 4 maka akan menjalankan perintah clear.
3.      Buatlah file msuknilai.sh  yang berisi instruksi dummy untuk konstruksi if

$ vi masuknilai.sh
#!/bin/sh
# Prog: masuknilai.sh
echo –n “Masukkan nilai : “
read A
if [ $A –gt 100 ]
then
:
else
echo “OK !”
fi
Tampilan outputnya :
Analisanya :
diatas kita ketahui bahwa programnya menggunakan perintah percabangan if  yaitu jika variable A >= 100 maka tidak menampilkan apapun namun jika else akan muncul OK !.
4.      Jalankan file.
$ . masuknilai.sh
Tampilan outputnya :
Analisanya :
setelah dijalankan apabila kita memasukkan angka  >= 100 maka tidak akan muncul apapun, namun apabila kita menginput angka < 100 maka akan muncul teks OK !.
PERCOBAAN 18:
1.      Buatlah file  fungsi.sh 

$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( ) {
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo $?
Tampilan output:
Analisanya :
kita bisa membuat suatu fungsi dengan cara nama fungsi() { perintah dari fungsi } dan untuk memanggilnya kita hanya menuliskan nama fungsi tersebut.
2.      Jalankan program  fungsi.sh
$ . fungsi.sh
Tampilan outputnya:
Analisanya :
setelah kita jalankan maka akan muncul nilai dari fungsi tersebut.
3.      $ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
Honor=1000000
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
Tampilan outputnya :
Analisanya :
diatas kita membuat fungsi F1 yang memiliki varibabel honor dengan nilai 10000
4.       $ . fungsi.sh

Tampilan outputnya :
Analisanya:
kita bisa memanggil variable dari fungsi F1 dan bila sukses maka status exit adalah 0.
5.      Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh 

$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
local Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor “
echo  $?

Tampilan outputnya :
Analisanya :
dalam fungsi kita membuat variable yang besifat local.
6.      Jalankan
$ . fungsi.sh
Tampilan outputnya:
Analisanya :
walaupun berifat local variable tersebut tetap bisa dipanggil dari luar fungsi.





LATIHAN
1.      Buatlah program salin.sh yang menyalin file (copy  ) sebagai berikut :
salin.shfile -asal file -tujuan
Dengan ketentuan :
·   Bila file asal tidak ada, berikan pesan, salin gagal.
·   Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file
    tidak bisa disalin ke direktori
·   Bila file tujuan ada dan file biasa, beri pesan apakan file tersebut akan dihapus,
    bila dijawab dengan “Y”, maka copy file tersebut
·   Bila file tujuan belum ada, lakukan copy
Untuk mengambil nama file, gunakan parameter $1 dan $2. Bila jumlah parameter
tidak sama ($#) dengan 2, maka beri pesan exit =  - 1
Tampilan output :
Analisanya:
 tujuan program diatas adalah mengcopy suatu file namun apabila file tujuan adalah direktori atau file asal tidak ada maka akan muncul error. Untuk mencari suatu file kita bisa menggunakan –f dan untuk mencari direktori menggunakan –d, bila mengecek file bahwa itu bukan direktori kita bisa menggunakan ! untuk kebalikannya.
$1 dan $2 adalah determinan yang akan diinput.
Analisanya:
cara untuk menjalankannya adalah “. Salin.sh file_asal file tujuan”
Kenapa disamping karena tadi variable dimasukkan dalam determinan program.
2.      Buat program yang memeriksa nama direktori, jika parameter tersebut adalah
direktori, maka jalankan instruksi ls  – ld pada direktori tersebut. Namakan program
tersebut  checkdir.sh . Gunakan notasi [  - d NamaDirektori ] dan pilih logic al &&
atau || pada level shell.
Tampilan outputnya :
Analisanya :
program disini menggunakan perintah percabangan if dan menggunakan operator && dapat kita lihat bahwa kuncinya adalah jika yang kita input adalah direktori dan bukan file maka akan bernilai true.
Di jalankan
Tampilan outputnya:
Analisanya :
saat kita jalankan maka apabila kita input direktori yang tidak ada maka akan muncul error namun jika kita inputkan direktori yang ada maka akan bernilai true.
3.      Dengan shell script pph.sh, hitung PPH per tahun d engan ketentuan  sebagai berikut :
-   10 juta pertama PPH 15%
-   25 juta berikutnya (sisa) PPH 25%
-   Bila masih ada sisa, maka sisa tersebut PPH 35%
$vi pph.sh
Tampilan outputnya :
Analisanya :
program disini adalah menggunakan perintah percabangan if dan menggunakan operator bilangan bulat dan operator logical.

Jalankan
Tampilan outputnya :
Analisanya :
 Apabila kita pilih list dan nilainya sesuai dengan yang ada di list maka akan bernilai true dan apabila input list benar dan input gaji tidak sesuai maka akan muncul error.
4.      Buatlah program  myprog.sh yang memproses p arameter $1, nilai parameter harus
berupa string :
start
stop
status
restart
reload

$vi myprog.sh
Tampilan outputnya :
Analisanya :
program diatas mebggunakan perintah percabangan case in yang mempunyai 5 pilihan, dan inputan tersebuat adalah parameter.

Jalankan
Tampilan outputnya
Analisanya :
karena parameter jadi kita input langsung saat mengeksekusi program namun hanya menginput 1 nilai karena parameter yang tersedia hanyalah 1.
5.      Buat sebuah fungsi pada script  confirm.sh yang memberikan konfirmasi jawaban  Yes,
No atau C ontinue. Jika jawaban Yes, maka b eri nilai balik 0, No = 1 dan Continue = 2.
Tampilan outputnya :
Analisanya:
program diatas menggunakan perintah percabangan didalam perulangan jadi jika yang kita input tidak sesuai dengan yang tersedia maka perintah input akan selalu berulang, dan dilamny amempunyai suatu fungsi yang sifatnya local.

Jalankan
Tampilan outputnya:

Perintah selanjutnya :
Analisanya:
program diatas adalah suatu program yang digunakan untuk memanggil fungsi yang tadi sudah dibuat dalam file confirm.sh, jika benar maka akan bernilai true.

Di jalankan
Tampilan outputnya:
Analisanya :
saat dijalankan apabila kita menginput nilai yang sudah tersedia maka akan bernilai true dan jika kita menginput nilai yang tidak tersedia maka akan selalu berulang atau meminta untuk menginput kembali.

















KESIMPULAN

Shell script dibuat dengan editor teks (ASCII editor) dan umumnya diberikan ekstensi “.sh”.serta Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String. Variable harus dimulai dengan alfabet, disusul dengan alfanumerik dan karakter lain.  Variabel dapat ditulis dalam huruf kecil atau huruf besar atau campuran keduanya. Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read.
Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable spesial $?.  Indikasi yang diberikan adalah :
o Bila program berakhir dengan sukses, $? = 0
o Bila program berakhir dengan error,    $?     0
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi.
Ekspresi terdiri dari factor dan operator yang dipisahkan oleh spasi. Hasil test akan
memberikan nilai berupa status exit, yaitu 0 bila ekspresi sesuai, bila tidak maka hasil adalah <> 0
ada beberapa jenis Operator yaitu
·         Operator untuk test
·         Test untuk file dan direktori
·         LOGICAL && dan ||
·         Operator bilangan bulat
·         Operator Logical
Dalam pemrograman shell kita juga bisa menggunakan perintah percabangan if,case dan perulangan while in.selain itu kita juga bisa membuat sebuah fungsi yang nantinya bisa dipanggil oleh file lain.



1 komentar: