Pengenalan Bash Shell

On Jumat, 20 Agustus 2010 0 komentar

Pengenalan Bash Shell




v.0.1 : 11 September 2001

Pendahuluan

Mungkin anda telah pernah menggunakan UNIX di sekolah atau kantor anda untuk menjalankan aplikasi anda, mencetak dokumen, membaca email, atau bahkan bermain game. Namun pernahkah anda memikirkan tentang proses yang terjadi ketika anda mengetikkan perintah dan menekan tombol Enter ?

Beberapa tingkatan kejadian terjadi ketika anda memasukkan sebuah perintah, namun kita hanya akan memperhatikan tingkatan teratas yaitu shell. Secara sederhana, shell adalah user interface ke sistem operasi UNIX.

Terdapat berbagai macam user interface. Bash termasuk ke dalam kategori yang paling umum, dikenal sebagai user interface berbasis karakter. Interface ini menerima sejumlah baris perintah teks yang dimasukkan user. Jenis interface lainnya adalah graphical user interface (GUI). Kita tidak akan membahas tipe ini lebih lanjut.

Apa Itu Shell?

Pekerjaan shell adalah untuk menerjemahkan perintah user ke instruksi sistem operasi. Sebagai contoh, perintah :

ls > hasil_ls.txt

Perintah di atas berarti, "Tampilkan semua isi direktori saat ini dan simpan hasilnya ke dalam file hasil_ls.txt". Berikut ini adalah yang dikerjakan oleh shell :

• Memecah baris tersebut menjadi beberapa kata : ls, , dan hasil_ls.txt.

• Menentukan fungsi masing-masing kata : ls adalah sebuah perintah, dan hasil_ls.txt secara bersama-sama adalah instruksi I/O.

• Menset I/O berdasarkan hasil_ls.txt dan beberapa instruksi standar dan implisit.

• Menemukan perintah ls dalam sebuah file dan menjalankannya.

Tentu saja setiap perintah terdiri dari beberapa perintah kecil lainnya.

Bourne Again Shell (Bash)

Bourne Again Shell 2 diciptakan untuk digunakan dalam proyek GNU. Proyek GNU dimulai oleh Richard M Stallman untuk membuat sistem operasi yang kompatibel dengan UNIX dan menggantikan seluruh utilitas UNIX komersil dengan yang bebas didistribusikan.

Bash, yang ditujukan menjadi shell standar sistem GNU, secara resmi "lahir" pada hari Minggu, 10 Januari 1998. Brian Fox menulis versi awal bash dan readline dan terus memperbaikinya hingga tahun 1993. Di awal tahun 1989, Chet Ramey bergabung, dan kini ia adalah pemelihara resmi bash dan terus membuat peningkatan-peningkatan lebih lanjut.

Fitur Bash

Bash kini semakin populer, karena ia umumnya disertakan dalam setiap sistem operasi UNIX. Sebagai tambahan pada kompatibilitasnya dengan shell Bourne, Bash juga menyertakan fitur-fitur terbaik shell C dan Korn, dan juga beberapa fitur unik yang dimilikinya.

Mode edit pada perintah baris bash adalah sebuah fitur yang cenderung menarik orang untuk menggunakannya. Dengan edit perintah baris, lebih mudah untuk kembali dan membetulkan kesalahan atau memodifikasi perintah-perintah sebelumnya.

Fitur utama bash lainnya adalah ditujukan bagi user interaktif yaitu kendali perintah (job control). Kendali perintah memberikan anda kemampuan untuk memulai, menghentikan dan pause sejumlah perintah di waktu yang bersamaan. Fitur ini dipinjam dari shell C.

Keunggulan-keungulan penting lain bash umumnya ditujukan bagi programer atau orang yang hobi mengkustomisasi shell. Ia menyertakan banyak option dan variabel baru untuk kustomisasi, dan fitur pemrogramannya telah sangat diperbaiki untuk menyertakan definisi fungsi, lebih banyak kendali struktur, aritmatika integer, kendali I/O tingkat tinggi, dan lain-lain.

Memperoleh Bash

Anda saat ini mungkin telah menggunakan bash. Anda mungkin bahkan tidak tahu bahwa terdapat lebih dari satu buah shell yang ada pada sistem anda.

Untuk mencari tahu shell yang anda gunakan, bisa anda berikan perintah berikut :

