RSS

Memanipulasi Shell Bash

24 Jun

memodifikasi shell adalah salah satu metode untuk membuat Linux lebih sesuai dengan selera dan kebutuhan Anda. Tutorial berikut ini akan difokuskan pada Bash. CHIP mencoba merangkumnya untuk Anda.

Bash adalah nama program shell yang paling banyak digunakan dalam distribusi Linux yang beredar saat ini. Lewat shell ini, Anda bisa mengetik berbagai perintah tertentu atau menjalankan suatu program. Sebaliknya, shell akan menampilkan output dari perintah Anda. Dalam banyak kasus, pengguna Linux lambat laun akan terbiasa memakai shell karena dianggap mempercepat suatu pekerjaan dibanding jika bekerja melalui interface grafis.Manusia biasanya tidak cepat puas, ini juga berlaku dalam penggunaan shell. Si­fat atau perilaku shell default dari suatu distribusi saat meng-install-nya tidak jarang kurang optimal untuk aktivitas Anda sehari-hari di Linux. Untuk itu, Bash dan program-program shell lain menyediakan berbagai cara agar pengguna bisa melakukan kustomisasi. Modifikasi bisa dilakukan dengan memberikan nilai baru pada suatu variabel atau dilakukan lewat suatu perintah tertentu. Perubahan inipun bisa dibuat permanen dengan melakukan penambahan perintah yang sama di file script inisialisasi Bash.

Pada artikel ini, akan dijelaskan beberapa modifikasi yang dirasa bermanfaat untuk para pembaca, diantaranya:
->konfigurasi history
->modifikasi prompt shell
->pencarian perintah dan direktori dan beberapa option tambahan lainnya.
Karena artikel ini membahas menge­nai Bash, diasumsikan pembaca juga memakai Bash sebagai shell aktif. Pembaca bebas menerapkannya untuk distribusi apapun, baik rilis terbaru maupun lama. Pembahasan berlaku bagi versi Bash minimal 2.x. Versi Bash dapat diketahui dengan perintah:

$ bash –version
GNU bash, version 3.2.33(1)-release (i386-red
hat-linux-gnu)
Copyright (C) 2007 Free Software Foundation,
Inc.
Seperti biasa, prompt # berarti perintah harus dijalankan sebagai user root. Sementara prompt $ berarti bisa dijalankan sebagai user biasa. Perlu diperhatikan bahwa modifikasi shell rata-rata berdampak hanya pada sesi user ID tersebut. Dengan demikian hampir tidak diperlukan eksekusi sebagai root.

Variabel pengendali history

linux2Mengubah besaran history Perbesar nilai HISTSIZE agar Bash memiliki “daya ingat” yang lebih besar, atau dengan kata lain memperbesar jumlah perintah yang ada dalam command history.

Bash memiliki kemampuan untuk meng­ingat sejumlah perintah terakhir yang te­lah dijalankan pengguna. Kemampuannya tersebut berguna jika Anda ingin mengulang berbagai perintah terakhir secara cepat. Sebagai contoh, jika dimisalkan ada mengetik urutan perintah seperti ini:
$ ls -alsh
$ whoami
$ find . -type f
Maka jika Anda mengetik:
$ !-3

Perintah ls -alsh akan diulangi. Perintah yang baru saja diketik bermakna “ulangi perintah ketiga dihitung dari yang ter­akhir”. Berapa banyak perintah yang diingat oleh Bash? Ini tergantung dari variabel lingkungan HISTSIZE. Manual Bash menyatakan bahwa nilai default nya adalah 500. Namun, bisa saja Anda menambah­nya, misalkan dengan alasan untuk memperpanjang pelacakan perintah-pe­rin­tah yang telah dijalankan. Secara umum, untuk melakukan setting variabel lingkung­an, gunakan perintah export. Contohnya:

$ export HISTSIZE=10000
Perintah ini menjadikan Bash mengingat sepuluh ribu perintah terakhir.
Perlu diingat bahwa modifikasi variabel lingkungan seperti di atas hanya berlaku pada sesi shell yang sama dan sampai dengan user logout. Untuk membuat modifikasi berlaku di semua sesi shell, Anda punya dua pilihan Agar perubahan berlaku untuk semua user, lakukan modifikasi di file /etc/profile. Tambahkan perintah “export” pada baris terakhir. Atau bisa juga dengan melakukan pencarian string sesuai nama variabel yang dirubah dan ubah nilainya sesuai keinginan. Pada distribusi Fedora/CentOS, akan Anda temukan baris seperti ini pada 20-an baris terakhir:

