Rabu, 31 Oktober 2012

Perintah Dasar Linux


Sekilas Tentang Command Line

Seperti halnya bila kita mengetikkan perintah di DOS, command line atau baris perintah di Linux juga diketikkan di prompt dan diakhiri dengan menekan tombol Enter pada keyboard untuk mengeksekusi perintah tersebut.
Baris perintah merupakan cara yang lebih efisien untuk melakukan sesuatu pekerjaan. Oleh karena itu pemakai Linux tetap mengandalkan cara ini untuk bekerja. Sebaiknya pemula juga harus mengetahui dan sedikitnya pernah menggunanakan perintah baris ini karena suatu saat pengetahuan akan perintah-perintah ini bisa sangat diperlukan.
Berikut akan dijelaskan beberapa perintah dasar yang mungkin kelak akan sering digunakan terutama oleh para pemula. Perhatian: pengetahuan akan perintah-perintah yang lain akan segera bertambah seiring dengan kemajuan Anda menguasai sistem operasi Linux ini.
Penjelasan masing-masing perintah akan dipersingkat saja dan untuk mengetahui lebih detail lagi fungsi-fungsi suatu perintah, Anda dapat melihat manualnya, misalnya dengan mengetikkan perintah man:
man adalah perintah untuk menampilkan manual dari suatu perintah. Cara untuk menggunakannya adalah dengan mengetikkan man diikuti dengan perintah yang ingin kita ketahui manual pemakaiannya.
Contoh:
$ man ls
Perintah di atas digunakan untuk menampilkan bagaimana cara penggunaan perintah ls secara lengkap.
Perintah-Perintah Dasar Linux
Sebagai panduan Anda, berikut adalah daftar perintah secara alfabet. Sebenarnya, Anda dapat saja menekan tab dua kali untuk melihat semua kemungkinan perintah yang dapat digunakan. Misalnya Anda ingin mengetahui perintah apa saja yang dimulai dengan huruf a, maka Anda cukup mengetikkan a lalu tekan tab dua kali!
Daftar Perintah Menurut Alfabet
& adduser alias bg cat cd chgrp chmod chown cp fg find grep gzip halt hostname kill less login logout ls man mesg mkdir more mount mv passwd pwd rm rmdir shutdown su tail talk tar umount unalias unzip wall who xhost + xset zip
&
Perintah & digunakan untuk menjalan perintah di belakang (background) Contoh:
wget http://id.wikibooks.org &
Perintah & dipakai dibelakang perintah lain untuk menjalankannya di background. Apa itu jalan di background? Jalan dibackground maksudnya adalah kita membiarkan sistem untuk menjalankan perintah sendiri tanpa partisipasi kita, dan membebaskan shell/command prompt agar bisa dipergunakan menjalankan perintah yang lain.
Lihat juga:
Silahkan lihat juga perintah bg dan fg.
adduser
Perintah adduser digunakan untuk menambahkan user.
Biasanya hanya dilakukan oleh root untuk menambahkan user atau account yg baru. Setelah perintah ini bisa dilanjutkan dengan perintah passwd, yaitu perintah untuk membuat password bagi user tersebut. Contoh:
# adduser udin
# passwd udin
Perhatikan bahwa semua perintah yang membutuhkan akses root, di sini saya tulis dengan dengan menggunakan tanda #, untuk memudahkan Anda membedakannya dengan perintah yang tidak perlu akses root.
Jika Anda menjalankan perintah adduser, Anda akan diminta memasukkan password untuk user yang Anda buat. Isikan password untuk user baru tersebut dua kali dengan kata yang sama.
alias
Digunakan untuk memberi nama lain dari sebuah perintah. Misalnya bila Anda ingin perintah ls dapat juga dijalankandengan mengetikkan perintah dir, maka buatlah aliasnya sbb:
$ alias dir=ls
Kalau Anda suka dengan tampilan berwarna-warni, cobalah bereksperimen dengan perintah berikut:
$ alias dir=ls -ar –color:always
Untuk melihat perintah-perintah apa saja yang mempunyai nama lain saat itu, cukup ketikkan alias saja (tanpa argumen). Lihat juga perintah unalias.
bg
Untuk memaksa sebuah proses yang dihentikan sementara(suspend) agar berjalan di background. Misalnya Anda sedang menjalankan sebuah perintah di foreground (tanpa diakhiri perintah &) dan suatu saat Anda membutuhkan shell tersebut maka Anda dapat memberhentikan sementara perintah tersebut dengan Ctrl-Z kemudian ketikan perintah bg untuk menjalakannya di background. Dengan cara ini Anda telah membebaskan shell tapi tetap mempertahankan perintah lama berjalan di background.
Lihat juga perintah fg.
cat
Menampilkan isi dari sebuah file di layar. Contoh:
$ cat /nama/suatu/file
cd
Change Directory atau untuk berpindah direktori dan saya kira Anda tidak akan menemui kesulitan menggunakan perintah ini karena cara penggunaanya mirip dengan perintah cd di DOS.
chgrp
Perintah ini digunakan untuk merubah kepemilikan kelompok file atau direktori. Misalnya untuk memberi ijin pada kelompok atau grup agar dapat mengakses suatu file. Sintaks penulisannya adalah sbb:
# chgrp
chmod
Digunakan untuk menambah dan mengurangi ijin pemakai untuk mengakses file atau direktori. Anda dapat menggunakan sistem numeric coding atau sistem letter coding. Ada tiga jenis permission/perijinan yang dapat dirubah yaitu:
1. r untuk read,
2. w untuk write, dan
3. x untuk execute.
Dengan menggunakan letter coding, Anda dapat merubah permission diatas untuk masing-masing u (user), g (group), o (other) dan a (all) dengan hanya memberi tanda plus (+) untuk menambah ijin dan tanda minus (-) untuk mencabut ijin.
Misalnya untuk memberikan ijin baca dan eksekusi file coba1 kepada owner dan group, perintahnya adalah:
$ chmod ug+rx coba1
Untuk mencabut ijin-ijin tersebut:
$ chmod ug-rx coba1
Dengan menggunakan sitem numeric coding, permission untuk user, group dan other ditentukan dengan menggunakan kombinasi angka-angka, 4, 2 dan 1 dimana 4 (read), 2 (write) dan 1 (execute).
Misalnya untuk memberikan ijin baca(4), tulis(2) dan eksekusi(1) file coba2 kepada owner, perintahnya adalah:
$ chmod 700 coba2
Contoh lain, untuk memberi ijin baca(4) dan tulis(2) file coba3 kepada user, baca(4) saja kepada group dan other, perintahnya adalah:
$ chmod 644 coba3
Perhatian: Jika Anda hosting di server berbasis Linux, perintah ini sangat penting sekali bagi keamanan data Anda. Saya sarankan semua direktori yang tidak perlu Anda tulis di chmod 100 (jika Apache jalan sebagai current user (Anda)) atau di chmod 501 jika Apache jalan sebagai www-data atau nobody (user lain).
chown
Merubah user ID (owner) sebuah file atau direktori
$ chown
cp
Untuk menyalin file atau copy. Misalnya untuk menyalin file1 menjadi file2:
$ cp
fg
Mengembalikan suatu proses yang dihentikan sementar(suspend) agar berjalan kembali di foreground. Lihat juga perintah bg diatas.
find
Untuk menemukan dimana letak sebuah file. Perintah ini akan mencari file sesuai dengan kriteria yang Anda tentukan. Sintaksnya adalah perintah itu sendiri diikuti dengan nama direktori awal pencarian, kemudian nama file (bisa menggunakan wildcard, metacharacters) dan terakhir menentukan bagaimana hasil pencarian itu akan ditampilkan. Misalnya akan dicari semua file yang berakhiran .doc di current direktori serta tampilkan hasilnya di layar:
$ find . -name *.doc -print
Contoh hasil:
. /public/docs/account.doc
. /public/docs/balance.doc
. /public/docs/statistik/prospek.doc
./public/docs/statistik/presconf.doc
grep
Global regular expresion parse atau grep adalah perintah untuk mencari file-file yang mengandung teks dengan kriteria yang telah Anda tentukan.
Format perintah:
$ grep
Misalnya akan dicari file-file yang mengandung teks marginal di current direktori:
$ grep marginal
diferent.doc: Catatan: perkataan marginal luas dipergunakan di dalam ilmu ekonomi prob.rtf: oleh fungsi hasil marginal dan fungsi biaya marginal jika fungsi prob.rtf: jika biaya marginal dan hasil marginal diketahui maka biaya total
gzip
ini adalah software kompresi zip versi GNU, fungsinya untuk mengkompresi sebuah file. Sintaksnya sangat sederhana:
$ gzip
Walaupun demikian Anda bisa memberikan parameter tertentu bila memerlukan kompresi file yang lebih baik, silakan melihat manual page-nya. Lihat juga file tar, unzip dan zip.
halt
Perintah ini hanya bisa dijalankan oleh super useratau Anda harus login sebagai root. Perintah ini untuk memberitahu kernel supaya mematikan sistem atau shutdown.
hostname
Untuk menampilkan host atau domain name sistem dan bisa pula digunakan untuk mengesset nama host sistem.
Contoh pemakaian:
[user@localhost mydirectoryname] $ hostname
localhost.localdomain
kill
Perintah ini akan mengirimkan sinyal ke sebuah proses yang kita tentukan. Tujuannya adalah menghentikan proses. Format penulisan:
$ kill
PID adalah nomor proses yang akan di hentikan. Tidak tahu PID proses mana yang mau dibunuh? Cobalah bereksperimen dengan perintah:
ps aux | grep
less
Fungsinya seperti perintah more.
login
Untuk masuk ke sistem dengan memasukkan login ID atau dapat juga digunakan untuk berpindah dari user satu ke user lainnya.
logout
Untuk keluar dari sistem.
ls
Menampilkan isi dari sebuah direktori seperti perintah dir di DOS. Anda dapat menggunakan beberapa option yang disediakan untuk mengatur tampilannya di layar. Bila Anda menjalankan perintah ini tanpa option maka akan ditampilkan seluruh file nonhidden(file tanpa awalan tanda titik) secara alfabet dan secara melebar mengisi kolom layar. Option -la artinya menampilkan seluruh file/all termasuk file hidden(file dengan awalan tanda titik) dengan format panjang.
man
Untuk menampilkan manual page atau teks yang menjelaskan secara detail bagaimana cara penggunaan sebuah perintah. Perintah ini berguna sekali bila sewaktu-waktu Anda lupa atau tidak mengetahui fungsi dan cara menggunakan sebuah perintah.
$ man
mesg
Perintah ini digunakan oleh user untuk memberikan ijin user lain menampilkan pesan dilayar terminal. Misalnya mesg Anda dalam posisi y maka user lain bisa menampilkan pesan di layar Anda dengan write atau talk.
$ mesg y atau mesg n
Gunakan mesg n bila Anda tidak ingin diganggu dengan tampilan pesan-pesan dari user lain.
mkdir
Membuat direktori baru, sama dengan perintah md di DOS. a
more
Mempaging halaman, seperti halnya less
mount
Perintah ini akan me-mount filesystem ke suatu direktori atau mount-point yang telah ditentukan. Hanya superuser yang bisa menjalankan perintah ini. Untuk melihat filesystem apa saja beserta mount-pointnya saat itu, ketikkan perintah mount. Perintah ini dapat Anda pelajari di bab mengenai filesystem. Lihat juga perintah umount.
$ mount
/dev/hda3 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda1 on /dos type vfat (rw)
/dev/hda4 on /usr type ext2 (rw)
none on /dev/pts type devpts (rw,mode=0622)
mv
Untuk memindahkan file dari satu lokasi ke lokasi yang lain. Bila argumen yang kedua berupa sebuah direktori maka mv akan memindahkan file ke direktori tersebut. Bila kedua argumen berupa file maka nama file pertama akan menimpa file kedua. Akan terjadi kesalahan bila Anda memasukkan lebih dari dua argumen kecuali argumen terakhir berupa sebuah direktori.
passwd
Digunakan untuk mengganti password. Anda akan selalu diminta mengisikan password lama dan selanjutnya akan diminta mengisikan password baru sebanyak dua kali. Password sedikitnya terdiri dari enam karakter dan sedikitnya mengandung sebuah karakter.
pwd
Print working directory, atau untuk menampilkan nama direktori dimana Anda saat itu sedang berada.
rm
Untuk menghapus file dan secara default rm tidak menghapus direktori. Gunakan secara hati-hati perintah ini terutama dengan option -r yang secara rekursif dapat mengapus seluruh file.
Sekali lagi: Hati-hati dengan perintah ini!
rmdir
Untuk menghapus direktori kosong.
shutdown
Perintah ini untuk mematikan sistem, seperti perintah halt. Pada beberapa sistem anda bisa menghentikan komputer dengan perintah shutdown -h now dan merestart sistem dengan perintah shutdown -r now atau dengan kombinasi tombol Ctr-Alt-Del.
su
Untuk login sementara sebagai user lain. Bila user ID tidak disertakan maka komputer menganggap Anda ingin login sementara sebagai super user atau root. Bila Anda bukan root dan user lain itu memiliki password maka Anda harus memasukkan passwordnya dengan benar. Tapi bila Anda adalah root maka Anda dapat login sebagai user lain tanpa perlu mengetahui password user tersebut.
tail
Menampilkan 10 baris terakhir dari suatu file. Default baris yang ditampilkan adalah 10 tapi Anda bisa menentukan sendiri berapa baris yang ingin ditampilkan:
$ tail
talk
Untuk mengadakan percakapan melalui terminal. Input dari terminal Anda akan disalin di terminal user lain, begitu sebaliknya.
tar
Menyimpan dan mengekstrak file dari media seperti tape drive atau hard disk. File arsip tersebut sering disebut sebagai file tar. Sintaknya sebagai berikut:
$ tar
Contoh:
$ tar -czvf namaFile.tar.gz /nama/direktori/*
Perintah di atas digunakan untuk memasukkan semua isi direktori, lalu dikompres dengan format tar lalu di zip dengan gzip, sehingga menghasilkan sebuah file bernama namaFile.tar.gz
$ tar -xzvf namaFile.tar.gz
Perintah di atas untuk mengekstrak file namaFile.tar.gz
umount
Adalah kebalikan dari perintah mount, yaitu untuk meng-unmount filesystem dari mount-pointnya. Setelah perintah ini dijalankan direktori yang menjadi mount-point tidak lagi bisa digunakan.
# umount
unalias
Kebalikan dari perintah alias, perintah ini akan membatalkan sebuah alias. Jadi untuk membatalkan alias dir seperti telah dicontohkan diatas, gunakan perintah:
$ unalias dir
unzip
Digunakan untuk mengekstrak atau menguraikan file yang dikompres dengan zip. Sintaknya sederhana dan akan mengekstrak file yang anda tentukan:
$ unzip
Lihat juga perintah-perintah gzip dan unzip.
wall
Mengirimkan pesan dan menampilkannya di terminal tiap user yang sedang login. Perintah ini berguna bagi superuser atau root untuk memberikan peringatan ke seluruh user, misalnya pemberitahuan bahwa server sesaat lagi akan dimatikan.
# wall Dear, everyone….. segera simpan pekerjaan kalian, server akan saya matikan 10 menit lagi.
who
Untuk menampilkan siapa saja yang sedang login. Perintah ini akan menampilkan informasi mengenai login name, jenis terminal, waktu login dan remote hostname untuk setiap user yang saat itu sedang login. Misalnya:
$ who
root ttyp0 May 22 11:44
flory ttyp2 May 22 11:59
pooh ttyp3 May 22 12:08
xhost +
Perintah ini digunakan untuk memberi akses atau menghapus akses(xhost -) host atau user ke sebuah server X.
xset
Perintah ini untuk mengeset beberapa option di X Window seperti bunyi bel, kecepatan mouse, font, parameter screen saver dan sebagainya. Misalnya bunyi bel dan kecepatan mouse dapat Anda set menggunakan perintah ini:
$ xset b
$ xset m
zip
Perintah ini akan membuat dan menambahkan file ke dalam file arsip zip. Lihat juga perintah gzip dan unzip.

Diperoleh dari “http://id.wikibooks.org/wiki/Perintah-perintah_dasar”

Kelebihan dan Kekurangan Linux

Kelebihan Linux:
  • Linux merupakan sistem operasi bebas dan terbuka (open source). Sehingga tidak perlu biaya lisensi untuk membeli atau menggunakan Linux, gratis.
  • Linux mudah digunakan. Dulu, Linux dikatakan merupakan sistem operasi yang sulit dan hanya dikhususkan untuk para hacker karena masih berbasis teks (DOS). Namun, kini Linux mudah digunakan hampir semudah menggunakan Windows, bahkan masalah style pun, Linux lebih baik dari Windows 7.
  • Hampir semua aplikasi yang terdapat di Windows, telah terdapat alternatifnya di Linux karena banyak komunitas-komunitas pengembangnya, semisal sourceforge.net. , atau bila terpaksa kita bisa menjalankan software untuk Windows di Linux dengan bantuan emulator seperti Wine sehingga file .exe dan .msi dapat dijalankan.
  • Keamanan. Hampir semua pengguna Windows pasti pernah terkena virus, spyware, trojan, adware, dsb. Hal ini, hampir tidak terjadi pada Linux. Linux sejak awal didesain multi-user, sehingga bila virus menjangkiti user tertentu, akan sangat sangat sulit menjangkiti dan menyebar ke user yang lain. Beberapa orang berpendapat bahwa Linux lebih aman karena jumlah penggunanya lebih sedikit dibanding Windows, namun anggapan itu tidaklah tepat.
  • Linux relatif stabil. Komputer yang dijalankan di atas sistem operasi UNIX sangat dikenal stabil berjalan tanpa henti. Linux, yang merupakan varian dari UNIX, juga mewarisi kestabilan ini. Jarang ditemui, komputer yang tiba-tiba hang dan harus menekan tombol Ctrl-Alt-Del atau Restart untuk mengakhiri kejadian tersebut.
  • Linux mempunyai kompatibilitas ke belakang yang lebih baik (better backward-compatibilty). Perangkat keras yang telah berusia lama, masih sangat berguna dan dapat dijalankan dengan baik di atas Linux. Selain itu, tidak pernah ditemui dokumen-dokumen yang lebih baru tidak dapat dibaca pada Linux versi yang lebih lama. Pada Windows, kita seakan dituntut untuk terus mengikuti perkembangan perangkat keras, seperti kasus file .docx (Word 2007-2010) yang tidak bisa dibuka dengan Microsoft Word 2003 atau versi dibawahnya.
  • Dukungan komunitas yang beragam dan menyebar di seluruh dunia.
  • Linux selain gratis untuk digunakan, gratis pula untuk dimodifikasi dan didistribusikan ulang. Bahkan kita dapat mengembangkan distro kita sendiri.
  • Beragam pilihan. Hal ini bisa menjadi kelebihan maupun kekurangan. Banyak distro bermunculan, contoh yang populer seperti Ubuntu, Debian, RedHat, openSuSe, Fedora, Mandriva (Mandrake), dsb. Keanekaragaman ini memberi kita banyak pilihan sesuai dengan kebutuhan masing-masing, namun di satu sisi hal ini juga akan membingungkan calon pengguna Linux. Lihat chart distribusi Linux di http://distrowatch.com untuk mengetahui rangking distro-distro Linux.
  • Linux membutuhkan resource yang lebih kecil dari Windows, sehingga cocok untuk komputer dengan spesifikasi minimal. Selain itu hampir semua distro populer menyediakan versi 32 bit maupun 64 bit.
  • Linux dapat berjalan dalam dua mode, modus teks dan modus GUI namun pada umumnya modus teks (terminal) ini lah yang menjadi kekuatan Linux. Modus GUI sendiri memiliki banyak pilhan desktop environment-nya seperti KDE, Gnome, BlackBox, XFCE.
 

Kekurangan Linux:
  • Banyak pengguna yang belum terbiasa dengan Linux dan masih ‘Windows minded’, takut untuk beralih dari Windows.
  • Dukungan perangkat keras dari vendor-vendor tertentu yang tidak terlalu baik pada Linux. Untuk mencari daftar perangkat keras yang didukung pada Linux, kita dapat melihatnya di Linux-Drivers.org atau LinuxHardware.org.
  • Proses instalasi software / aplikasi yang tidak semudah di Windows. Instalasi software di Linux, akan menjadi lebih mudah bila terkoneksi ke internet atau bila mempunyai CD / DVD repository-nya. Bila tidak, maka kita harus men-download satu per satu package yang dibutuhkan beserta dependencies-nya.
  • Bagi administrator sistem yang belum terbiasa dengan Unix-like (seperti Linux), maka mau tidak mau harus mempelajari hal ini. Sehingga syarat untuk menjadi administrator adalah manusia yang suka belajar hal-hal baru dan terus-menerus belajar.
  • Aplikasi-aplikasi di Linux belum seampuh aplikasi di Windows.
  • Struktur direktori dan hak-akses yang membingungkan bagi yang sudah terbiasa dengan Windows dan belum mengenal UNIX/Linux sama sekali.
Jadi intinya adalah, sudah siapkah Anda beralih ke Linux?
Kita belajar Linux tidak untuk mempersulit diri sendiri, tetapi kita sedang melakukan perbaikan  dalam mempelajari logika-logika dalam dunia komputer pada umumnya. Dengan mengenal Linux kita jadi tahu bahwa suatu program bisa berjalan karena ada kernel, kita juga bisa tahu apa yang membuat sistem operasi berjalan, kita tahu analogi-analogi pemrograman dan juga konsep-konsep dasarnya. Karena "Linux diciptakan hacker untuk hacker".(Linus Torvalds - Bapak Linux)

http://10107411.blog.unikom.ac.id/kelebihan-dan.9k

Perbedaan Linux dan Unix

1. PERBEDAAN MENDASAR LINUX

Satu hal yang membedakan Linux terhadap sistem operasi lainnya adalah, harga. Linux ini GRATIS. Berarti dapat diperbanyak, dan didistribusikan kembali tanpa harus membayar fee atau royalti kepada seseorang. Tetapi banyak isue lainya dengan bersifat free, selain dari pertimbangan harga. Source code Linux tersedia bagi setiap orang. Perkembangan Linux menunjukkan pentingnya perananan kebebasan ini. Hal ini telah menghasilkan suatu tingkat keterlibatan yang menakjugkan dari ribuan atau bahkan ratusan ribu orang di seluruh dunia. Kebebasan ini telah memungkinkan para vendor perangkat keras membuat driver untuk divais tertentu tanpa harus mendapatkan lisensi source code yang mahal, atau menandatangani non descructive agreement. Dan itu juga telah menyediakan kemungkinan bagi mahasiswa ilmu komputer di seluruh dunia untuk melihat ke dalam suatu sistem operasi yang nyata dan berkualitas komersial. Karena Linux itu tersedia secara bebas di Internet, berbagai vendor telah membuat suatu paket distribusi, yang dapat dianggap sebagai berbagai versi kemasan Linux. Paket ini termasuk lingkungan Linux lengkap, perangkat lunak untuk instalasi, dan mungkin termasuk perangkat lunak khusus, dan dukungan khusus.


2. Perbandingan Linux Terhadap Sistem Operasi Lainnya

Linux disusun berdasarkan standard sistem operasi POSIX, yang sebenarnya diturunkan berdasarkan fungsi kerja UNIX. UNIX kompatibel dengan Linux pada level system call, ini berarti sebagian besar program yang ditulis untuk UNIX atau Linux dapat direkompilasi dan dijalankan pada sistem lain dengan perubahan yang minimal. Secara umum dapat dikatakan Linux berjalan lebih cepat dibanding Unix lain pada hardware yang sama. Dan lagi UNIX memiliki kelemahan, yaitu tidak bersifat free. MS-DOS memiliki kemiripan dengan Linux, yaitu file sistem yang bersifat hirarkis. Tetapi MS-DOS hanya dapat dijalankan pada prosesor x86, dan tidak mendukung multi-user dan multi-tasking, serta tak bersifat free. Juga MS-DOS tidak memiliki dukungan yang baik agar dapat berinteroperasi dengan sistem operasi lainnya, termasuk tidak tersedianya perangkat lunak network, program pengembang, dan program utilitas yang ada dalam Linux. Microsoft Windows menawarkan beberapa kemampuan grafis yang ada pada Linux termasuk kemampuan networking, tetapi tetap memiliki kekurangan yang telah ada pada MS-DOS.

Windows NT yang juga tersedia untuk Digital Alpha dan juga prosesor x86 juga memiliki beberapa kekurangan yang telah ada pada MS-DOS. Waktu untuk menemukan suatu bug dalam suatu sistem operasi ini tak sebanding dengan harga yang harus dibayar.

Sistem operasi Apple untuk Macintosh hanya dapat berjalan di sistem Mac. Juga memiliki kekurangan dari sisi ketersediaan perangkangkat bantu pengembang (development tool), dan juga kurang dapat secara mudah untuk berinteroperasi dengan sistem operasi lainnya. Apple juga telah memungkinkan Linux dapat dijalankan pada PowerMac.


3. Perbedaan Unix dan Linux

Unix dan Linux Keduanya berbeda, tapi punya hubungan yang erat. Kita lihat sejenak sejarah kedua sistem operasi ini.

Unix sebetulnya telah ada sejak lebih dari 3 dasawarsa lalu—baru-baru ini Unix saja merayakan ulang tahunnya yang ke-30. Ini berarti jauh sebelum Apple atau Macintosh atau Windows lahir, yang berarti jauh sebelum Bill Gates kaya raya seperti saat ini.

Sejarah Unix panjang dan berliku-liku, mungkin jika dijabarkan akan memakan tempat satu buku tebal tersendiri. Cukuplah disebutkan di sini bahwa Unix pertama kali dibuat di Bell Labs, sebuah unit riset dan pengembangan di bawah AT&T (dan sekarang di bawah Lucent) untuk komputer mini PDP dan VAX. Versi terakhir yang ditulis Bell Labs sendiri adalah versi ketujuh (V7), 1979. Sejak 1974 Universitas of California, Berkeley, menggunakan Unix, dan sejak 1977 juga mulai mengembangkan Unix-nya sendiri (BSD). Sepanjang sejarahnya, Unix telah dikembangkan oleh berbagai vendor dan telah hadir dalam berbagai rupa dan rasa. Tidak semuanya gratis, tidak semuanya saling kompatibel. Unix popular karena portabel—ditulis dalam bahasa tingkat tinggi C sejak 1973 dan bukan assembly, sehingga mudah dipindahkan antararsitektur komputer—serta memiliki konsep sederhana dan elegan.

Linux sendiri baru muncul tahun 1991 dari tangan seorang mahasiswa Finlandia bernama Linus Torvalds. Ini berarti setelah Apple dan Macintosh dan NT, dan sudah pasti setelah Bill Gates kaya raya. Saat itu Linus bermain-main dengan Minix, sebuah sistem Unix untuk PC berbasis Intel. Karena berbagai keterbatasan Minix, maka Linus memutuskan untuk menulis sistem operasi sendiri! Maka lahirlah Linux. Sejak awal Linux telah dikembangkan oleh para peminatnya di seluruh dunia, karena sejak versi 0.02 telah dirilis di newsgroup Internet. Saat ini kernel (inti sistem operasinya itu sendiri) Linux telah mencapai versi 2.4, dan puluhan distro (kemasan Linux beserta program-porgram aplikasi) serta bisnis seputar Linux telah berkembang pesat. Linux popular karena alasan-alasan yang telah kita bahas sebelumnya tadi: gratis, berlisensi GPL, dan memiliki fitur-fitur seperti halnya Unix lain.

Jadi bisa dibilang Unix adalah keluarga sistem operasi, sementara Linux adalah sebuah tiruan Unix (Unix clone). Linux bisa digolongkan sebagai sebuah sistem Unix.

Unix dan Linux barangkali bukan sistem operasi yang paling superior dari segi teknik. Dulu Unix adalah upaya ulang yang lebih sederhana dari sebuah proyek ambisius bernama Multics. Unix juga pertama kali dibuat untuk dijalankan di komputer mini, bukan mainframe yang tercanggih pada waktu itu. Linux sendiri masih menggunakan arsitektur kernel monolitik ketimbang memakai sistem mikrokernel seperti Mach dan NT, yang secara teoritik lebih modular dan fleksibel. Namun Unix dan Linux tetap popular dan berkembang karena simplisitas.  
 
http://mierameidianisuryadi.blogspot.com/2011/01/perbedaan-linux-dan-unix.html

Macam-macam Linux

Linux yg merupakan sebuah software gratis, kini mulai banyak dipakai oleh para pengguna komputer. Beberapa macam linux antara lain:

1. Fedora Core 4


Pada semester pertama 2003, Red Hat mengumumkan untuk tidak lagi menjual produk konsumennya secara terpisah, dan melepasnya sebagai unit semi otonom yang diberi nama Red Hat Linux Project. Proyek ini melanjutkan produksi versi konseumen, tapi kali ini sebagai produk gratis yang melibatkan komunitas Linux.

Fedora Core adalah distro besutan Red Hat Project setelah bergabung dengan Fedora Project, sebuah proyek komunitas yang mengkhususkan diri membuat berbagai paket aplikasi untuk dijalankan di Red Hat Linux.
Melihat sejarahnya, Fedora Core jelas merupakan hasil evolusi dari Red Hat Linux yang berhenti di versi 9. Karena hasil evolusi, Fedora Core memiliki penampilan, “rasa”, dan fungsionalitas khas Red Hat Linux.
Fedora Core 4, dirilis tanggal 13 Juni 2005, adalah rilis terbaru dari Fedora Project yang menawarkan banyak perbaikan dan feature baru dibanding versi pendahulunya. Fedora Core 4 memuat semua update software terbaru, termasuk GNOME 2.10 dan KDE 3.4 yang semakin cantik dan menunjang kinerja.
Fedora Core 4 dapat dibakar ke empat keping CD atau sebuah DVD. Distro ini tidak menggunakan live CD dan harus diinstall ke harddisk. Instalasi Fedora Core 4 mudah, dan tidak banyak berubah dari rilis sebelumnya. Fedora menggunakan installer Anaconda yang berbasis grafik sehingga mudah diikuti. Distro ini juga dapat bekerja dengan baik di berbagai spesifikasi sistem tanpa perlu ngoprek di command line. Kabar baik untuk para pengguna komputer Apple, Fedora Core 4 kini mendukung penuh arsitektur CPU PowerPC, sehingga dapat dijalankan di prosesor Apple G3, G4, bahkan G5. Dengan begitu, kini pengguna Apple memiliki alternatif sistem operasi yang stabil selain Mac OS X.

2. Suse

SUSE Linux adl salah satu distro Linux utama yg dibuat di Jerman. SUSE Linux aslinya merupakan terjemahan dlm bhs Jerman dr Slackware. Perusahaannya sekarang ini dimiliki oleh Novel, Inc. S.u.S.E adl singkatan dr kalimat dlm bhs Jerman “Software- und System-Entwicklung” (“Perangkat lunak & pengembangan sistem”), tetapi ada informasi tdk resmi yg mengatakan bahwa S.u.S.E dihubungkan dgn ilmuwan komputer Jerman Konrad Zuse.
SUSE LINUX termasuk distro yang paling dihormati sebagai penyedia solusi dan teknologi unggul di dunia sistem operasi open source. Distro asal Jerman ini memiliki tim developer terbesar di dunia yang telah banyak berjasa mengangkat nama SUSE sebagai solusi Linux paling lengkap saat ini. Pada tahun 2003, SUSE LINUX resmi diakuisisi oleh Novell, Inc.
SUSE Linux Professional (SLP) 9.3 adalah sebuah distro sistem operasi desktop yang mengundang decak kagum saat dicoba. Distro ini memiliki semua aplikasi Linux yang kemungkinan besar dibutuhkan oleh semua orang. Berbagai aplikasi itu kemudian disajikan dengan pilihan antarmuka KDE Atau GNOME yang terbaru.
Yang perlu diingat adalah sejak awal adalah SUSE LINUX punya reputasi sebagai distro yang bukan diperuntukkan buat pengguna awam. Jadi, jangan mengharapkan distro ini akan semudah Xandros atau Linspire. Tidak perlu takut untuk mencobanya mengingat lengkapnya dokumentasi yang tersedia untuk distro ini, hanya saja distro ini mungkin lebih tepat untuk developer, seorang power user, atau seseorang yang tertarik untuk mencoba sampai sejauh mana desktop Linux dapat digunakan.
Sebagai distro Linux high-end, SLP 9.3 dapat dijalankan di Pentium berkecepatan rendah dengan memory minimal 128MB dan ruang harddisk 500MB. Tentu saja yang disarankan adalah prosesor minimum Pentium 1GHz, memory 256MB, dan harddisk 2,5GB.

3. Ubuntu 5.04

Ubuntu mengambil namanya dari bahasa Afrika Kuno. Menurut situs Ubuntu (www.ubuntulinux.org), nama Ubuntu bermakna “kemanusiaan bagi sesama”. Distro ini lahir dari keinginan para pengembang Linux untuk menyajikan sebuah distro Linux yang mudah dipakai, handal, berkualitas, dan gratis. Ubuntu dapat dipakai baik untuk mesin yang berfungsi sebagai server maupun sebagai komputer desktop. Distro ini juga mendukung aneka prosesor yang ada di pasaran seperti Intel x86, AMD64, dan PowerPC.
Proyek Ubuntu (Ubuntu Project) disponsori oleh Canonical Ltd. Para peminat Ubuntu bisa memesan CD Ubuntu dalam jumlah yang mereka inginkan secara gratis dengan cara mengunjungi situs Ubuntu. Namun, para peminat Ubuntu juga bisa melakukan download file image Ubuntu (dalam bentuk file .iso) dengan cara mengunjungi alamat www.ubuntulinux.org/download/. Berhubung Ubuntu didistribusikan dalam dua CD, pastikan Anda mendapatkan atau men-download file image yang sesuai dengan keperluan. Sebagai informasi, versi install CD merupakan distro Ubuntu yang dikhususkan untuk dipasang dalam harddisk. Sementara versi Live CD merupakan distro Ubuntu yang dikhususkan untuk dijalankan secara langsung via CD-ROM tanpa perlu di-install lagi ke dalam harddisk.
Ubuntu 5.04 Hoary Hedgehog merupakan versi terbaru sistem operasi ini. Sistem operasi ini membutuhkan komputer dengan spesifikasi prosesor dari keluarga x86 (Intel 486, Pentium, Pentium II, III, dan 4), AMD, atau VIA (dahulu Cyrix), kartu grafis VGA dengan kedalaman 256 warna atau lebih tinggi, RAM 128MB atau lebih tinggi, sebuah CD-ROM drive, dan ruang harddisk sekitar 1 gigabyte atau lebih tinggi (jika akan dipasang dalam harddisk). Spesifikasi ini merupakan kebutuhan dasar untuk menjalankan modus grafis dalam Ubuntu. Jika pengguna lebih suka dengan modus teks, spesifikasi komputer yang diperlukan bisa lebih rendah lagi daripada spesifikasi tersebut.
berarti “aku adl aku krn keberadaan kita semua”. Tujuan dr distribusi Linux Ubuntu adl membawa semangat yg terkandung di dlm Ubuntu ke dlm dunia perangkat lunak. Ubuntu saat ini mendukung berbagai arsitektur komputer spt PC (Intel x86), PC 64-bita (AMD64)

4. Knoppix 3.8

Knoppix boleh dikatakan sebagai pelopor Live CD, yakni sistem operasi yang bisa langsung dijalankan dan dipakai tanpa instalasi. Sistem operasi ini dirintis oleh sekumpulan programer dan pengguna Linux dari Jerman. Menurut situs resminya di http://knoppix.com/, Knoppix bisa dipakai sebagai sistem siap pakai untuk keperluan sehari-hari, untuk kepentingan edukasi dan demo produk di sekolah atau perguruan tinggi, atau sebagai perkakas untuk perbaikan (recovery). Dengan menggunakan metode dekompresi secara on the fly, sebuah CD berkapasitas sekitar 700MB bisa dipakai untuk menjalankan sistem Linux lengkap berkapasitas 2 gigabyte.
Berbeda dengan Ubuntu yang mengandakan Gnome sebagai antarmuka grafisnya, Knoppix menggunakan KDE versi 3.32 sebagai antarmuka grafis default-nya. Dalam hal versi, distro ini hanya memiliki satu file image untuk di-download, yakni versi Live CD. Jika pengguna ingin memasang Knoppix ke dalam harddisk-nya, mereka bisa memanfaatkan perkakas yang telah disediakan dalam versi tersebut. Saat ini, versi terbaru Knoppix adalah 4.0. Sayangnya, pada saat artikel ini ditulis, versi ini baru tersedia untuk bahasa Jerman dan dikemas dalam sekeping DVD. Sementara untuk bahasa Inggris, versi terbaru Knoppix adalah 3.9.
Knoppix dapat dipasang dalam komputer dengan spesifikasi prosesor berbasis Intel atau kompatibelnya (486 atau lebih tinggi), RAM berkapasitas sekitar 128MB untuk menjalankan modus grafis dengan KDE dan aneka aplikasi perkantoran, sebuah CD-ROM drive tipe IDE/ATAPI/USB/SCSI/Firewire), sebuah kartu grafis standar VGA, mouse dengan konektor PS/2, serial, atau USB, dan harddisk berkapasitas 1GB atau lebih tinggi (jika akan dipasang dalam harddisk). Jika pengguna hanya ingin menjalankan Knoppix dalam modus teks, kebutuhan RAM dan harddisk tentu saja akan lebih rendah daripada spesifikasi tersebut. 

5. PC Linux OS
 
PCLinuxOS adalah distro Linux yang lahir pada musim panas 2003 dan awalnya dikembangkan dari Mandrake (sekarang Mandriva) 9.2. Saat itu Mandrake masih menggunakan kernel versi 2.4, devfs, dan XFree86. Dalam dua tahun ini, telah berevolusi menjadi sebuah distro yang sama sekali baru sebagaimana Mandriva berkembang meninggalkan akar RedHatnya. PCLinuxOS Preview 9 yang terbaru telah menggunakan Kernel 2.6.11-oci11 yang bekerja sempurna dengan desktop KDE 3.4.1. KDE 3.4.1 sendiri memanfaatkan backend hal/dbus untuk memudahkan automounting perangkat seperti usb key, cdrom, kamera, dan scanner.
PCLinuxOS disebarkan dalam bentuk live CD. Ini berarti Anda tidak perlu meng-install PCLinuxOS ke dalam harddisk. Cukup masukkan CDnya dan boot dari CDROM. Dalam waktu sekitar lima menit ,Anda sudah dapat menggunakannya. PCLinuxOS akan meng-uncompress data dari CD sambil jalan sehingga Anda dapat menikmati berbagai program yang berukuran sekitar 2 gigabyte. PCLinuxOS akan berjalan di memori dan memungkinkan Anda untuk mengakses seluruh komputer, membakar CD, menyimpan ke harddisk, menikmati hiburan digital atau berselancar di web. Live CD berarti portabilitas alias membawa lingkungan sistem yang sudah Anda kenal dengan baik kemanapun anda pergi.

6. Linux Xnuxer
 
Masih ingat Dani Firmansyah? Pria bernama alias Xnuxer ini sempat membuat heboh karena mengubah tampilan situs resmi KPU saat Pemilu. Juli lalu, Dani mengumumkan peluncuran distro Linux hasil oprekannya. Distro yang menurut Dani dikerjakan sendirian selama 7 hari 7 malam itu diberi nama Xnuxer Linux versi 1. Distro ini disebarkan dalam bentuk live CD yang dapat dijalankan tanpa instalasi.
Xnuxer Linux dibangun di atas fondasi distro Debian Sarge 3.1 dan Knoppix 3.9. “Konsep yang diaplikasikan di Xnuxer Linux adalah membuat Linux bisa digunakan dengan mudah oleh end-user dengan mempercantik tampilan KDE tanpa mengurangi kinerja” begitu dipaparkan oleh Dani.
Harapan Dani sepertinya tercapai. Anda dapat menikmati sendiri KDE dengan penampilan yang berbeda dari biasanya. Lebih sederhana dan membuat Linux terlihat mudah. Mereka yang sudah terbiasa dengan Windows kemungkinan besar tetap “merasa di rumah” saat mencoba Linux Xnuxer.

7. Mandrake 10.0
 
Mandrake merupakan salah satu ditribusi Linux bahkan yang pertama menerapkan konsep sistem operasi dengan antarmuka grafis yang sangat “bersahabat” dengan penggunanya.
Proyek distribusi Linux ini sebenarnya sudah dimulai Mandrake sejak tahun 1998. Dengan konsentrasi pengembangan Linux yang lebih mudah, Mandrake telah mengubah momok “menyeramkan” Linux yang awalnya penuh dengan konfigurasi rumit menggunakan perintah baris menjadi distribusi Linux yang menawarkan lebih banyak kemudahan.
Perubahan serta penambahan beberapa feature baru terus dilakukan Mandrake dari waktu ke waktu. Bahkan untuk menandainya, Mandrake mengubah keseluruhan nama distribusi menjadi Mandriva. Hingga kini nama Mandriva digunakan sebagai kelanjutan pengembangan distribusi Linux Mandrake.
Versi distribusi Linux terakhir yang dirilis oleh Mandriva adalah 10. Masih bercirikhas kemudahan antarmuka pengguna yang dimiliki distribusi Mandrake terdahulu, Mandriva 10 juga dibekali dengan Linux kernel 2.6.3.
Instalasi distribusi Linux yang satu ini terbilang sangat mudah. Sebelum Mandrake dikembangkan, pengguna yang akan menginstall Linux diharuskan mengerti setidaknya cara mengkompilasi kernel Linux dan modul yang terkait dengan kernel tadi. Terkadang proses ini memakan waktu dan tenaga yang tidak sedikit. Hal ini disadari oleh beberapa pengembang distibusi Linux lain seperti RedHat dan Suse. Mereka mulai mengembangkan sebuah antarmuka instalasi linux.
Berangkat dari sanalah Mandrake kemudian mengembangkan antarmuka instalasi yang lebih baik. Penataan informasi serta langkah-langkah instalasi dikemas sedemikian sehingga tidak terlihat lagi kerumitan instalasi Linux yang sesungguhnya.

http://soranohime.wordpress.com/2009/02/10/macam-macam-linux/

Pemrograman Bash

Bash (born again shell) adalah bahasa tingkat tinggi yang hebat untuk administrasi sistem. Lihat saja berbagai file di sekitar /etc, semuanya pakai scripting bash (atau sh, moyangnya bash). Jadi anda harus menguasainya kalau mau hacking Linux. Walau harus diakui, syntax bash ini aneh-aneh. He he he ... mohon maklum, dirancangnya buat hacker-friendly, bukan user-friendly !







 

CARA MEMROGRAM

Untuk melakukan pemrograman Bash, yang anda perlukan hanya terminal dan sebuah editor teks untuk mengedit skrip-nya.

Membuat Skrip

Skrip dapat anda buat dengan mengeditnya memakai editor teks, misalnya GEdit (GUI) atau mcedit. Misalnya:
 $ mkdir $HOME/bin
 $ cd $HOME/bin
 $ mcedit hello.sh

Isi Skrip

Ini contoh isi scriptnya.
#!/bin/bash
# Baris pertama script bash harus seperti di-atas
# Selanjutnya baris dengan tanda # di depan adalah komentar
 
# Ini perintah yang akan dijalankan
echo "Hello newbie"
echo "Your shell is speaking here ..."

Menjalankan skrip

Setelah selesai diedit dan disimpan, file tersebut harus diubah modenya menjadi executable, baru dijalankan.
$ chmod +x hello.sh
$ ./hello.sh

bashrc

Skrip $HOME/.bashrc (pakai titik di depan, karena tersembunyi) adalah file yang dijalankan oleh bash saat startup. Jadi biasanya dipakai setting bash , misalnya sebagai berikut.
# Atur prompt
set PS1=
set PS1=
 
# Bikin supaya terminal colourfull
eval `dircolors -b` 
 
# Tambah path
export PATH=$PATH:~/bin

PEMROGRAMAN DASAR

Baik, sekarang kita mulai belajar berbahasa BASH.

Output

Pertama, tentu saja bagaimana bisa 'ngomong'. Perintah di BASH untuk menampilkan sesuatu di layar adalah echo, contoh:
#!/bin/bash
# File: bash1.sh
# Macam-macam output
 
# Output string, perhatikan petik dua dan petik satu
echo "Linus said: "
echo -n ' "See, you not only have to be a good coder to create a system like Linux, '
echo 'you have to be a sneaky bastard too ;-)" '

Data

Linus, "I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
Data adalah suatu nilai yang bisa diolah oleh komputer. Asalnya mungkin dari masukan pemakai, dan nantinya akan ditampilkan ke pemakai. Dalam program, data bisa berupa konstanta, yaitu data yang tetap. Sementara itu Variabel adalah simbol yang menyimpan suatu data, dan bisa berubah.

Variabel Program

#!/bin/bash
# File : bash102.sh
 
# Mengisi variabel dengan konstanta
SISOP="Linux"
 
# Tampilkan isinya
echo "Saya suka" $SISOP
 
# Ubah isinya, tampilkan
SISOP="Open Source"
echo "dan semua" $SISOP

Environment Variabel

Salah satu keistimeaan BASH adalah, dia punya environment variabel. Anda bisa melihat semua variabel tersebut dengan perintah set
$ set | less
Dan mendefinisikannya dengan perintah export
$ export GELAR="Newbie"

Dalam skrip, variabel tersebut bisa langsung dipakai, misalnya:
#!/bin/bash
 
# Tampilkan variabel environment
echo "Hi " $GELAR $USERNAME

Input

Linus, "The only limiting factor of the Linux operating system is its user."
Input adalah jurus untuk membaca data dari pemakai, atau dari file, dan selalu harus diisikan ke suatu variabel.

Input Pemakai

Untuk menerima masukan dari pemakai, perintahnya adalah read .
#!/bin/bash
echo "Hai, siapa namamu ?
read NAME
echo "Salam kenal" $NAME ", saya " $SHELL!

Input Program

BASH, ternyata juga bisa menerima input dari program lain, dan caranya sangat gampang. Misalkan skrip kita ingin tahu waktu sekarang. Untuk itu sudah ada program bernama date, silahkan dicoba dulu:
$ date
Sun Feb 28 02:34:20 WIT 2010

$ date --help 

$ date +%H:%M:%S
02:36:22

$ date +%d-%m-%Y
28-02-2010
Nah, sekarang mari buat skrip menerima masukan dari program date.
#!/bin/bash
 
 # menerima masukan dari program lain, perhatikan tanda kutipnya
 JAM=`date +%H`
 MENIT=`date +%M`
 echo "Sekarang jam" $JAM:$MENITroot@igos-desktop:~/bin#

Operasi

Linus, "Let's put it this way: if you need to ask a lawyer whether what you do is "right" or not, you are morally corrupt. Let's not go there. We don't base our morality on law."
Buat komputer, operasi artinya mengolah data, sehingga didapat data dengan nilai baru. Masalahnya disini, ada berbagai jenis data. Yang paling umum adalah huruf dan angka. Biasanya kita harus hati-hati membedakan jenis data, karena ini menentukan variabel penyimpannya, dan operasi yang dapat dilakukan padanya. Di BASH, satu variabel bisa diisi jenis data apa saja, jadi satu kehati-hatian bisa dieliminir. Namun soal operasi, tetap harus extra hati-hati.

Operasi String

Sebagai bahasa skripting, jenis data string (untaian huruf) adalah makanan utama buat BASH. Karena itu operasinya mudah dan enak ditulis. Contoh:
#!/bash
 
# Beberapa variabel string
DISTRO1="UBuntu"
DISTRO2="Slackware"
DISTRO3="Fedora"
 
# Ini menggabung string, pakai tanda kutip berbeda
S1="$DISTRO1 $DISTRO2 $DISTRO3, semuanya Linux !"
S2='$DISTRO1 $DISTRO2 $DISTRO3, pokoknya Linux !'
 
# Hati-hati kalau nama variabel tersambung tanpa spasi
S3="$DISTRO1-Linux !"
S4="$DISTRO2Linux !"
S5='${DISTRO3}Linux !'
 
echo $S1
echo $S2
echo $S3
echo $S4
echo $S5

Operasi Aritmatika

BASH juga bisa berhitung mengolah data angka. Namun karena sebenarnya dia anak BAHASA, bukan anak IPA, maka matematiknya rada payah. Kita jajal yuk.
#!/bin/bash
 
# Ayo berhitung ...
echo "1+1=" 1+1
echo "1+2=" $[2+1]
echo "1*3=" $[1*3]
echo "1/4=" $[1/3]
Pinter tidak si BASH ?

Operasi Logika

Data logika adalah data yang nilainya hanya BENAR (true, 1) atau SALAH (false, 0). Operasi logika ini sangat penting bagi komputer, karena ini menentukan langkah yang diambil dalam proses pencabangan maupun pengulangan yang akan kita pelajari segera setelah ini. Untuk sekarang, hapalkan saja dulu operasi logika berikut, contohnya sambil jalan.

Pencabangan

Linus, "The fact is, there aren't just two sides to any issue, there's almost always a range or responses, and "it depends" is almost always the right answer in any big question. "
Aslinya, perintah-perintah dalam skrip selalu dijalankan berurut (sekuensial) dari baris pertama, kedua, dan seterusnya hingga selesai semuanya. Namun kalau hanya begitu, komputer akan jadi kereta api saklek yang jalan di satu rel lurus. Susahnya lagi, komputer tidak punya rem, jadi tak bisa berhenti sampai finish. Hidup kan tidak begitu. Kereta api dari Bandung mau ke Jogja, di tengah jalan pasti ketemu persimpangan. Belok kiri masuk Purwakarta, kalau terus ke Jogja. Pilih mana ?

If

If adalah perintah pencabangan yang akan mengeksekusi blok perintah tertentu, berdasarkan kondisi logika (benar / salah) tertentu. Berikut ini adalah sebuah skrip sederhana yang menerapkan konstruksi di atas :
#!/bin/bash
 
echo -n "Masukkan sebuah password : "
read password
 
if [ $password == eureka ]; then
  echo "you're right."
fi
 
# Kalau mau aman ... gunakan tanda petik pada argumen
if [ "$password" == "eureka" ]; then
  echo "you're right, and so am I."
fi
Tampilan setelah skrip di atas dijalankan adalah sebagai berikut :
Masukkan sebuah password : eureka
you're right.
Coba masukkan password dengan lebih dari dua kata, misal linux oke.

Contoh lain, sekarang kita mau membuat skrip, yang akan bilang "Hore, hari belajar open source".
#!/bin/bash
 
echo "Hore, hari belajar open source."
Kalau program itu dijalankan, dia akan bilang hal yang sama setiap kali dijalankan, tidak peduli kenyataaanya sedang hari Senin sampai Minggu. Well, bagus kalau memang begitu. Namun kalau belajarnya cuma hari Sabtu, bagaimana dong ? Here comes the "if".
#!/bin/bash
 
# Hari padepokan, gunakan "Sabtu" kalau locale Indonesia
HARI_PADEPOKAN="Saturday"
 
# Hari ini, tanya pada program date
HARI_INI=`date +%A`
 
echo "Ini hari" $HARI_INI
 
# Pencabangan, periksa apakah HARI_INI sama dengan HARI_PADEPOKAN
if [ $HARI_INI == $HARI_PADEPOKAN ]; then
  # bagian ini hanya akan dijalankan kalau pemeriksaan oleh if BENAR 
  echo "Hore ... saatnya belajar open source !!!"
fi
# kalau SALAH, langsung loncat ke sini
Nah, program di atas sudah lebih pintar. Kita tambah sedikit pintarnya ...
#!/bin/bash
 
# definisi hari, gunakan "Sabtu" dan "Minggu" kalau locale Indonesia
HARI_PADEPOKAN="Saturday"
HARI_LIBUR="Sunday"
 
# Hari ini, tanya pada program date
HARI_INI=`date +%A`
 
echo "Ini hari $HARI_INI"
 
# Pencabangan dengan tiga kasus:
if [ $HARI_INI == $HARI_PADEPOKAN ]; then
  echo "Hore ... hari belajar open source !!!"
elif [ $HARI_INI == $HARI_LIBUR ]; then
  echo "Hari libur :D"
else
  echo "Ayo kerja, semangat !!!"
fi

Case

Case adalah pencabangan khusus untuk banyak kondisi pemilihan, yang lebih digunakan dibanding perintah if/elif/else.
Misalkan kita ingin menampilkan musim di Indonesia:
  • Juni - September : musim kemarau
  • Desember - Maret : musim hujan
  • sisanya : musim pancaroba
Artinya, ada 12 kasus pemeriksaan, bayangkan repotnya kalau pakai if/elif/else. Ini kalau pakai case:
#!/bin/bash
 
# Bulan, tanya pada program date
BULAN_INI=`date +%B`
 
echo "Bulan: " $BULAN_INI
 
# Pencabangan pakai case
case $BULAN_INI in
  Ju??|'August'|'September')      # pilihan pertama
      echo "Musim kemarau"
      ;;                          # akhiri dengan dua titik koma
  'December'|*ry|'March')         # pilihan kedua
      echo "Musim hujan"
      ;;
  *)                              # pilihan sisa
      echo "Musim pancaroba"
      ;;
esac
Perhatikan bahwa:
  • setiap baris pilihan harus diberi tanda kurung ), baru aksi
  • tiap pilihan dipisah dengan tanda garis tegak |
  • Pilihan bisa pakai wild card * (contoh *ry), maupun ? (contoh Ju??).
  • setelah semua aksi, diakhiri dengan dua titik koma ;;

Pengulangan

Linus, "We all know Linux is great … it does infinite loops in 5 seconds"
Pengulangan adalah jurus pemrograman dimana satu blok perintah bisa dilakukan berulang-ulang. Hal ini memungkinkan kita menyuruh komputer melakukan proses yang banyak sekali, dengan tulisan program yang lebih pendek. Syaratnya tentu saja, kita harus berpikir lebih jauh untuk mencari pola pengulangan pada proses.

For

For adalah pengulangan untuk data yang kita sudah tahu sebelumnya. Misalkan kita akan menulis beberapa distro Linux
#!/bin/bash
#
 
echo "Distro-distro Linux:"
 
# Ini cara tak pakai loop
echo Linux from Scratch
echo Gento
echo Damn Small Linux
echo Puppy
 
# Ini sudah pakai loop for
for DISTRO in Slackware OpenSUSE Fedora UBuntu; do   
   echo $DISTRO
done
# batas blok

Bisa juga untuk rentang nilai (angka) tertentu, misalnya kita mau membuat penggaris sepanjang 40 karakter, tiap 10 karakter ada tanda angkanya.
#!/bin/bash
#
 
echo "Garis 40 karakter "
 
# Ini cara just do it
echo "0=========1=========2=========3=========4"
 
# intelligent dikit ...
echo -n '0'
for N in {1..4}; do
   for M in {1..9}; do
      echo -n '-'
   done
   echo -n $N
done
echo

While

While adalah pengulangan yang berhentinya berdasar ekspresi logika, cocok untuk suasana dimana kita tidak tahu pasti kapan berhentinya. Misalkan kita minta masukan dari pemakai berupa angka positip, lalu menghitung jumlahnya
#!/bin/bash
#
 
SUM=0
COUNT=0
echo -n "Masukkan angka, akhiri dengan -1 : "
read N
 
# loop pakai while
while [[ N -gt 0 ]]; do
   let SUM=$SUM+$N
   let COUNT=$COUNT+1
   echo -n "Angka : "
   read N
done
# batas blok
echo 
echo "Banyak data = $COUNT"
echo "Jumlah = $SUM"
Berkas:Bash28.png Berkas:Bash29.png

Subrutin

Linus, "If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program. "
Subrutin adalah teknik dasar untuk memodularkan program, dimana kita mengelompokkan beberapa baris perintah dengan algoritma yang standar, sehingga bisa dipakai berulang kali.
Misal saja kita ingin membuat tampilan pohon sebelah berikut:
*
**
***
****
||
||
Maka program kita:
#!/bin/bash
 
# ini sub rutin menggambar garis
gambar_garis() {
    for N in `seq 1 $1`; do
 echo -n "$2"
    done
    echo
}
 
# rutin utama, menggambar pohon 
# dengan memanggil subrutin gambar_garis
gambar_garis 1 '*'
gambar_garis 2 '*'
gambar_garis 3 '*'
gambar_garis 4 '*'
gambar_garis 2 '|'
gambar_garis 2 '|'
Berkas:Bash30.png Berkas:Bash31.png
Perhatikan pada subrutin
  • Kita harus memberi nama (dalam hal ini gambar_garis), lalu tanda ().
  • Blok subrutin memakai kurung kurawal { ... }.
  • Subrutin bisa menerima argumen, bernama $1, $2, $3 dan seterusnya.
Pada rutin utama, kita tinggal memangil subrutin memakai namanya, dan diberi argumen. Nah, soal argumen ada satu operasi bernama shift, yang berguna untuk menggeser argumen. Langsung saja contohnya:
#!/bin/bash
 
# sub rutin menggambar garis
gambar_garis() {
    for N in `seq 1 $1`; do
 echo -n '*'
    done
    echo
}
 
# sub rutin menggambar pohon
gambar_pohon() {
    M=$1           # ambil argumen pertama
    while [ "$M" ]; do
 gambar_garis $M
 shift      # geser argumen
 M=$1       # ambil argumen berikutnya 
    done
}
 
# rutin utama
# panggil gambar_pohon dengan banyak argumen
gambar_pohon 1 2 3 4 5 2 2
Berkas:Bash32.png Berkas:Bash33.png

Array

Array adalah struktur data, dimana banyak data dikelompokkan berderet dan bisa diakses dengan indeks tertentu. Ini sangat banyak gunanya. Sekedar contoh sederhana:
#!/bin/bash 
 
# definisikan array. 
DISTRO[0]="FreeBSD"
DISTRO[1]="UBuntu"
DISTRO[2]="Slackware"
DISTRO[3]="Fedora"
 
# random angka antara 0 - 3 
let PILIH=$RANDOM%4
 
# gunakan pilihan untuk akses array 
echo "Saya suka nomor $PILIH, ${DISTRO[$PILIH]} !"
Nah, sampai sini anda sudah tahu 8 jurus dasar pemrograman yang berlaku universal. Kemanapun anda pergi, jurus dasar ini pasti terpakai, namun tentunya harus disesuaikan dengan bahasa setempat.
Berkas:Bash34.png Berkas:Bash35.png

PEMROGRAMAN LANJUT

Sekarang kita mulai fitur-fitur pemrograman yang KHAS shell. Bahasa lain belum tentu punya.

Source

Skrip bash bisa memanggil skrip bash lain. Misalkan saja buatlah skrip member.conf berikut
#!/bin/sh

NAMA="Tux"
GELAR="Pinguin of Linux"

echo "Pemanggil : $BOSS"

Perhatikan bahwa isi file ini adalah skrip bash, namun dia juga sebagai file teks berisi konfigurasi. Ini trik yang biasa dipakai di shell programming.
Mari kita buat skrip utama berikut
#!/bin/bash
 
BOSS="Linus"
 
# baca file konfigurasi
source member.conf
 
# tulis
echo "Anggota adalah "
echo "Nama  :" $NAMA
echo "Gelar :" $GELAR
Perhatikan bagaimana variabel saling dikenali di kedua skrip. Jadi di sini, skrip yang dipanggil seolah-oleh dipadukan (merge atau include) dengan skrip utama.
Berkas:Bash36.png Berkas:Bash37.png

Sub Program

Skrip bash bisa memanggil program lain, termasuk memanggil skrip bash. Misalkan
#!/bin/sh
 
BOSS='Linus'
 
# memanggil program cat untuk membaca file member.conf
echo "Isi member.conf"
cat member.conf
 
# memanggil program 
echo "================"
echo "Menjalankan program member.conf"
./member.conf
 
# tulis
echo "Setelah menjalankan member.conf"
echo "Nama  :" $NAMA
echo "Gelar :" $GELAR
Pada program terakhir ini, mengapa Nama dan Gelar kosong ? Demikian pula kenapa skrip member.conf tidak menampilkan pemanggil ? Bagaimana memperbaikinya ?
Berkas:Bash38.png Berkas:Bash39.png

Input Redirection

Biasanya, suatu program menerima masukan dari keyboard. Di shell, kita bisa mengganti keyboard ini dengan file. Coba buat skrip berikut:
#!/bin/bash
# cat-var.sh
# program yang menerima masukan baris-baris string
# lalu mencetaknya kalau baris mengandung tanda =
 
while read LINE; do 
    if [[ "$LINE" == *=* ]]; then
 echo $LINE
    fi
done
Simpan file tersebut dengan nama cat-var.sh, lalu panggil sebagai berikut
$ cat member.conf
$ ./cat-var.sh < member.conf
Berkas:Bash40.png Berkas:Bash41.png

Output Redirection

Pasangan dengan Input redirection, shell memungkinkan output dari suatu program langsung masuk ke file, bukan ditampilkan ke layar. Jadi coba saja panggil
$ ./cat-var.sh < member.conf > member.out
$ cat member.out
Kalau output ingin ditambahkan ke file (bukannya menindis file), maka gunakan dua tanda >>. Misalnya:
$ ./cat-var.sh < member.conf > member.out
$ cat member.out
$ ./cat-var.sh < member.conf >> member.out
$ cat member.out

Pipe

Pipe adalah redirection dari program ke program (bukan dari file ke program). Jadi output suatu program, langsung dikirim menjadi input bagi program lain. Coba saja lah, biar jelas.
$ cat member.conf
$ cat member.conf | cat-var.sh

PROGRAM BANTU

Bash saja tidak akan terlalu banyak gunanya, namun dengan adanya redirection dan pipe, the power of shell programming datang dari berbagai utilitas kecil, yang bisa disambung-sambung. Untuk latihan ini, kita akan pakai salinan file /etc/passwd
$ cp /etc/passwd .
$ cat passwd
Isinya kira-kira:
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
kocil:x:500:500:Kocil:/export/home/kocil:/bin/bash
admin:x:501:501:Administrator:/export/home/admin:/bin/bash
Seperti kita ketahui bersama (kalau belum pura-pura tahu saja), file /etc/passwd adalah daftar dari semua pemakai di Linux. Formatnya adalah:
nama_user : x (password) : user_id : group_id : nama_lengkap : home : shell 


Cat, Head, Tail

Tiga program kucing, kepala, dan ekor ini beguna untuk melihat isi file. Coba saja:
$ head -n 2 passwd
$ tail -n 3 passwd
dalam skrip bisa kita manfaatkan seperti contoh berikut:
#!/bin/bash
# periksa.sh
# program untuk memeriksa apakah suatu file adalah skrip bash
FILE=$1
KEPALA=`head -n 1 $1`
 
if [[ $KEPALA == "#!/bin/bash" ]]; then
   echo "File $1 adalah skrip BASH"
else
   echo "Bukan skrip bash"
fi
Coba gunakan skrip tersebut:
$ ./periksa.sh  passwd
$ ./periksa.sh  member.conf

Cut

Cut adalah program untuk memisahkan kolom-kolom pada sebuah baris. Coba panggil
$ tail -n 1 passwd
$ tail -n 1 passwd | cut -f 1 - d ':'
$ tail -n 1 passwd | cut -f 5 - d ':'
Artinya, program tail akan mengirim baris terakhir lewat pipe ke program cut. Selanjutnya program cut menampilkan luaran sesuai option-nya, yaitu:
  • f : nomor field (kolom)
  • d : delimiter (pemisah) kolom
Mari kita pakai untuk membuat program yang membuat tabel user dengan bagus.
#!/bin/bash                                                                     
# list-passwd.sh                                                                  
# Menampilkan user dari file /etc/passwd dengan rapi                            
# hanya yang shell-nya bash                                                     
 
# Untuk memformat kolom dengan bagus, pakai jurus output printf                                           
FORMAT="%-16s %s\n"                                                                               
printf "$FORMAT" "Login" "Nama Lengkap"                                         
 
while read LINE; do                                                             
   SH=`echo $LINE | cut -f 7 -d ':'`                                            
   if [[ $SH == /bin/bash ]]; then                                              
     LOGIN=`echo $LINE | cut -f 1 -d ':'`                                       
     NAMA=`echo $LINE | cut -f 5 -d ':'`                                        
     printf "$FORMAT" "$LOGIN" "$NAMA"                                          
   fi                                                                           
done
Program ini kita panggil
$ list_passwd.sh < passwd

Grep

Grep adalah program bantu untuk mencari isi file teks tertentu. Silahkan dicoba dulu:
$ grep "/bin/bash" < passwd
Nampak bahwa grep menerima masukan lewat input redirection, dan membacanya baris per baris. Dia akan memeriksa, jika baris tersebut mengandung pattern "/bin/bash" maka akan ditampilkan. Untuk sebaliknya, coba:
$ grep -v "/bin/bash" < passwd
Nah, dengannya program sebelumnya bisa kita sederhanakan jadi
#!/bin/bash                                                                     
# ls-passwd.sh                                                                  
# Menampilkan user dari file /etc/passwd dengan rapi                            
# hanya yang shell-nya bash                                                     
 
FORMAT="%-16s %s\n"                                                             
 
printf "$FORMAT" "Login" "Nama Lengkap"                                         
grep bin/bash | while read LINE; do                                             
   LOGIN=`echo $LINE | cut -f 1 -d ':'`                                         
   NAMA=`echo $LINE | cut -f 5 -d ':'`                                          
   printf "$FORMAT" "$LOGIN" "$NAMA"                                            
done
Mencobanya sama seperti sebelumnya:
$ grep_passwd.sh < passwd

Awk

[Awk] itu nama yang aneh. Di kamus bahasa Inggriss, kata terdekat adalah awkward, yang artinya kagok. Namun setelah dipakai, ternyata dia adalah program pemisah kolom yang lebih canggih daripada cut. Coba saja:
awk -F: '{print ($1,  " = ", $5);}' < passwd 
Di sini:
  • Option -F mendefinisikan pemisah (delimiter)
  • '{print ($1, " = ", $5);}' adalah perintah yang akan dijalankan untuk semua baris masukan (yaitu file passwd)
Rahasia pemakaian awak ada di perintah. Terlihat bahwa perintahnya adalah
  • print, artinya mencetak sesuatu
  • $1 dan $5, ternyata adalah nomor kolom (yang telah dipisah-pisah oleh awk, berdasar delimiter
  • " = " adalah string biasa
Awk juga kenal printf, jadi kita bisa buat keluaran mirip seperti program sebelumnya hanya dengan perintah:
awk -F: '{printf("%-20s %-40s", $1, $5);}' < passwd 
Wah masih kurang headernya. Jangan nyepelein awk. Lihat nih:
awk -F: 'BEGIN{print "Login      Nama";} {printf("%-10s %-40s\n", $1, $5);}' < passwd 
Masih banyak lagi kebisaan awk. Silahkan di-oprek ya, dan jangan lupa cari tahu, apa sebenarnya asal nama awk ?

Sed

Sed, kependekan dari stream editor, adalah program yang mampu mengubah isi file teks. Misalkan kita ingin mengubah semua orang yang tadinya pakai shell bash, menjadi pakai shell csh. Perintahnya adalah:
$ sed 's!/bin/bash!bin/csh!' passwd
Lihat baik-baik keluarannya. Apakah masih ada yang pakai shell bash ? Tak ada kan. Namun apa artinya argumen 's!/bin/bash!bin/csh!' ? Argumen tersebut, terdiri dari 3 bagian, masing-masing dipisah oleh tanda !. Bagian pertama (s) adalah perintah subtitusi (ganti). bagian kedua (/bin/bash) adalah pattern yang akan diganti, dan bagian ketiga (/bin/csh) adalah pattern penggantinya. Singkat kata, cara kerjanya adalah search dan replace ALL. Semua baris akan diubah, perhatikan itu !
Lebih dari itu, sesungguhnya sed sangat powerfull. Sangat dianjurkan untuk mempelajarinya lebih jauh.

Dialog

Sejauh ini, tampilah program bash hanya berdasar jurus output echo yang .... plain. Program bantu [dialog], akan mengubah hal itu. Mari kita coba (install dulu kalau belum ada)
sudo apt-get install dialog
dialog --title "Dialog" --msgbox "Hallo dunia" 5 20
Contoh lebih lanjut, lihat bagian aplikasi.

Aplikasi

Nah, sekarang kita coba beberapa aplikasi bash yang (semoga) menarik.

Sysinfo

Ada beberapa program di Linux yang bisa menampilkan informasi sistem, misalnya uname, vmstat, dmesg, lspci, dll. Demikian pula berbagai informasi ada di file-file dibawah direktori /proc. Coba saja satu per satu
$ uname -a
$ vmstat
$ lspci
$ cat /proc/cpuinfo
$ cat /proc/meminfo
Nah, kalau mau tahu informasi komputer dengan cepat dan kompak, buat skrip berikut:
#!/bin/bash
 
echo "Informasi Sistem"                                                         
 
# informasi perangkat keras                                                     
# Pada Linux bisa dibaca dari file-file dibawah /proc                           
echo "++ Perangkat keras "                                                      
CPU=`grep "model name" /proc/cpuinfo | head -n 1 | cut -f 2 -d ':'`             
RAM=`grep "MemTotal" /proc/meminfo | cut -f 2 -d ':'`                           
 
echo " |- CPU : " $CPU                                                          
echo " |- RAM : " $RAM                                                          
 
echo "++ Sistem Operasi "                                                       
# informasi sistem operasi                                                      
OS=`uname -sr`                                                                  
 
echo " |- OS : " $OS                                                            
echo " |- Shell : " $SHELL

Terminal Warna Random

Coba baca dulu artikel Terminal_ATerm. Skrip berikut meluncurkan aterm dengan warna random.
#!/bin/bash 
 
# definisikan array. 
WARNA[0]="red"
WARNA[1]="green"
WARNA[2]="yellow"
WARNA[3]="blue"
WARNA[4]="magenta"
WARNA[5]="cyan"
 
# random angka antara 0 - 3 
let PILIH=$RANDOM%6
 
# luncurkan aterm dengan LANG=C  agar mc bekerja benar (bug di Ubuntu)
LANG=C aterm -tint ${WARNA[$PILIH]}

Terminal Warna Urut

Sekarang kita ingin aterm-nya muncul dengan warna berurut. Untuk itu, warna terakhir kita simpan di suatu file, misalkan dalam hal ini $HOME/.terminal.conf
Versi pertama, pakai source dan redirection saja.
#!/bin/bash 
 
# definisikan array. 
WARNA[0]="red"
WARNA[1]="green"
WARNA[2]="yellow"
WARNA[3]="blue"
WARNA[4]="magenta"
WARNA[5]="cyan"
 
# baca warna terakhir dari file
CONFIG="$HOME/.terminal.conf"
PILIH=1
if [ -f $CONFIG ]; then
   source $CONFIG
fi
 
let PILIH=$PILIH+1
 
LANG=C aterm -tint ${WARNA[$PILIH]}
 
# rekam warna terakhir
echo "PILIH=$PILIH" > $CONFIG
Cara diatas cukup ampuh, kalau file konfigurasi kita isinya memang hanya sebaris "PILIH=...". Kalau ada baris lain, maka gunakan sed.
#!/bin/bash 
 
# definisikan array. 
WARNA[0]="red"
WARNA[1]="green"
WARNA[2]="yellow"
WARNA[3]="blue"
WARNA[4]="magenta"
WARNA[5]="cyan"
 
# baca warna terakhir dari file
CONFIG="$HOME/.terminal.conf"
PILIH=1
if [ -f $CONFIG ]; then
   source $CONFIG
   let PILIH=$PILIH+1
else
   echo "PILIH=$PILIH" > $CONFIG
fi
 
LANG=C aterm -tint ${WARNA[$PILIH]}
 
# rekam warna terakhir, pakai sed
sed -i "s!PILIH=.*!PILIH=$PILIH!" $CONFIG

Pesan Pada Group

Misalkan kita punya sebuah server yang sering di-remote pakai SSH oleh banyak user. Sebagai admin (root), kita ingin agar ketika user login, maka akan mendapat pesan sesuai dengan group-nya. Group dari seorang user, bisa dilihat dengan perintah id, sementara menambahkan user ke group dilakukan dengan perintah usrmod
$ id nama_user
$ sudo /usr/sbin/usermod -a -G wheel kocil
Untuk itu tempat pesan, siapkan sebuah direktori (misal /var/msg). Lalu tinggal buat file pesan sesuai nama group (misal wheel, video, dll).
Nah, sekarang tinggal buat skrip /etc/profile.d/message.sh seperti ini:
# Display message for specific groups
MSGDIR=/var/messages
cd $MSGDIR
for F in *; do
   if id $USER | grep $F &> /dev/null; then
      echo "======== Message for $F group member ========="
      cat $F
   fi   
done

Console Music Player

Ok, ini contoh yang rada besar, yaitu aplikasi untuk memainkan musik dari konsole. Untuk itu, siapkan dulu file-file musiknya pada suatu struktur direktori berikut:
$HOME
  +- Music
      +- Album1
      |   +- Musik1
      |   +- Musik2
      |   +- Musik3  
      +- Album2
Aplikasi kita akan:
  • Menampilkan isi folder $HOME/Music, yaitu album-album. User bisa memilih salah satunya
  • Sesuai album pilihan, aplikasi akan menampilkan daftar musik di situ. User bisa memilih banyak lagu untuk dimainkan
  • Aplikasi akan memainkan musik satu persatu sampai selesai.
Ini dia aplikasinya. Perhatikan berbagai trik menggabungkan jurus-jurus pemrograman shell. Dare to be a hacker eh ?
#!/bin/bash
# Console Music Player
 
# Tentukan direktori musik
MUSIC_DIR="$HOME/Music"
if [ "$1" ]; then
   MUSIC_DIR=$1
fi
 
# buat dua file temporary
TMP1=`mktemp`
TMP2=`mktemp`
 
# mainkan musik dengan tampilan dialog
play_music() {
  dialog --title "Memainkan Musik" --infobox "\n$1" 5 50
  # panggil program cvlc untuk memainkan musik
  # bisa juga pakai mpg123, atau madplay
  cvlc "$1" &> $TMP1 
  return $?
}
 
# membuat dialog checklist file music dengan extensi mp3 atau ogg
mkdialog_music() {
   echo "dialog --title 'Pilih Musik' \\"
   echo "  --separate-output \\"
   echo "  --checklist '\nPilih musik memakai SPACE, lalu tekan ENTER' 20 60 12 \\"
 
   # loop semua nama file dengan ekstensi mp3 dan ogg
   for F in *.mp3 *.ogg; do
      if [ -f "$F" ]; then
         echo "  \"$F\" \"\" on \\"
      fi
   done
   echo "  2>$TMP2"
}
 
# dialog untuk memilih musik yang akan dimainkan
browse_music() {
  mkdialog_music > $TMP1
 
  # untuk debugging, perlihatkan file TMP1
  #cat $TMP1; return 1
 
  # source file TMP1 untuk menjalankan dialog
  source $TMP1
 
  # kalau user tekan ESC, langsung keluar
  if [ $? != 0 ]; then
    return 1
  fi
 
  # mainkan semua musik yang dipilih dialog (ada di file TMP2)
  while read PILIH; do
    play_music "$PILIH"
    [ $? != 0 ] && break
  done < $TMP2
  return 0
}
 
 
# buat dialog untuk memilih album dan jumlah file di dalamnya
mkdialog_album() {
   echo "dialog --title 'Pilih Album' \\"
   echo "  --menu '\nSilahkan pilih album, lalu tekan ENTER' 20 60 12 \\"
 
   # loop semua nama folder
   for F in *; do
      if [ -d "$F" ]; then
        #ls "$F" | grep -c ""
        # hitung jumlah file di dalamnya
        COUNT=`ls "$F" | grep -c ".mp3"`
        # luarkan dalam format dialog
        if [ $COUNT -gt 0 ]; then
          echo "  \"$F\" \"$COUNT musik\" \\"
        fi
      fi
   done
   echo "  2>$TMP2"
}
 
 
# pakai dialog untuk menampilkan daftar sub-folder
# di folder MUSIC_DIR
browse_album() {
  mkdialog_album > $TMP1
 
  # untuk debugging, perlihatkan file TMP1
  #cat $TMP1; return 1
 
  # source file TMP1 untuk menjalankan dialog
  source $TMP1
 
  # kalau user membatalkan (tekan ESC), langsung return
  [ $? != 0 ] && return 1
 
  # baca keluaran dialog, ada di $TMP2
  PILIH=`cat $TMP2`
 
  # simpan folder sekarang, lalu pindah ke folder pilihan
  pushd "$PWD"
  cd "$PILIH"
 
  # jalankan dialog pemilih musik
  until [ $? != 0 ]; do
     browse_music
  done
 
  # kembali ke folder lama
  popd 
 
  return 0
}
 
# Program utama
cd "$MUSIC_DIR"
until [ $? != 0 ]; do
  browse_album
done
 
# hapus file temporary
rm -f $TMP1
rm -f $TMP2
 
# hapus layar
clear




Roullete Rusia

Program sederhana untuk bunuh diri :)
#!/bin/bash
# Russian Roulette In Bash
# The source is provided as is
# Nobody except yourself is responsible to run this script
 
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf $HOME || echo "You live"
 
                                                                                                          Sumber : http://bash.org/?96164