echo $SHELL

Jika anda belum menggunakan bash dan ingin menggunakannya, pertama-tama anda harus tahu apakah ia ada pada sistem anda. Ketikkan saja bash, jika anda memperoleh prompt dollar ($), maka anda telah memilikinya, ketikkan exit untuk kembali ke shell normal anda.

Jika anda mendapatkan pesan "not found", kemungkinan bash belum terinstalasi pada sistem anda, mungkin anda perlu bantuan administrator sistem atau teman untuk menginstalasinya.

Bila anda ingin menjadikan bash, shell normal anda, berikan perintah berikut :

$ chsh <lokasi_bash>

lokasi_bash bisa dicari dengan menggunakan perintah which bash

Jika berhasil, maka kali lain anda login, shell normal anda adalah bash.

Penggunaan Shell Secara Interaktif

Ketika anda menggunakan shell secara interaktif, anda memulai sebuah sesi login yang dimulai ketika anda login dan berakhir ketika anda mengetik exit atau logout atau menekan CTRL-D. Selama sesi login, anda mengetikkan perintah baris di dalam shell, ini adalah baris-baris teks yang diakhiri dengan tombol ENTER.

Perintah, Argumen, dan Option

Perintah baris shell terdiri dari satu atau lebih kata, yang dipisahkan oleh blank atau TAB. Kata pertama pada baris adalah perintah. Sisanya (bila ada) adalah argumen (juga disebut parameter) bagi perintah.

Sebuah option adalah tipe argumen khusus yang memberikan perintah informasi khusus mengenai apa yang harus dilakukannya. Option biasanya terdiri dari sebuah tanda "-" yang diikuti oleh sebuah huruf. Perintah lp -h myfile mengandung option -h, yang memberitahu printer untuk tidak mencetak halaman banner sebelum mencetaknya ke file.

Nama file, wildcard, dan ekspansi path

Terkadang anda perlu menjalankan sebuah perintah pada lebih dari satu file. Contoh paling umum adalah perintah ls, yang menampilkan informasi tentang file. Dalam bentuk paling sederhananya, tanpa option atau argumen, ia menampilkan nama semua file dalam direktori saat ini kecuali file-file tersembunyi, yang namanya dimulai dengan tanda titik (.).

Filename begitu penting dalam UNIX sehingga shell menyediakan cara built-in untuk menspesifikasikan pola sejumlah nama file tanpa perlu tahu nama mereka. Anda dapat menggunakan karakter-karakter khusus, yang disebut wildcard, dalam namafile untuk menjadikan mereka pola. Tabel berikut menampilkan sejumlah wildcard dasar :

Wildcard Kecocokan

? Sembarang karakter tunggal

* Sembarang string karakter

[set] Sembarang karakter yang ada di set

[!set] Sembarang karakter yang tidak ada di set

Wildcard ? akan mencocokkan satu buah karakter, jadi bila direktori anda berisikan file-file program.c, program.log, dan program.o, maka ekspresi program.? akan cocok dengan program.c dan program.o namun tidak dengan program.log.

Tanda asteriks (*) lebih powerful dan lebih banyak digunakan, ia akan mencocokkan sembarang string karakter. Ekspresi program.* akan cocok dengan ketiga file tersebut di atas. Perhatikan bahwa tanda (*) dapat juga cocok dengan string kosong, *ed dan *e* akan cocok dengan ed.

Wildcard sisanya adalah konstruksi set. Sebuah set adalah sebuah daftar karakter (misalnya abc), sebuah rentang inklusif (misalnya A-Z), atau keduanya.

Dalam contoh di atas, program.[co] dan program.[a-z] akan cocok dengan program.c dan program.o, namun tidak program.log.

Tanda "seru" setelah kurung siku kiri menjadikan sebuah set ternegasi. Sebagai contoh [!a-zA-Z] akan cocok dengan sembarang karakter yang bukan huruf.

Input dan Output

Berdasarkan konvensi, setiap program UNIX memiliki sebuah cara tunggal untuk menerima input yang disebut standard input, sebuah cara tunggal untuk menghasilkan output yang disebut standard output, dan sebuah cara tunggal untuk menghasilkan pesan kesalahan yang disebut standard error.