HISTSIZE=1000
export PATH USER LOGNAME MAIL HOSTNAME
HISTSIZE

Apabila Anda hanya ingin perubahan berlaku pada suatu user tertentu, lakukan pengeditan pada file .bash_profile atau .bashrc di home direktori user tersebut dan sisipkan baris perintah export di atas. Metode ini berlaku untuk semua setting variabel lingkungan lainnya yang akan diterangkan dalam artikel ini. Perubahan akan berlaku untuk sesi login berikutnya. Namun jika Anda tidak sabar menunggu, Anda bisa menggunakan perintah
$ source ~/.bash_profile
atau
$ . ~/.bash_profile

Catatan perintah yang telah dijalankan akan disimpan pada file .bash_history pada home direktori pengguna. Update pada file ini hanya dilakukan setelah sesi shell berakhir, misalnya user logout atau menutup sesi  xterm/gnome terminal. Jumlah perintah yang disimpan dikendalikan oleh variabel HISTFILESIZE. Idealnya, nilai ini minimal sama dengan HISTSIZE. Dengan demikian, perintah yang disimpan akan sebanyak perintah yang diingat di memori.

Apakah Anda ingin menambahkan catatan waktu pada history? Hal ini bisa dilakukan lewat variabel HISTTIMEFORMAT. Sebagai contoh, untuk menambahkan waktu dalam format “hari, tanggal bulan tahun jam:menit:detik offset-GMT”, Anda bisa menggunakan perintah:
$ export HISTTIMEFORMAT=”%a, %d %b %Y
%H:%M:%S %z ”
Hasilnya akan seperti ini:
$ history | tail -4
1014  Mon, 08 Feb 2010 00:37:26 +0700 ls
-alsh
1015  Mon, 08 Feb 2010 00:37:36 +0700 id
1016  Mon, 08 Feb 2010 00:37:45 +0700
blkid
1017  Mon, 08 Feb 2010 00:37:54 +0700 his
tory | tail -4

Sementara isi file .bash_history akan diisi angka-angka yang merupakan representasi dari waktu tersebut.

Pencarian perintah dan direktori

Mungkin Anda pernah menelusuri direktori-direktori di Linux dan menemukan sebagian perintah di Linux adalah program yang diletakkan di direktori tertentu. Misalnya, /bin/ls, /sbin/fsck, /usr/bin/head, dan seterusnya. Tapi di sisi lain, perintah-perintah ini dijalankan cukup dengan menulis nama programnya tanpa perlu menulis nama direktori secara lengkap. Dimana rahasianya?

Kuncinya terletak pada variabel PATH yang berfungsi sebagai daftar lokasi pencarian perintah. Mayoritas distribusi Linux biasanya memberi nilai default seperti berikut:
$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/
local/bin:/bin:/usr/bin

Perhatikan bahwa nama variabel didahului dengan tanda dolar ($) jika ingin ditampilkan isinya. Hal ini bertujuan untuk membedakan nama variabel dengan kum­pulan huruf biasa.

Output akan berbeda jika Anda login sebagai root:
# echo $PATH
/usr/lib/qt-3.3/bin: /usr/kerberos/sbin:/usr/
kerberos/bin:/usr/local/sbin:/usr/local/bin:/
sbin:/bin:/usr/sbin:/usr/bin

Nama direktori yang terdaftar dari kiri ke kanan menunjukkan alur pencarian. Contohnya untuk user biasa, saat Anda mengetik perintah “ls” maka direktori /bin akan dicari lebih dahulu disusul /usr/bin. Nama-nama direktori dipisahkan dengan tanda titik dua.

Untuk menambahkan direktori baru,  Anda perlu memutuskan dulu apakah dia akan menempati urutan pertama atau terakhir. Misalnya, jika Anda ingin menam­bahkan direktori “/usr/local/mybin” di urutan terakhir, ketikkan:

Mengubah warna prompt Apabila Anda bosan de­ngan warna prompt, cobalah berkreasi de­ngan mengganti kode warna yang ada.Mengubah warna prompt Apabila Anda bosan de­ngan warna prompt, cobalah berkreasi de­ngan mengganti kode warna yang ada.

$ export PATH=$PATH:/usr/local/mybin
Mungkin Anda akan bertanya, kenapa ditambahkan lagi variabel PATH di sebelah kanan tanda “=”? Dengan cara ini, nilai lama variabel tetap dipertahankan sekaligus Anda tambahkan direktori baru. Berbeda jika Anda melakukan ini:

$ export PATH=/usr/local/mybin
Maka artinya Anda hanya memberikan satu entry yaitu direktori /usr/local/mybin itu sendiri.

