Selasa, 11 Desember 2012

TUGAS PERTEMUAN 8

NAMA : Anggit Wiyatmoko

NIM     : 2011-83-036

Pemrograman Shell

Yaitu menyusun atau mengelompokkan beberapa perintah shell (internal atupun eksternal command) menjadi kumpulan perintah yang melakukan tugas tertentu sesuai tujuan penyusunnya. Kelebihan shell di linux dibanding sistem operasi lain adalah bahwa shell di linux memungkinkan kita untuk menyusun serangkaian perintah seperti halnya bahasa pemrograman (interpreter language), melakukan proses I/O, menyeleksi kondisi, looping, membuat fungsi, dsb. adalah proses - proses yang umumnya dilakukan oleh suatu bahasa pemrograman, jadi dengan shell di linux kita dapat membuat program seperti halnya bahasa pemrograman, untuk pemrograman shell pemakai unix atau linux menyebutnya sebagai script shell.
Dasar Pemrograman Shell

Dasar - Dasar Shell Linux - Dunia linux atau keluarga unix jelas sangat berbeda bila dibandingkan dengan system operasi lain seperti Microsoft Windows. Mereka yang terbiasa dengan windows , tentu akan mengalami kesulitan ketika berhadapan dengan linux.Anda harus mengetahui beberapa istilah yang ada di dalamnya , dan salah satunya adalah Shell. Istilah ini sangat umum diperbincangkan , tapi banyak juga yang belum memahami secara pasti. Padahal shell merupakan tempat konfigurasi dan menjalankan / mengoperasikan linux.

Memahami Dasar - Dasar Shell Linux


Distro linux telah dikembangkan oleh para developer untuk membuat linux semakin cantik. Tujuannya agar linux digemari dan open source semakin memasyarakat. Sayangnya , kecantikan window manager seperti KDE dan Gnome kadang membuat lupa para penggemar linux tentang keberadaan shell. Padahal shell tidak hanya ditujukan untuk para admin , tetapi juga bagi para pengguna linux tanpa kecuali. Kegunaan shell adalah sebagai berikut :
  1. Pemakaian interaktif.
  2. Untuk mengontrol session Linux.
  3. Contohnya : setdir , mail directory , dan starup file
  4. Pemrograman. 
  5. Linux shell menyediakan sekumpulan instruksi khusus yang dapat digunakan untuk membuat program shell script.

Tidak seperti Windows, di dalam Linux tidak ada ekstensi khusus untuk suatu nama file yang dapat dijalankan termasuk file script. Suatu file script dapat memiliki ektensi dan dapat juga tidak memiliki ektensi. File dapat dijalankan atau tidak tergantung dari permission file tersebut. Suatu file dapat dijalankan bila memiliki permission x
  1. Menjalankan Script
    Untuk menjalankan Script, perintahnya adalah
Quote:
$ sh [/path/]NamaScript
sh dapat diganti dengan bash atau csh, sesuai dengan shell yang akan digunakan.

Bila file script tersebut mempunyai atribut executable, maka untuk menjalankan script tersebut dapat dilakukan dengan perintah
Quote:
$ [/path/]NamaScript
  1. Membuat Script

    Baris pertama setiap script sebaiknya memiliki pernyataan sebagai berikut
Quote:
#!/bin/bash
Isi baris tersebut menunjukkan bahwa script yang dibuat seharusnya dijalankan pada lingkungan shell bash

Berikut adalah contoh script untuk menampilkan pesan:
Quote:
$ vi HelloWorld.sh

#!/bin/bash
echo "Hello World"
  1. Menggunakan Variabel
    1. Pemberian Nama Variabel
      Di dalam dunia pemrograman, variabel merupakan komponen penting yang digunakan sebagai tempat penyimpanan data yang akan diproses. Pemberian Nama Variabel tidak diperbolehkan menggunakan tanda baca ataupun spasi.

      Contoh yang benar
Quote:
NamaBahasa
Nama_Lengkap
NILAI
Contoh yang salah
Quote:
Nama Bahasa
Nama/Lengkap
    1. Operasi Assignment
      Untuk memberi nilai (mengisi data) ke dalam variabel, Kita bisa menggunakan tanda = (sama dengan). Contoh:
Quote:
NamaBahasa="Pascal"
Nama_Lengkap="Turbo Pascal"
Saat memberikan perintah assignment, tidak boleh ada spasi antara nama variabel dengan tanda sama dengan. Pemberian spasi akan menyebabkan variabel tersebut dianggap sebagai sebuah perintah.

Jika data yang dimasukkan bukan berupa angka (data untuk kalkulasi matematis), maka data tersebut harus diapit dalam tanda kutip ganda (") atau dengan tanda petik tunggal (').

Jika Kita ingin memasukan perintah-perintah Linux ke dalam variabel ini agar dapat dieksekusi, maka perintah tersebut harus diapit dengan tanda backquote (`).

Contoh
Quote:
NamaBahasa="Pascal"
Versi=7
AdaDiManaSekarang=`pwd`
Dalam kasus tertentu, assignment seperti contoh di atas tidak dapat digunakan, misalnya karena penggunaan karakter seperti wildcard seperti "*", sehingga tidak memungkinkan kita melakukan operasi aritmatika.
    1. Operasi Assignment dengan perintah Let
      Untuk itu, Kita bisa menggunakan perintah let sebagai pernyataan perintah untuk melakukan assignment. Contoh:
Quote:
let NamaBahasa="Pascal"
let x=100
let x=100+20
    1. Variabel Read Only
      Kadangkala Kita ingin agar variabel tersebut tidak boleh berubah isinya (constanta), maka variabel tersebut harus diberikan perintah readonly. Contoh penggunaannya
Quote:
NamaBahasa="Pascal"
readonly NamaBahasa
Jika Kita mengubah suatu variabel read only, maka akan terjadi kesalahan karena variabel tersebut tidak dapat diubah.
    1. Menampilkan Variabel
      Untuk menampilkan variabel, Kita dapat menggunakan perintah echo. Nama Variabelnya sendiri harus didahului dengan tanda $. Perintahnya
Quote:
echo $NamaVariabel
. Contoh penggunaannya:
Quote:
NamaBahasa="Pascal"
AdaDiManaSekarang=`pwd`

echo "Nama Bahasa Pemrograman yang digunakan "$NamaBahasa
echo "Lokasi direktori saat ini berada di "$AdaDiManaSekarang
Di atas telah disebutkan untuk data variabel dapat menggunakan tanda petik ganda (") dan tanda petik tunggal ('). Sebenarnya penggunaan tanda petik ini pada dasarnya adalah sama. Penggunaannya baru berbeda bila ada nama variabel di dalamnya. Contoh perbedaannya:
Quote:
NamaBahasa="Pascal"
echo "Isi Variabel NamaBahasa $NamaBahasa"
echo 'Isi variabel NamaBahasa $NamaBahasa'

maka hasilnya adalah
Isi Variabel NamaBahasa Pascal
Isi Variabel NamaBahasa $NamaBahasa
Terlihat bahwa isi variabel akan ditampilkan pada saat diapit dengan tanda petik ganda. Agar isi variabel tidak digunakan (sama dengan menggunakan tanda petik tunggal), maka kita harus menggunakan tanda "\". Contoh penggunaannya:
Quote:
NamaBahasa="Pascal"
echo "Isi Variabel NamaBahasa \$NamaBahasa"
  1. Menerima data dari standar input
    Untuk membuat script Kita menjadi interaktif, maka script tersebut haruslah dapat menerima input dari standar input (misalnya: keyboard). Untuk menerima input, gunakan perintah read, contoh penggunaanya:
Quote:
echo "Masukan Nama Bahasa Pemrograman Favorit"
read NamaBahasa
echo "Ternyata bahasa pemrograman favorit Anda adalah "$NamaBahasa
  1. Perintah expr
    Perintah expr merupakan perintah yang digunakan untuk melakukan suatu evaluasi suatu ekspresi. Contoh penggunaannya:
Quote:
echo "Test "
expr "Test "
echo 10 + 1
expr 10 + 1
expr 10+1

maka hasilnya adalah
Test
Test
10 + 1
11
10+1
Jadi dengan menggunakan perintah expr, bila operasi aritmetika memiliki spasi maka yang ditampilkan adalah hasilnya. Tetapi bila tidak memiliki spasi maka akan ditampilkan sebagai string.

Hasil dari perintah expr tidak disimpan ke dalam variabel, tetapi langsung ditampilkan ke dalam standar output.

Sedangkan hasil dari perintah let disimpan dalam variabel, tetapi tidak ditampilkan ke dalam standar output.

Jika hasil dari perintah expr ingin disimpan ke dalam variabel, maka Kita harus menggunakan operator brave yang diikuti dengan perintah expr atau echo untuk menampilkan isi variabel tersebut.

Contoh:
Quote:
y=`expr 10 + 1`
echo $y
expr $y

maka hasilnya adalah
11
11


Pemakaian Variabel

Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi program (runtime program) ataupun proses lain yang dilakukan sistem operasi. dalam dokumentasi ini saya membagi variabel menjadi 3 kategori:
  1. Environment Variable
  2. Positional Parameter
  3. User Defined Variable

Environment Variable

atau variabel lingkungan yang digunakan khusus oleh shell atau system linux kita untuk proses kerja system seperti variabel PS1, PS2, HOME, PATH, USER, SHELL,dsb...jika digunakan akan berdampak pada system, misalkan variabel PS1 yang digunakan untuk mengeset prompt shell pertama yaitu prompt tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang dimasukkan dianggap belum lengkap oleh shell (defaultnya ">"). anda dapat mengeset PS1 dan PS2 seperti berikut.
simpan dahulu isi PS1 asli system anda, sehingga nanti dapat dengan mudah dikembalikan
[anggit@linux$]PS1LAMA=$PS1
sekarang masukkan string yang diinginkan pada variabel PS1
[anggit@linux$]PS1="Hi ini Promptku!"
Hi ini Promptku!PS2="Lengkapi dong ? "
maka prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda ke prompt semula ketikkan perintah
[anggit@linux$]PS1=$PS1LAMA
Jika anda ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa backslash karakter diantaranya adalah:
\a
ASCII bell character (07)
\d
date dengan format "Weekday Month Date" (misalnya "Tue May 26")
\e
ASCII escape character (033)
\H
hostname (namahost)
\n
newline (karakter baru)
\w
Direktory aktif
\t
time dalam 24 jam dengan format HH:MM:SS
dll
man bash:-)
contoh pemakaiannya:
[anggit@linux$]PS1="[\t][\u@\h:\w]\$"
agar prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen) sisipkan pada file .bashrc atau .profile

Proses Input Output

Di dalam sebuah proses memerlukan Input dan Output. Instruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai eksekusi program yang sela njutnya disebut proses. Setiap kali instruksi diberikan, maka Linux kernel akan menciptakan sebuah proses dengan memberikan nomor PID (Process Identity).
Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu Output. Di dalam konteks Linux input / output adalah sebagai berikut :
  • Keyboard (input)
  • Layar (output)
  • Files
  • Structure data kernel
  • Peralatan I/O lainnya (misalnya network)

File Descriptor
Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan
melalui angka yang dimulai dari 0, 1, 2 dan seterusnya. Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah :
  • 0 = keyboard (standart input)
  • 1 = layar (standart output)
  • 2 = layar (standart eror linux tidak membedakan antara peralatan hardware dan file, Linux memanipulasi peralatan hardware dengan file.
STRUKTUR KONTROL
Struktur kondisional (kontrol) : IF and Else digunakan untuk mengeksekusi sebuah atau satu blok instruksi jika kondisi terpenuhi.
Bentuk_umun_Sintaks:
If(condition)statement;
Condition merupakan ekspresi yang dievaluasi.
Jika kondisi bernilai true, maka statement akan dijalankan.
Jika false, maka statement akan diabaikan dan program menjalankan instruksi selanjutnya.
Jika ada lebih dari satu instruksi yang akan dijalankan maka harus dibuat dalam blok instruksi dengan menggunakan tanda kurung kurawal {};
Dapat juga menggunakan keyword else, jika kondisi tidak terpenuhi.

Function

Shell Bash menyediakan cara mudah untuk membuat fungsi di dalam skrip. Fungsi dapat dibuat menggunakan salah satu dari dua cara: dengan menulis fungsi di dalam skrip yang juga memanggilnya, atau menulis suatu “library” yang hanya berisi fungsi-fungsi dan menyertakan pustaka tersebut ke dalam skrip yang memanggil fungsi. Pada pendekatan kedua, baris: . ./library.sh Diletakkan di awal skrip (sebelum fungsi-fungsi di dalam library.sh dipanggil). Sebagaimana pada bahasa lain, fungsi pada shell Bash juga dapat mengembalikan suatu nilai (boleh pula tanpa ada nilai yang dikembalikan). Fungsi dapat mengembalikan nilai dengan 3 cara:
Mengubah status dari satu atau lebih variabel
Menggunakan perintah exit untuk mengakhiri skrip shell
Menggunakan perintah return untuk mengakhiri fungsi dan mengembalikan nilaiyang dimasukkan ke bagian pemanggilan dari skrip   shell
Mirip bahasa C. Perintah exit menghentikan program dan perintah return mengembalikan kontrol ke pemanggil. Perbedaannya adalah fungsi shell tidak dapat mengubah parameternya, meskipun dapat mengubah parameter-parameter global.
Fungsi merupakan subprogram yang menerima masukan dan memmpunyai keluaran secara langsung sedangkan prosedure merupakan subprogram yang menerima masukan tetapi tidak memmpunyai keluaran secara langsung.
berikut contoh program menggunakan fungsi
Menjalankan dua aplikasi secara bersamaan tetapi dengan menggunakan threading

Array

adalah kumpulan variabel dengan tipe sejenis, dimana array ini merupakan feature Bash yang cukup indah :-) dan salah satu hal yang cukup penting dalam bahasa pemrograman, anda bisa membayangkan array ini sebagai tumpukan buku - buku dimeja belajar. lebih jelasnya sebaiknya lihat dulu contoh script berikut:
#!/bin/bash
#array1
 
buah=(Melon,Apel,Durian);
echo ${buah[*]};
Hasilnya:
[anggit@linux$]./array1.
Melon,Apel,Durian
anda lihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis array buah diciptakan dan string Melon menempati index pertama dari array buah, perlu diketahui bahwa array di Bash dimulai dari index 0, jadi array buah mempunyai struktur seperti berikut:
buah[0] berisi Melon
buah[1] berisi Apel
buah[2] berisi Durian
0,1,2 adalah index array, berarti ada 3 elemen pada array buah, untuk menampilkan isi semua elemen array gunakan perintah subtitusi seperti pada contoh diatas, dengan index berisi "*" atau "@". dengan adanya index array tentunya kita dapat mengisi array perindexnya dan menampilkan isi array sesuai dengan index yang diinginkan.













Arsip Blog