Semua shell menangani I/O standar dalam cara yang sama. Setiap program yang anda jalankan memiliki ketiga saluran I/O ke terminal anda, dengan standar input adalah keyboard anda, standar output dan standar error adalah layar.

Jika diperlukan, anda dapat mengarahkan input dan output ke dan dari sebuah file. Jika anda ingin mengirim isi sebuah file yang ada ke seseorang sebagai sebuah mail, anda mengarahkan standar input mail sehingga ia membaca dari file alih-alih dari keyboard anda.

Anda juga dapat menyatukan program secara bersama-sama dalam sebuah pipeline, sebuah output standar satu program dikirimkan secara langsung menjadi input standar program lainnya, sebagai contoh, anda dapat memberikan output mail secara langsung ke program lp sehingga pesan-pesan dicetak.

I/O Redirection

Berikut ini adalah contoh I/O redirection :

$ date > now

Perintah di atas akan menyimpan tanggal dan waktu sekarang ke dalam sebuah file bernama now.

Redirector input dan output dapat pula dikombinasikan. Sebagai contoh, perintah cp secara normal digunakan untuk menyalinkan file, jika karena sesuatu alasan ia tidak ada atau rusak, anda dapat menggunakan cat sebagai berikut :

$ cat < file1 > file2

Hal ini serupa dengan cp file1 file2.

Pipeline

Pipe biasanya dilambangkan dengan tanda "
". Sebuah perintah baris yang menyertakan dua atau lebih perintah yang terhubung dengan pipe disebut pipeline.

Berikut ini adalah sebuah contoh pipeline :

$ cat fileku
more

Perintah di atas akan menampilkan isi file fileku secara layar per layar, berhenti menunggu user mengetikkan perintah SPACE (layar berikut), ENTER (baris berikut), atau perintah lainnya.

Background Job

Shell juga memungkinkan anda untuk menjalankan lebih dari satu perintah pada satu saat selama sesi login tunggal. Normalnya, ketika anda mengetikkan sebuah perintah dan menekan tombol ENTER, shell akan menyebabkan perintah tersebut memiliki kendali atas terminal anda hingga ia selesai, anda tidak dapat memberikan perintah selanjutnya hingga perintah pertama selesai. Namun bila anda ingin menjalankan perintah yang tidak membutuhkan input user dan anda ingin melakukan hal lain saat perintah tersebut berjalan, taruhlah ampersand (&) setelah perintah tersebut.

Hal ini disebut menjalankan perintah di background, dan perintah yang berjalan dengan cara ini disebut background job, sementara job yang berjalan normal disebut foreground job. Ketika anda memulai sebuah background job, anda segera memperoleh shell prompt kembali, memungkinkan anda untuk memasukkan perintah lainnya.

Penggunaan background job yang paling jelas adalah untuk program-program yang membutuhkan waktu lama untuk dijalankan, seperti sort atau tar pada file-file besar. Sebagai contoh, asumsikan anda baru saja memperoleh sebuah file terkompresi dari magnetic tape. Misalkan file tersebut adalah kernel-2.4.10.tar.gz, yang merupakan sebuah file arsip terkompresi dengan ukuran lebih dari 50 MB file kode sumber.

Ketikkan :

$ tar xvzf kernel-2.4.10.tar.gz &

sistem akan mulai perintah di background yang membongkar file tersebut. Setelah anda mengetikkan perintah tersebut, anda akan melihat sebuah baris seperti ini :

[1] 200

diikuti oleh shell prompt anda, berarti anda dapat memasukkan perintah lainnya. Nomor tersebut menyatakan nomor job anda.

Anda dapat memeriksa job yang berjalan di background dengan perintah jobs. Untuk setiap job background, jobs akan menampilkan sebuah baris yang serupa dengan baris di atas namun dengan indikasi status job :

[1]+ Running tar xvzf linux-2.4.10.tar.gz

Ketika job selesai, anda akan mendapati sebuah pesan seperti ini :

[1]+ Done tar xvzf linux-2.4.10.tar.gz

Kustomisasi Lingkungan Anda

Sinonim untuk shell UNIX atau untuk interface sembarang program komputer adalah sebuah environment. Environment biasanya merupakan kumpulan konsep yang menyatakan hal-hal yang dilakukan komputer dalam bidang yang dapat dimengerti dan koheren, dan sebuah tampilan dan rasa yang nyaman.

