Shell dalam komputer adalah
salah satu jenis program bawaan sistem
operasi (seringnya merupakan program yang terpisah dari inti sistem operasi)
yang menyediakan komunikasi langsung antara pengguna dan sistem operasi. Contoh
dari shell adalah COMMAND.COM dalam MS-DOS, Macintosh
Finder (Macintosh), Windows Explorer, Command Prompt/cmd.exe, PowerShelldalam Microsoft
Windows, Bourne shell, C shell, Korn shell dan masih
banyak lainnya khususnya dalam keluarga sistem operasi UNIX.
Beberapa shell juga dapat digunakan untuk melakukan manajemen berkas.
·
Macam - macam shell
Tidak seperti sistem operasi lain
yang hanya menyediakan satu atau 2 shell, sistem operasi dari keluarga unix
misalnya linux sampai saat ini dilengkapi oleh banyak shell dengan kumpulan
perintah yang sangat banyak, sehingga memungkinkan pemakai memilih shell mana
yang paling baik untuk membantu menyelesaikan pekerjaannya, atau dapat pula
berpindah-pindah dari shell yang satu ke shell yang lain dengan mudah, beberapa
shell yang ada di linux antara lain:
1. Bourne
shell(sh)
sh adalah shell standar Unix yang dibuat tahun 1979 oleh Stephen Bourne
dari AT&T dengan memakai bahasa pemrograman Algol. sh terkenal karena
sederhana, compact, and cepat. Kelemahannya adalah kurang interkatif seperti
tidak ada history, aliasing, dan job control. Default prompt shell sh adalah $
(dolar).
2. C
shell(csh)
csh memiliki feature yang lebih lengkap dibandingkan sh. Shel ini dibuat
tahun 1970an oleh Bill Joy dari University of California at Berkeley dengan
menggunakan bahasa C. Fitur yang terdapat dalam csh antara lain command-line
history, aliasing, built-in arithmetic, filename completion, dan job control.
Kelemahnnya adalah karena didesain untuk mesin skala besar dan memiliki banyak
fitur maka shel ini cenderung lambat bila digunakan pada mesin kecil. Default
prompt shell csh adalah % (persen).
3. Korn
shell(ksh)
Korn shell merupakan pengembangan dari bourne shell yang ditulis oleh
David Korn dari AT&T pada pertengahan 1980an. Feature Korn shell antara
lain editable history, aliases, functions, regular expression wildcards,
built-in arithmetic, job control, coprocessing, dan special debugging. Default
prompt shell ksh adalah $ (dolar).
4. Bourne
again shell(bash)
Bash
merupakan default shell Linux yang merupakan pengembangan dari bourne shell
sehingga kompatibel juga di Unix. Shell ini dibuat pada tahun 1988 oleh Brian
Fox dari FSF GNU. Fitur yang dimiliki bash antara lain interaktif, dapat
membuat shortcut, bisa berwarna, dll.Default Bash prompt adalah $ (dolar).
Masing - masing shell mempunyai
kelebihan dan kekurangan yang mungkin lebih didasarkan pada kebutuhan pemakai
yang makin hari makin meningkat, untuk dokumentasi ini shell yang digunakan
adalah bash shell dari GNU, yang merupakan pengembangan dari Bourne shell dan
mengambil beberapa feature (keistimewaan) dari C shell serta Korn shell, Bash
shell merupakan shell yang cukup banyak digunakan pemakai linux karena
kemudahan serta banyaknya fasilitas perintah yang disediakan.versi bash shell
yang saya gunakan adalah 2.04
[admin@linux$]echo $BASH_VERSION
bash 2.04.12(1)-release
Mungkin saat anda membaca
dokumentasi ini versi terbaru dari bash sudah dirilis dengan penambahan feature
yang lain.
·
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.
·
Kebutuhan dasar Shell
Sebelum mempelajari pemrograman
Bash shell di linux sebaiknya anda telah mengetahui dan menggunakan perintah -
perintah dasar shell baik itu internal command yang telah disediakan shell
maupun eksternal command atau utility, seperti
cd, pwd, times, alias, umask,
exit, logout, fg, bg, ls, mkdir, rmdir, mv, cp, rm, clear, ...
utilitas seperti cat, cut,
paste, chmod, lpr,...
redirection (cara mengirim output
ke file atau menerima input dari file), menggunakan operator
redirect >, >>, <, <<, contohnya:ls > data
hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan ditimpa. ls >> data
hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.
cat <>
file data dijadikan input oleh perintah cat
hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan ditimpa. ls >> data
hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.
cat <>
file data dijadikan input oleh perintah cat
pipa (output suatu perintah
menjadi input perintah lain), operatornya : | , contoh:ls -l | sort
-s
ouput perintah ls -l (long) menjadi input perintah sort -s (urutkan secara descending), mending pake ls -l -r saja ls -l | sort -s | more
cat databaru
ouput perintah ls -l (long) menjadi input perintah sort -s (urutkan secara descending), mending pake ls -l -r saja ls -l | sort -s | more
cat databaru
Wildcard dengan karakter *,
?, [ ], contohnya:ls i*
tampilkan semua file yang dimulai dengan i ls i?i
tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri dengan i
ls [ab]*
tampilkan file yang dimulai dengan salah satu karakter a atau b
tampilkan semua file yang dimulai dengan i ls i?i
tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri dengan i
ls [ab]*
tampilkan file yang dimulai dengan salah satu karakter a atau b
·
Simple bash scripts
Langkah awal sebaiknya periksa
dulu shell aktif anda, gunakan perintah ps (report process status)
[admin@linux$]ps
PID TTY TIME CMD
219 tty1 00:00:00 bash
301 tty1 00:00:00 ps
bash adalah shell aktif di system
saya, jika disystem anda berbeda misalnya csh atau kshubahlah
dengan perintah change shell
[admin@linux$]chsh
Password:
New shell [/bin/csh]:/bin/bash
Shell changed
atau dengan mengetikkan bash
[admin@linux$]bash
sekarang coba anda ketikkan
perintah dibawah ini pada prompt shell
echo "Script shell pertamaku
di linux"
[admin@linux$]echo “Script shell
pertamaku di linux”
Script shell pertamaku di linux
string yang diapit tanda kutip
ganda (double quoted) akan ditampilkan pada layar anda, echoadalah
statement (perintah) built-in bash yang berfungsi menampilkan informasi ke
standard output yang defaultnya adalah layar. jika diinginkan mengulangi proses
tersebut, anda akan mengetikkan kembali perintah tadi, tapi dengan fasilitas
history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah
tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya
dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang
diinginkan apalagi jika selang beberapa waktu mungkin perintah-perintah tadi
sudah tertimpa oleh perintah lain karena history mempunyai kapasitas
penyimpanan yang ditentukan. untuk itulah sebaiknya perintah-perintah tsb
disimpan ke sebuah file yang dapat kita panggil kapanpun diinginkan.
coba ikuti langkah - langkah
berikut:
Masuk ke editor anda, apakah
memakai vi,pico,emacs,dsb…
ketikkan perintah berikut
#!/bin/bash
echo "Hello, apa
khabar"
simpan dengan nama file tes
ubah permission file tes
menggunakan chmod
[admin@linux$]chmod 755 tes
jalankan
[admin@linux$]./tes
kapan saja anda mau
mengeksekusinya tinggal memanggil file tes tersebut, jika diinginkan mengeset
direktory kerja anda sehingga terdaftar pada search path ketikkan perintah
berikut
PATH=$PATH:.
setelah itu script diatas dapat
dijalankan dengan cara
[admin@linux$]tes
Hello, apa khabar
tanda #! pada /bin/bash dalam
script tes adalah perintah yang diterjemahkan ke kernel linux untuk
mengeksekusi path yang disertakan dalam hal ini program bash pada
direktory /bin, sebenarnya tanpa mengikutkan baris tersebut anda tetap
dapat mengeksekusi script bash, dengan catatan bash adalah shell aktif. atau
dengan mengetikkan bash pada prompt shell.
[admin@linux$]bash tes
tentunya cara ini kurang efisien,
menyertakan path program bash diawal script kemudian merubah permission file
sehingga dapat anda execusi merupakan cara yang paling efisien.
Sekarang coba kita membuat script
shell yang menampilkan informasi berikut:
Waktu system
Info tentang anda
jumlah pemakai yang sedang login
di system
contoh scriptnya:
#!/bin/bash
#myinfo
#membersihkan tampilan layar
clear
#menampilkan informasi
echo -n "Waktu system :"; date
echo -n "Anda :"; whoami
echo -n "Banyak pemakai
:"; who | wc -l
sebelum dijalankan jangan lupa
untuk merubah permission file myinfo sehingga dapat dieksekusi oleh anda
[fajar@linux$]chmod 755 myinfo
[fajar@linux$]./myinfo
Waktu system : Sat Nov 25
22:57:15 BORT 2001
Anda : admin
Banyak pemakai : 2
tentunya layout diatas akan
disesuaikan dengan system yang anda gunakan statement echodengan
opsi -n akan membuat posisi kursor untuk tidak berpindah ke baris
baru karena secara default statement echo akan mengakhiri proses pencetakan
ke standar output dengan karakter baris baru (newline), anda boleh mencoba
tanpa menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat
digunakan adalah -e (enable), memungkinkan penggunaan backslash
karakter atau karakter sekuen seperti pada bahasa C atau perl, misalkan :
echo -e "\abunyikan
bell"
jika dijalankan akan mengeluarkan
bunyi bell, informasi opsi pada statement echo dan backslash karakter
selengkapnya dapat dilihat via man di prompt shell.
[fajar@linux$]man echo