Agak mirip dengan PATH, ada juga CDPATH. Ini berguna untuk memperpendek pemanggilan suatu file atau direktori di dalam suatu direktori yang sering Anda kunjungi.

Umpamanya Anda menaruh seluruh dokumen kerja di /home/john/Documents. Di dalamnya ada lagi tiga direktori misalnya “final”, “draft” dan “shared”. Dalam keadaan normal, untuk berpindah ke direktori final, ketik:
$ cd /home/john/Documents/final

jika Anda menggunakan penamaan path absolut. Namun, jika Anda melakukan pemberian nilai pada CDPATH:
$ export CDPATH=.:/home/john/Documents

maka, Anda cukup mengetik:
$ cd final

dari posisi direktori aktif manapun. Selajutnya, otomatis Anda berada di dalam direktori “final”.

Yang terasa kurang di sini adalah Anda tidak bisa memakai tombol [Tab] untuk melengkapi nama sub direktori yang ada di dalam daftar CDPATH. Untuk mengatasinya, Anda perlu memperluas fungsi completion dari bash. Cara yang praktis adalah dengan mendownload file script bernama bash_completion dari http://bash-completion.alioth.debian.org/files/bash-completion-1.1.tar.gz lalu ekstrak di suatu direktori:
$ tar xzvf bash-completion-1.1.tar.gz
$ cd bash-completion-1.1/
$ ln -s `pwd`/bash_completion /etc/
$ source /etc/bash_completion

Pembuatan softlink pada baris ketiga dimaksudkan agar eksekusi script lewat perintah source bisa berjalan sempurna, karena ada beberapa bagian dalam script mengasumsikan script diletakkan di direktori /etc. Sebagai tambahan, Anda bisa juga menambahkan perintah “source” di atas ke dalam file .bashrc pada home direktori sehingga script otomatis akan dijalankan setiap kali Anda login.

Setelah eksekusi file bash_completion, kini Anda bisa lebih mudah melakukan perpindahan direktori. Jadi, jika sebelumnya Anda mengetik “final” secara lengkap, kali ini Anda cukup lakukan:
$ cd f<lalu tekan tombol Tab>
Maka otomatis akan “f” akan dilengkapi menjadi “final”. Lebih cepat bukan?
Modifikasi warna dan format prompt

Bisa jadi Anda bosan dengan tampilan prompt yang itu-itu saja. Secara umum, mayoritas distribusi mengeset nya dalam format <nama user>@<nama host> <nama direktori saat ini> disertai tanda $ atau #. Anda bisa memodifikasinya de­ngan memasukkan format baru ke variabel PS1. Contohnya, jika Anda ingin menambahkan jam+menit+detik di depan nama user, ketik:
$ export PS1=’[\t \u@\h \W]\$’
Prompt tersebut akan menjadi:
[08:26:40 john@john ~]$
\t, \u dan seterusnya ini disebut sebagai escaped special character. Makna dari masing-masing simbol ini adalah:
->\t menyisipkan waktu dalam format jam:menit:detik.
->\u menyisipkan nama user aktif saat ini
->\W menyisipkan bagian terakhir dari suatu full path. Misalnya, saat ini
Anda Anda di direktori /home/john/Documents/final, yang tertulis hanya kata “final”. Apabila Anda ingin direktori tertulis lengkap, bisa digunakan \w
->\$ adalah tanda prompt, akan mencetak # jika user aktif adalah root, sebaliknya mencetak $ jika user biasa