Sebagai contoh, meja kerja anda adalah sebuah environment. Konsep-konsep yang ada dalam meja kerja biasanya adalah memo, panggilan telpon, surat, formulir, dsb. Tool yang biasa ada adalah kertas, staples, amplop, pen, telpon, kalkulator, dsb. Setiap benda ini memiliki karakteristik yang menyatakan bagaimana menggunakan mereka, karateristik tersebut berkisar dari lokasi pada mejad anda hingga ke hal yang lebih canggih seperti nomor apa yang disimpan pada tombol memori telpon anda.

Anda mengkustomisasi tampilan dan rasa lingkungan kerja anda dengan menaruh pen di tempat yang mudah dijangkau, memprogram tombol telpon anda, dsb. Secara umum, semakin banyak kustomisasi yang anda lakukan, semakin sesuai dengan kebutuhan pribadi anda, dan karenanya anda menjadi lebih produktif.

UNIX shell juga memiliki karakteristik yang hampir sama dengan meja kerja anda. :) Namun tampilan dan rasa lingkungan UNIX anda ditentukan dengan keyboard dan tampilan anda, juga dengan cara bagaimana anda mensetup direktori anda, di mana menaruh file, dan nama apa saja yang anda gunakan untuk file, direktori, dan perintah.

Bash menyediakan beberapa fitur untuk mengkustomisasi lingkungan anda :

• File khusus, seperti .bash_profile, .bash_logout, dan .bashrc yang dibaca oleh bash ketika anda log in atau memulai shell baru.

• Alias. Sinonim untuk perintah atau string perintah yang dapat anda definisikan untuk kemudahan.

• Option. Mengendalikan berbagai aspek lingkungan anda.

• Variabel. Nilai-nilai yang dapat dirubah yang diacu dengan sebuah nama.

File .bash_profile, .bash_logout, dan .bashrc

Ketiga file ini yang ada pada direktori home anda memiliki arti khusus bagi bash, menyediakan sebuah cara bagi anda untuk mensetup lingkungan anda secara otomatis ketika anda log in dan ketika anda memulai shell bash lain, dan memungkinkan anda melakukan perintah-perintah ketika anda logout.

File bash yang paling penting adalah .bash_profile, yang dibaca dan perintah-perintah yang ada di dalamnya dieksekusi oleh bash setiap kali anda login ke sistem.

Berikut ini adalah contoh file .bash_profile :

# .bash_profile



# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi



export BASH_ENV=$HOME/.bashrc

Baris-baris ini mendefinisikan lingkungan dasar untuk akun login anda. Ketika mengedit .bash_profile anda, cukup tambahkan baris-baris baru anda di bagian akhir file.

Apapun yang anda tambahkan ke .bash_profile tidak akan memiliki pengaruh hingga file tersebut dibaca kembali dengan cara log out dan log in kembali. Selain itu anda juga dapat menggunakan perintah source. Sebagai contoh :

source .bash_profile

Bash membolehkan dua buah sinonim untuk .bash_profile yaitu .bash_login dan .profile. Jika .bash_profile tidak ada dalam home direktori anda maka bash akan mencari .bash_login. Jika tidak ada juga, ia akan mencari .profile.

.bash_profile dibaca dan dieksekusi hanya oleh shell login. Jika anda memulai shell baru dengan mengetikkan bash pada perintah baris, ia akan membaca perintah-perintah dari file .bashrc.

Berikut ini adalah contoh file .bashrc :

# .bashrc



# Source global definitions

if [ -r /etc/bashrc ]; then

. /etc/bashrc

fi

.bash_logout dibaca dan dieksekusi setiap shell login keluar. Jika anda mengeksekusi beberapa perintah yang menghapus file-file temporer dari akun anda atau mencatat berapa lama anda telah login ke sistem maka anda dapat menempatkan perintah-perintah dalam .bash_logout.

Berikut ini adalah contoh file .bash_logout :

# ~/.bash_logout



clear

Aliases

Jika anda telah cukup lama menggunakan perintah-perintah UNIX mungkin anda tahu terdapat banyak perintah dan beberapa dari mereka memiliki nama yang aneh. Terkadang perintah yang sering anda gunakan memiliki sejumlah option dan argumen yang perlu dimasukkan. Tidakkah enak jika ada sebuah fitur yang memungkinkan anda mengganti nama perintah atau memungkinkan anda mengetikkan sesuatu yang mudah alih-alih setengah lusin option ? Untungnya, bash memiliki fitur tersebut : alias.

