Mengetik perintah di shell bagi sebagian orang adalah cara efektif bekerja di Linux. Beberapa metode dan tips berikut ini bahkan bisa lebih mempercepat perkerjaan Anda.
Untuk orang yang baru belajar Linux, biasanya dia akan mulai dengan memahami mekanisme penggunaan sistem X Window. Untungnya, berkat interface grafis, seperti KDE atau GNOME, pengguna (user) bisa langsung mengklik shortcut di desktop untuk membuka suatu dokumen atau menjalankan suatu program. Ini menguntungkan bagi mereka yang sebelumnya sudah terbiasa menggunakan sistem operasi Windows.
Seiring dengan semakin meningkatnya keterampilan pengguna menggunakan sistem operasi Linux, biasanya pengguna tersebut akan mulai merasakan keunggulan menggunakan command line sebagai fasilitas untuk berinteraksi dengan Linux. Melalui terminal emulator (misalnya Gnome terminal atau Konsole) atau text interface, pengguna Linux bisa mengetikkan satu atau lebih perintah dan mendapatkan respons yang sama dibanding dengan melakukannya lewat interface grafis. Sering kali bahkan lebih cepat. Ini semua tergantung sejauh mana Anda menguasai perintah-perintah di shell dan menerapkannya. Secara default, mayoritas distribusi Linux menggunakan shell bernama Bash (Bourne Again Shell). Artikel ini berangkat dari asumsi di atas, yaitu diterapkan pada shell Bash. Pengetahuan dasar mengenai shell, misalnya pipe atau looping, tidak mutlak diperlukan untuk bisa memahami artikel ini karena hal-hal tersebut juga dibahas namun tidak secara mendalam. Seperti biasa, prompt # berarti perintah diketik sebagai root dan prompt $ berarti sebagai user bukan root.
Napak tilas : Perintah yang telah dijalankan bisa direkam oleh shell dan bisa dilacak dengan perintah history.
History
Mengulang perintah adalah hal yang sering terjadi, bisa karena kita lupa output perintah tersebut atau sekadar meyakinkan bahwa kita akan melakukan suatu perintah berikutnya secara benar. Misalnya, kita sudah mengetik beberapa perintah berikut:
$ date
$ ls
$ who
Bagaimana jika selanjutnya kita ingin mengulang perintah ls? Ada beberapa cara. Yang termudah adalah menekan tombol panah atas dua kali. Satu kali panah atas ditekan, maka perintah terakhir diulang. Apabila ditekan dua kali, maka perintah kedua yang diulang. Dengan demikian, pengulangan perintah date bisa dilakukan dengan menekan tombol panah atas tiga kali.
Bagaimana jika yang ingin Anda mengulang adalah perintah yang sudah dieksekusi cukup lama, katakanlah seratus perintah sebelumnya? Alternatif yang bisa digunakan adalah memakai perintah history untuk melacak “urutan” perintahnya lalu menjalankan perintah tersebut berdasarkan urutannya. Jalankan perintah:
$ history | less
Untuk menampilkan semua perintah yang pernah diketikkan. Misalnya, hasilnya seperti berikut ini.
967 sync
968 mount | grep ^/dev | sort
969 sudo powertop
970 top -s
Tampilan ini hanyalah sebagian dari output yang Anda dapat. Setiap perintah akan diawali oleh suatu angka. Angka ini bisa kita gunakan untuk memanggil ulang perintah yang bersangkutan. Apabila kita ingin mengulang perintah “top -s”, ketik saja perintah:
$ !970
Perhatikan penggunaan tanda seru sebelum angka index dari perintah.
Pencarian perintah yang sudah diketik bisa dengan menggunakan tombol kombinasi [Ctrl]+[r]. Kombinasi pertama akan mencari mundur secara incremental perintah yang pernah Anda ketik sesuai dengan string yang Anda ketik. Metode pencarian incremental bekerja secara sederhana. Misalnya, sebuah prompt ditampilkan, lalu Anda mulai mengetik satu atau lebih huruf. Perintah paling akhir yang terekam dalam history akan ditampilkan. Apabila Anda terus mengetik huruf tambahan, maka pencarian akan diteruskan. Apabila Anda telah menemukan perintah yang sesuai pada history, tekan Enter, maka perintah tersebut akan dijalankan.
Berikut ini contohnya. Misalnya, Anda pernah memasukkan perintah:
$date
$who
$whois doel@localhost
$uname -a
$cat /proc/cpuinfo
Apabila pada shell ditekan kombinasi [Ctrl]+[r], maka akan keluar prompt seperti berikut ini.
(reverse-i-search)`’:
Pada kondisi ini, jika diketik “wh”, maka tampilannya akan menjadi:
(reverse-i-search)`wh’: whois doel@localhost
Ini berarti perintah “wh” dicari mundur dan cocok dengan perintah “whois doel@localhost”. Apabila perintah ini yang akan dijalankan lagi, tekan tombol [Enter]. Apabila ingin terus mencari perintah lain yang sesuai (mengandung string “wh”), tekan lagi [Ctrl]+[r ], perintah “who” yang akan ditampilkan. Pola ini bisa diulang hingga perintah yang sesuai ditemukan.
Expansion
Istilahnya mungkin terdengar asing, tapi mungkin tanpa sadar Anda telah menggunakannya dalam bentuk sederhana. Misalnya, Anda ingin melihat semua nama file di direktori saat ini yang berhuruf depan “a”:
$ ls a*
Ingat bahwa semua perintah di Linux secara default bersifat case sensitive atau membedakan huruf besar dan kecil, jadi yang tampil hanya yang berhuruf depan “a” kecil.
Namun expansion tidak hanya berbentuk seperti ini. Bagaimana jika misalnya kita ingin membuat tiga sub direktori baru, masing-masing di dalamnya ada subdirektori lain? Simak contoh berikut ini untuk lebih memperjelasnya.
$ mkdir -p test{1,2,3}/index{1,2,3}
Hasilnya adalah direktori dengan struktur seperti berikut ini.
|– test1
| |– index1
| |– index2
| `– index3
|– test2
| |– index1
| |– index2
| `– index3
`– test3
|– index1
|– index2
`– index3
Teknik ini dikenal sebagai brace expansion.
incremental search : Lewat fasilitas search, Anda dapat mencari perintah di history sesuai dengan kata kunci yang diketik
Dengan menyebutkan angka 1, 2, dan 3 di dalam kurung kurawal, maka kita meminta shell untuk “menjabarkannya” menjadi tiga parameter yaitu test1, test2, dan test3. Hal yang sama dilakukan untuk direktori index. Secara total, dengan satu baris perintah, kita menciptakan 9 subdirektori bertingkat 2.
Contoh lainnya agar Anda lebih memahaminya adalah menerapkan cara cepat membuat file backup. Misalnya:
$ cp file-neraca.ods{,.bak}
Apa yang terjadi? Kenapa kali ini hanya ada satu tanda koma dan satu string yaitu “bak”? Sebenarnya sama saja, ini artinya ada dua string yang disisipkan sebagai akhiran string “file-neraca.ods”. Yang pertama, yaitu “file-neraca.ods” plus string kosong, jadi tidak berubah tetap “file-neraca.ods”. Yang kedua adalah “file-neraca.ods” plus string “.bak” menjadi “file-neraca.ods.bak”. Perintah di atas sebenarnya sama saja jika diketik seperti di bawah ini.
$ cp file-neraca.ods file-neraca.ods.bak
Sekarang, beralihlah ke expansion jenis lain. Gunakan tanda ~ (tilde) untuk langsung ke home direktori. Perintah berikut akan menunjukkan isi home direktori user yang aktif pada session ini.
$ echo ~
/home/mulyadi
$ ls ~
…[output]…
Apabila string ditambahkan di belakang tanda tilde, maka Bash akan menganggap home direktori user tersebut sebagai referensinya. Simak contoh berikut ini.
$ cp -R ~budi /tmp/backup
Di sini, perintah tersebut akan menyalin secara rekursif home direktori “budi” dan isinya ke direktori /tmp/backup. Keuntungan penggunaan tilde ini cukup jelas, Anda tidak perlu menduga-duga letak home direktori suatu user di-setting. Tidak semua administrator selalu membuat home direktori user di bawah /home, karena secara teknis, home direktori user bisa saja berada di direktori manapun.
Sekali mendayung dua tiga pulau terlampaui Manfaatkan fasilitas brace expansion untuk mempercepat pembuatan suatu struktur direktori.
Perulangan
Satu hal yang lazim terjadi saat kita bekerja adalah melakukan hal yang sama tapi berulang-ulang. Misalnya, kita ingin terus menerus mengamati sisa ruang kosong di hard disk. Cara pertama adalah menggunakan looping while do:
$ while(true); do df -h; sleep 2; clear; done;
Kata “while(true)” artinya ulang jika benar. Karena while sendiri mengulang suatu perintah selama kondisi benar, maka sama saja dengan mengatakan “lakukan perintah ini terus-menerus” sampai kita menghentikan secara manual.
Pasangan dari “while” adalah “done” yang dituliskan pada bagian akhir. Perintah “sleep” kita gunakan sebagai interval waktu update, sementara perintah “clear” untuk menghapus isi layar. Dengan demikian, kita cukup melihat tampilan terakhir status sisa ruang kosong hard disk. Alternatif lainnya adalah menggunakan perintah watch:
$ watch df -h
Otomatis watch akan mengulang perintah yang disebutkan sebagai parameternya. Secara default, perulangan akan dilakukan tiap dua detik. Untuk merubahnya, gunakan opsi -n:
$ watch -n 5 df -h
Perintah for bisa membantu jika Anda punya sekumpulan parameter untuk suatu perintah. Misalnya, Anda adalah administrator jaringan kecil di rumah atau kantor dan ingin menambahkan 5 nama user baru. Hal tersebut bisa dilakukan seperti ini:
# for a in desi leni renata amelia ana ; do
useradd $a; echo $a | passwd –stdin $a ;
done
Perintah di atas akan membuat 5 account, masing-masing untuk desi, reni, dan seterusnya sesuai parameter “for”. Useradd kini diisi parameter variabel $a, di mana pada setiap iterasi akan diganti dengan nama tiap user, begitu juga dengan perintah “passwd” untuk menset password. Jadi, ini sama saja dengan mengetik:
# useradd desi
# echo desi | passwd –stdin desi
# useradd ana
# echo ana | passwd –stdin ana
Beruntung bahwa perintah passwd memiliki opsi stdin, sehingga password bisa langsung diset tanpa menunggu ketikan dari keyboard.
Alias dan Command Completion
Kebanyakan pengguna Linux malas mengetik perintah yang panjang. Mungkin ini penyebab interface grafis masih menjadi favorit bagi pemula. Namun sebenarnya ada cara untuk mempercepat mengetik perintah beserta opsi yang panjang. Caranya adalah memanfaatkan perintah alias dan tombol [Tab] untuk melengkapi perintah secara otomatis. Misalnya Anda sering mengetik perintah:
$ ls -alsh
Perintah ini menampilkan semua file yang ada di direktori saat ini beserta semua atributnya. Ukuran block di disk juga ditampilkan. Opsi -h membuat perintah ls menampilkan ukuran file dalam satuan kilobyte, megabyte, dan seterusnya. Mengetik perintah seperti ini dengan berulang-ulang kurang efektif. Solusinya adalah memperpendeknya dengan bantuan perintah alias:
Pemeriksaan berkala Untuk dapat memantau ruang sisa di disk secara periodik, Anda dapat menggunakan perintah watch atau while.
Jalan pintas Untuk mempersingkat waktu ketika mengetik suatu perintah panjang (lengkap beserta berbagai opsinya) yang kerap dipakai, gunakan fasilitas alias.
Auto complete Tombol [Tab] bekerja layaknya “tombol ajaib” karena dapat membantu Anda mempersingkat pengetikan perintah dan nama file/direktori melalui fungsi command completion.
$ alias lsa=’ls -alsh’
Apabila Anda kemudian mengetik “lsa”, outputnya sama persis seperti jika Anda mengetik perintah “ls -alsh”. Setiap distribusi Linux biasanya menyediakan fasilitas alias untuk beberapa perintah. Periksalah dengan perintah “alias” tanpa parameter. Berikut ini contoh outputnya untuk Fedora 9:
$ alias
alias l.=’ls -d .* –color=auto’
alias ll=’ls -l –color=auto’
alias ls=’ls –color=auto’
alias mc=’. /usr/share/mc/bin/mc-wrapper.
sh’
alias vi=’vim’
alias which=’alias | /usr/bin/which –tty-only
–read-alias –show-dot –show-tilde’
Berdasar output di atas, jika misalnya kita mengetik “ls”, maka akan diubah menjadi pemanggilan “ls” disertai pewarnaan output (opsi “–auto”). Mungkin Anda bertanya-tanya, apakah melakukan alias suatu perintah ke nama yang sama namun hanya berbeda parameter diperbolehkan? Hal ini sah dilakukan.
Perlu diperhatikan bahwa secara default alias untuk suatu perintah hanya berlaku untuk satu sesi login dan tidak berlaku lagi jika ada log out. Begitu juga misalnya jika ada set alias di satu sesi gnome-terminal, maka sesi gnome-terminal lain tidak akan mengenalinya. Bagaimana mengatasi hal seperti ini? Jawabannya adalah dengan menggunakan startup script dari Bash. Hal ini akan dibahas pada bagian Login dan log out script.
Untuk command completion, tekniknya adalah menekan tombol [Tab] setelah kita memasukkan satu atau lebih string di prompt. Misalnya kita lupa kemungkinan semua perintah berawalan ls. Awalnya, ketik “ls” lalu langsung ikuti dengan menekan [Tab]. Tidak adanya reaksi menunjukkan ada banyak perintah berawalan “ls”. Untuk itu, Anda perlu menekan tombol [Tab] dua kali secara agak cepat:
$ ls<Tab><Tab>
ls lsattr lsb_release lshal lspgpot
Ada lima kemungkinan yang bisa Anda pilih. Apabila misalnya Anda teruskan dengan menambahkan huruf “p”, tulisan “lsp” diikuti sekali penekanan [Tab] akan menjadikannya tulisan “lspgot”.
Selain untuk nama perintah, completion juga bisa dimanfaatkan pada file. Sebagai ilustrasi, jika Anda ingin melihat isi direktori, misalnya “/namadirektori/yangsangatpanjangsekali/berisidatasatutahun”, maka daripada harus mengetiknya secara lengkap, gunakan saja perintah di bawah ini.
$ ls /namad<Tab>
$ ls /namadirektori/yangs<Tab>
$ ls /namadirektori/yangsangatpanjang
sekali/berisidatasatutahun
Penekanan [Tab] pertama melengkapi direktori level pertama yaitu “namadirektori”. Misalnya, dianggap ada beberapa nama direktori di bawahnya, sehingga Anda perlu mengetik kata berikutnya yaitu “yangs”. Apabila [Tab] ditekan sekali lagi, di sini kita anggap nama direktori sudah cukup unik sehingga Bash bisa melengkapinya sesuai harapan user. Menghemat waktu bukan?
Login dan Log Out Script
Bash memiliki mekanisme agar satu atau lebih perintah bisa dilakukan saat user login dan logout. Saat login, bash akan mengecek file .bash_profile dan .bashrc. Saat logout, bash akan mengecek file .bash_logout. Ketiga file ini letaknya ada di top level home direktori masing-masing user.
Apa yang bisa Anda masukkan dalam tiga file ini? Semua jenis perintah bisa Anda tulis di dalamnya. Contoh termudah adalah kita masukkan perintah alias pada bagian sebelumnya ke dalam .bashrc. Buka file .bashrc dengan editor teks misalnya Vim atau Gnome edit lalu tambahkan baris perintah alias pada baris terbawah. Isi file .bashrc kurang lebih akan menjadi:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias lsa=’ls -alsh’
Bagaimana dengan .bash_logout? Mungkin Anda ingin menghapus semua file berakhiran kata “bak” yang dibuat lebih dari tujuh hari saat logout. Untuk itu, edit file .bash_logout agar menjadi:
# ~/.bash_logout
find ~ -type f -iname “*bak” -mtime +7 -exec
rm -i {} \;
Opsi -i pada perintah rm ditambahkan untuk meminta konfirmasi apakah file benar-benar akan dihapus atau tidak. Apabila Anda memang yakin bahwa file-file tersebut pasti akan dihapus, Anda dapat mengganti opsi -i dengan -f.