Selain itu, Anda pun dapat memberikan warna pada prompt. Misalnya, Anda ingin membuat tulisan prompt menjadi berwarna hijau dengan mengetik:
$ export PS1=’\[\e[1;32m\][\t \u@\h \w]\$ \[\e[0m\]’
Prompt-nya akan menjadi:
[10:32:38 mulyadi@mulyadi ~]$

Kode warna mengikuti format \[\e[ kemudian kode warna ditutup dengan \]. Agar perubahan warna hanya terbatas pada prompt, Anda akhiri dengan \[\e[0m\] pada bagian penutup format prompt. Ini berfungsi untuk mengembalikan karakter sesudah prompt kembali ke warna foreground asal. Perhatikan ada huruf “m” yang ditambahkan setelah kode deretan angka. Ini untuk memberitahu Bash bahwa Anda mendeklarasikan kode warna, bukan kode lainnya.
Berdasarkan informasi dari http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html, inilah daftar kode warna-warna yang bisa dipakai:
Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37
Warna di atas adalah daftar warna foreground. Untuk background, cukup  ganti digit pertama yaitu “3″ dengan “4″. Apabila Anda ingin membuat huruf berwarna hijau dengan latar belakang abu-abu, formatnya menjadi:
$ export PS1=’\[\e[0;47m\]\[\e[1;34m\][\t \u@\h \w]\$\[\
e[0m\] ‘

Adapun tampilannya akan menjadi:
[12:15:54 mulyadi@mulyadi ~]$
Aturannya di sini adalah warna background disebutkan dahulu, baru kemudian warna font. Apabila Anda balik, Anda akan mendapatkan tulisan hitam berlatarbelakang abu-abu.

Mengatur panjang log history Jumlah perintah yang dicatat dari memori ke dalam file .bash_history akan bergantung pada nilai HISTFILESIZE
Meringkas penunjukan nama direktori Dengan bantuan CDPATH, Anda bisa menulis nama suatu direktori secara cepat dan mudah.Meringkas penunjukan nama direktori Dengan bantuan CDPATH, Anda bisa menulis nama suatu direktori secara cepat dan mudah.
Menampilkan file berawalan titik Agar Anda bisa melihat langsung semua file, aktifkan opsi dotglob.Menampilkan file berawalan titik Agar Anda bisa melihat langsung semua file, aktifkan opsi dotglob.

Koreksi penyebutan direktori

Berapa kali Anda salah ketik saat menyebut nama suatu direktori? Contoh kasus sederhana: Anda sedang berada di home direktori dan akan berpindah ke sub direktori Documents. Bisa jadi karena terburu-buru, Anda mengetik:
$ cd Dcuments
bash: cd: Dcuments: No such file or directory

Lumayan mengesalkan? Untungnya Bash bisa membantu Anda mengoreksi kesalahan kecil semacam ini. Set variabel cdspell dengan perintah:
$ shopt -s cdspell
Pada kesempatan berikutnya, jika ada kesalahan yang mirip maka hasilnya:
$ cd Dcuments
Documents
$ pwd
/home/john/Documents

Hal-hal yang bisa dikoreksi berdasar keterangan manual Bash adalah:
->Karakter yang bertukar posisi, contoh: Doucments
->Hilangnya satu karakter, contoh: Douments
->Kelebihan satu karakter, contoh: Dolcuments

Pencocokan dengan file berawalan titik (”.”)

Kebanyakan dari pengguna Linux tahu bahwa salah satu cara untuk membuat file atau direktori tidak bisa secara mudah diketahui keberadaannya adalah dengan memberi awalan titik (”.”) sebelum nama file atau direktori tersebut. Jadi misalnya jika Anda membuat direktori bernama tmp dan mengisinya dengan tiga file seperti ini:
$ mkdir tmp
$ cd tmp
$ touch .a .b .c
Maka jika Anda mengetik perintah:
$ ls *
akan didapat peringatan:
ls: cannot access *: No such file or directory
Kenapa demikian? Karena Bash membuat perkecualian terhadap file berawal­an titik saat Anda melakukan globbing. Yang dimaksud globbing di sini,  misalnya penggunaan tanda asterisk (*) yang bermakna “match untuk semua karakter dengan panjang tak terbatas”.

Sebenarnya ada trik untuk mengatasinya, yaitu dengan memakai perintah:
$ ls -d \.*
.  ..  .a  .b  .c

Namun, akan lebih mudah jika Anda mengeset variabel dotglob:
$ shopt -s dotglob
$ ls *
.a  .b  .c

Langkah ini sekaligus berfungsi menampilakan file tersembunyi tanpa harus menggunakan opsi khusus.

Penutup

Masih banyak hal-hal lain yang bisa dieksplorasi dari Bash agar Linux shell tersebut lebih optimal Anda gunakan. Semoga artikel ini bisa menjadi awal petunjuk bagi pembaca untuk mulai belajar mengenal lebih jauh Bash. Selamat mencoba!
Referensi:
Manual Bash – man bash.
Bash Guide for Beginners – http://tldp.org/ LDP/Bash-Beginners-Guide

Auto correct nama direktori Bash akan dengan 'senang hati' memperbaiki kesalahan pengetikkan minor saat Anda salah menyebut nama direktoriAuto correct nama direktori Bash akan dengan ‘senang hati’ memperbaiki kesalahan pengetikkan minor saat Anda salah menyebut nama direktori.
 
1 Komentar

Ditulis oleh pada 24 Juni 2011 in System, Tips and Trick

 

Tag:

One response to “Memanipulasi Shell Bash

  1. nice naked girls

    31 Juli 2016 at 10:40 PM

    I am sure this piece of writing has touched all the
    internet visitors, its really really good piece of writing
    on building up new blog.

     

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: