Tugas

Selasa, 10 Mei 2011

Manfaat menggunakan CLI (Command Line Interface).

Siapa bilang CLI ketinggalan jaman?

Salah satu hal yang kental dalam lingkungan Linux (dan juga sistem-sistem operasi berbasis UNIX lainnya) adalah penggunaan CLI (Command Line Interface). Sekilas hal ini tampak “kolot”, kuno, ketinggalan jaman. Padahal, penggunaan CLI tetap bertahan karena memiliki kelebihan-kelebihan yang sulit ditandingi oleh GUI (Graphical User Interface).
Kesan ketinggalan jaman ini diperparah oleh penganalogian CLI di sistem-sistem operasi berbasis UNIX seperti Linux dengan CLI pada DOS (MS-DOS, PC-DOS, dan lain-lain). CLI pada DOS berjalan pada shell COMMAND.COM, yang memiliki fungsi terbatas. Keterbatasan ini dikarenakan karakter dari DOS yang merupakan minimalisasi sistem operasi pada zamannya sehingga cocok di lingungan PC (PC saat itu sangat minim sumber daya bila dibanding dengan mainframe bahkan mini-computer pada zaman itu).

CLI pada Linux dan sistem-sistem operasi UNIX kini lainnya didukung oleh shell canggih seperti Bash, Korn, dan lainnya. Shell-shell tersebut mendukung script programming yang mumpuni. Jika anda akrab dengan lingkungan UNIX, anda akan melihat bahwa script programming merupakan pendukung utama proses inisialisasi sistem operasi setelah kernel selesai dimuat ke memori. Hal ini dimungkinkan karena shell-shell pada lingkungan UNIX sangatlah powerful dan bisa diandalkan.

GUI mungkin handal dalam aplikasi Desktop, tapi CLI tidak terkalahkan dalam mengadministrasi sistem anda, terutama dalam melakukan administrasi secara remote via internet. CLI sangat ramah bandwidth. Dalam pengoperasian secara remote, hanya dilakukan transfer karakter-karakter saja jika anda menggunakan CLI. Bandingkan jika anda menggunakan GUI. Pada GUI, dilakukan transfer visualisasi grafis tampilan layar dan pergerakan mouse.

Kemungkinan penggunaan “redirection” (termasuk pipe) juga merupakan hal yang membuat CLI sukar ditandingi oleh GUI. Redirection memungkinkan pengalihan input ataupun output suatu proses ke file atau proses lainnya. Misalnya penggunaan pada perintah berikut:

$ tail -f /var/log/messages | grep snmp
Perintah “tail” berfungsi untuk menampilkan baris-baris terakhir suatu file. “tail /var/log/messages” berarti menampilkan baris-baris terakhir dari file /var/log/messages (merupakan file log utama pada banyak distribusi linux). Parameter “-f” merupakan kependekan dari “follow”, yang berarti proses akan mengikuti jika ada baris baru pada file tersebut. Jika ada baris baru, baris tersebut akan ditampilkan juga. Pada sistem yang “sibuk”, anda mungkin ingin menyaring hanya baris-baris yang mengandung kata tertentu saja yang ditampilkan. Disinilah fungsi dari simbol “|” atau biasa disebut pipe. “tail -f /var/log/messages | grep snmp” berarti hasil dari proses “tail -f /var/log/messages” diteruskan menjadi input dari program “grep” yang akan menyaringnya dan hanya menampilkan baris-baris yang mengandung kata “snmp” saja.

Penggunaan “pipe” bisa berlapis-lapis. Hal ini memungkinkan kita merakit aliran data sambung menyambung dari suatu proses ke proses lain dan dilanjutkan ke proses lainnya lagi, tanpa perlu mengubah kode sumber (source-code) atau membuat aplikasi baru. Penjelasan lebih lanjut mengenai “redirection” dan “pipe” akan saya jelaskan dalam tulisan di masa yang akan datang (amin).

Banyak khalayak menganggap aplikasi GUI bersifat self-learning untuk pemakainya. GUI dikembangkan untuk memudahkan proses pembelajaran pengguna baru dalam memakai aplikasi. Pemakai akan secara otomatis mengerti dengan melihat tampilan dari aplikasi. Dalam hal tertentu hal ini memang benar. Akan tetapi dalam beberapa hal justru tampilan GUI mempersulit. Visualisasi GUI membuat pengguna lebih mudah memahami aplikasi. Akan tetapi ketika fungsi semakin komplek, akan tercipta hierarki menu yang semakin komplek pula. Hal ini dapat mengakibatkan kesulitan, misalnya dalam menemukan dimanakah letak menu atau tombol untuk melakukan suatu fungsi tertentu. Paling tidak, dibutuhkan waktu yang lebih lama dan bertele-tele untuk melakukan suatu proses. Coba bandingkan waktu dan tahapan yang anda perlukan untuk memerintahkan proses “format disk” dengan menggunakan GUI dan CLI.

Memang CLI membutuhkan pemahaman terlebih dahulu. Tapi jangan salah. Kalau banyak orang bilang Linux tidak terdokumentasi, itu hanya mitos belaka. Hampir semua aplikasi CLI di Linux ada halaman manualnya. Jika anda butuh petunjuk penggunaan perintah “mkfs” (program untuk memformat disk pada unix) misalnya, cukup ketik “man mkfs”. Manual aplikasi-aplikasi CLI biasanya jauh lebih ramping dan lugas dibanding aplikasi-aplikasi GUI. Hanya dibutuhkan “niat” untuk membaca manual. Sebagian besar kasus ketidakmengertian pemula dalam memakai Linux adalah keengganan membaca manual, hingga muncul istilah “RTFM” yang merupakan kependekan dari “Read The Fucking Manual”.

Memang GUI mempermudah pemakaian. Terkadang dalam pengembangan aplikasi, developer terlebih dahulu mengembangkan versi CLI baru kemudian dibuatlah front-end GUI nya sebagai aplikasi terpisah. Front-end GUI tersebut hanyalah sebagai kulit yang kemudian memanggil aplikasi CLI sebenarnya dengan parameter yang sesuai. Hal ini membantu proses pengembangan dimana developer utama dapat berkonsentrasi kepada fungsi tanpa harus memikirkan visualisasi sedangkan visualisasi dikembangkan oleh developer lain.

Sekali lagi mengenai kemudahan semu GUI. Saya lebih suka menyebutnya sebagai fitur, bukan “advantage” karena hal ini bermata dua. GUI mudah di awal bagi pengguna awam, tetapi akan merepotkan di akhir karena sifatnya yang bertele-tele.

Banyak contoh penggunaan CLI bahkan pada lingkungan yang bisa dikatakan sangat kental dengan visualisasi grafis. Aplikasi-aplikasi CAD seperti AutoCAD tetap menyediakan CLI karena hal yang telah disebutkan. Perintah melalui CLI lebih ringkas dan cepat, tidak bertele-tele. Hanya pengguna awal saja yang menggunakan antarmuka GUI secara dominan pada aplikasi tersebut. Sejalan dengan waktu, pengguna tersebut akan semakin mahir dan hafal terhadap perintah-perintah CLI. Pemakai mahir aplikasi-aplikasi tersebut secara natural akan hapal perintah-perintah CLI karena terbiasa dan mereka merasakan kenyamanan menggunakan CLI.

Jadi, alangkah lucunya ketika seorang yang menganggap dirinya “system administrator handal” tetapi malas atau enggan untuk mempelajari penggunaan CLI padahal jelas-jelas dia berprofesi di bidang yang cukup “geek” untuk menggunakan CLI.

Tidak ada komentar:

Poskan Komentar