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 :
- Pemakaian interaktif.
- Untuk mengontrol session Linux.
- Contohnya : setdir , mail directory , dan
starup file
- Pemrograman.
- 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
- Menjalankan
Script
Untuk menjalankan Script, perintahnya adalah
Quote:
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:
- Membuat
Script
Baris pertama setiap script sebaiknya memiliki pernyataan sebagai berikut
Quote:
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"
|
- Menggunakan
Variabel
- 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:
- 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.
- 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
|
- 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.
- Menampilkan
Variabel
Untuk menampilkan variabel, Kita dapat menggunakan perintah echo. Nama
Variabelnya sendiri harus didahului dengan tanda $. Perintahnya
Quote:
.
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"
|
- 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
|
- 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:
- Environment Variable
- Positional Parameter
- 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.