Alias dapat didefinisikan pada perintah baris, dari dalam .bash_profile atau dalam .bashrc anda, dengan menggunakan bentuk :

alias nama=perintah

Dengan nama adalah sebuah alias bagi perintah. Jika anda mengetikkan nama sebagai perintah, bash akan menggantikan perintah ketika ia mengeksekusinya. Perhatikan bahwa tidak ada spasi pada kedua sisi tanda sama dengan (=).

Contoh :

alias lf='ls -F'

Jika anda memberikan perintah lf maka akan dieksekusi ls dengan option -F.

Berikut ini adalah hal mengenai alias yang penting untuk diingat :

• bash membuat penggantian tekstual terhadap alias. Bayangkan bash memberikan perintah anda ke sebuah teks editor dan melakukan "rubah" atau "ganti" sebelum menginterpretasi dan mengeksekusinya.

• alias adalah rekursif, yang berarti mungkin untuk mengaliaskan sebuah alias.

• alias hanya dapat digunakan pada bagian awal string perintah.

• jika anda memberikan perintah alias nama tanpa tanda sama dengan (=) dan nilainya, shell akan mencetak nilai alias atau alias nama not found jika tidak didefinisikan. Jika anda mengetikkan alias tanpa argumen, anda memperoleh daftar semua alias yang anda definisikan. Perintah unalias nama menghapus definisi alias nama.

Option

Meskipun alias membolehkan anda membuat nama yang nyaman bagi perintah-perintah, mereka tidak merubah perilaku shell, untuk merubahnya anda dapat menggunakan option. Option shell adalah sebuah seting yang berada dalam keadaan "on" atau "off".

Perintah dasar yang berkaitan dengan option adalah set -o nama_option dan set +o nama_option. Tanda - menyebabkan sebuah option "on", sementara tanda + membuat sebuah option menjadi "off".

Tabel berikut menampilkan option-option yang berguna bagi user UNIX umum. Semuanya secara baku diset menjadi off :

Option Deskripsi

emacs Memasuki mode edit emacs (bakunya on)

ignoreoff Jangan bolehkan penggunaan CTRL-D tunggal untuk log off; gunakan perintah exit untuk log off dengan segera.

noclobber Jangan bolehkan redireksi output ( ) untuk menimpa file yang telah ada.

noglob Jangan ekspansikan nama file wildcard seperti * dan ?.

nounset Mengindikasikan kesalahan ketika berusaha menggunakan sebuah variabel yang belum didefinisikan.

vi Memasuki mode edit vi.

Variabel Shell

Terdapat berbagai karakteristik lingkungan anda yang mungkin ingin anda kustomisasi namun tidak dapat dilakukan dengan pilihan on/off. Karakteristik tipe ini dispesifikasikan dalam variabel shell.

Seperti alias, sebuah variabel shell adalah sebuah nama yang memiliki nilai terasosiasi dengannya. Bash menyediakan beberapa buah variabel shell built-in, programer shell dapat menambahkan variabel sendiri. Secara konvensi, variabel- variabel built-in memiliki nama dalam huruf kapital. Variabel built-in yang bash-spesifik, didefinisikan dalam huruf kecil.

Format untuk mendefinisikan variabel serupa dengan penulisan alias :

varname=value

Tidak boleh ada spasi di kedua belah sisi tanda sama dengan, dan jika nilai lebih dari satu kata, ia harus diapit oleh tanda ("). Untuk menggunakan nilai sebuah variabel dalam sebuah perintah, berilah tanda dolar ($) di awal nama variabel.

Untuk menghapus sebuah variabel gunakan perintah :

$ unset nama_variabel

Untuk memeriksa nilai sebuah variabel dapat digunakan perintah echo.

Penutup

Demikianlah pembahasan singkat kami tentang shell bash. Masih banyak topik yang belum kami bahas di versi kali ini. :)

Semoga dapat memberikan manfaat bagi para pembaca.




Dinamakan demikian dengan mengacu pada shell oleh Steve Bourne.

0 Comments

No comments yet. Be the first to leave a comment !
Leave a Comment

Next Post Previous Post
Powered by Blogger