Linux Shell Panduan Linux Ubuntu
360 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Pada linux Ubuntu, jika menggunakan GUI Gnome, untuk bisa menggunakan shell bisa dengan menjalan program seperti gnome-
terminal atau bisa juga dengan menekan tombol CTRL + ALT + [F1- F6] untuk pindah ke virtual konsol. Penjelasan mengenai cara
menggunakan gnome-terminal bisa dibaca kembali pada bab 3 dari buku ini. Sebagai contoh, jalankan gnome-terminal tekan ALT + F2,
kemudian ketik gnome-terminal, dan jalankan command berikut
binls usrlocal
bin games include lib man sbin share src
usrbinwhoami
urangkayo Pada saat pertama kali kita buka gnome-terminal kita akan
dihadapkan dengan shell prompt tanda menandakan user biasa pada bash shell, dan pada C shell, dan tanda menandakan login sebagai
root. Tanda yang diikuti dengan kedip-kedip pada kursor menandakan shell tersebut sedang menanti command yang akan
diketikkan. Pembahasan mengenai shell pada bab ini khusus mengenai BASH Shell, karena merupakan default shell yang
digunakan oleh Ubuntu. Bentuk umum dari shell prompt pada Ubuntu,
urangkayocapoex:~ urangkayo
: merupakan username yang sedang login
capoex : merupakan nama host atau nama komputer
~ : melambangkan home direktori dari username
~ berarti homeurangkayo karena nama username nya disini adalah urangkayo
: menandakan bahwa user yang login adalah user biasa, untuk root biasanya dilambangkan dengan tanda
Ketika kita mengetikkan sebuah command pada shell, maka shell akan mencari program tersebut sesuai dengan nama yang kita ketikkan
pada direktori yang sesuai dengan isi dari PATH. Ketika program
Shell dan Command Line 361
tersebut ditemukan, maka shell akan menjalankannya. Jika sebuah program tidak ditemukan maka shell akan memunculkan pesan error,
contoh
gsgn
bash: gsgn: command not found Untuk mengetahui PATH dari username kita, gunakan perintah
echo PATH
usrlocalsbin:usrlocalbin:usrsbin:usrbin: sbin:bin:usrbinX11:usrgames
Sekarang kita akan membuat sebuah file dengan nama latihan.sh yang disimpan di homeurangkayolatihanscript, gunakan teks editor
yang disuka bisa gedit, vi atau emacs. Ketik baris berikut ini pada text editor tersebut
binbash echo “Lagi belajar Linux Ubuntu”
echo “Good Luck” Simpan file tersebut dengan nama latihan.sh pada direktori yang
sudah disebutkan tadi sesuaikan dengan home direktori anda sendiri. Sekarang gunakan perintah chmod untuk merubah hak akses
file agar bisa di jalankan.
chmod 755 latihan.sh
Sekarang jalankan file tersebut
latihan.sh
bash: latihan.sh: command not found Karena PATH dari file latihan itu tidak ada dalam variable PATH,
maka saat file tersebut dijalankan akan keluar error bash: latihan.sh: command not found. Untuk itu kita perlu menambahkan path dari file
latihan.sh kedalam variable PATH. Gunakan perintah export untuk menambahkan value homeurangkayolatihanscript kedalam
variable PATH.
362 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
export PATH=PATH:~latihanscript echo PATH
usrlocalsbin:usrlocalbin:usrsbin:usrbin: sbin:bin:usrbinX11:usrgames:homeurangkayob
in:homeurangkayolatihanscript
Sekarang jalankan lagi file latihan.sh
latihan.sh
Lagi Belajar Linux Ubuntu Good Luck
Yang perlu diingat adalah perubahan ini hanya bersifat sementara, jika kita keluar dari session login, menutup terminal maka isi dari PATH
akan kembali seperti semula. Jika ingin perubahan tersebut bersifat permanen, kita harus mengedit file .profile yang terdapat dalam home
direktori. Buka file .profile dengan text editor kemudian tambahkan baris berikut ini pada file .profile
PATH=PATH ”:~latihanscript”
Simpan file tersebut, dan sekarang perubahannya telah bersifat permanen walaupun kita keluar dari terminal atau session maupun
merestart OS nya. Untuk melihat efeknya, keluar dari session login kemudian login kembali dengan username yang sama dan gunakan
perintah echo PATH untuk melihat hasilnya. Jika kita meragukan sebuah command berasal dari PATH yang seharusnya atau berasal dari
PATH yang tidak dipercaya, misalnya system yang digunakan sudah dimasuki penyusup, dan mengganti sebuah command seperti ls
dengan ls miliknya sendiri, untuk itu kita bisa menggunakan command built-in type untuk melihat command ls berasal dari mana. Pada
perintah dibawah terlihat bahwa PATH nya ada di binls. Jika PATH nya ternyata bukan di binls bisa jadi system yang digunakan sudah
dimasuki penyusup.
type -a ls
ls is binls
Shell dan Command Line 363
Satu hal lagi yang perlu diingat ketika bekerja dengan shell adalah, shell hanya akan menjalankan program yang memiliki hak akses
eksekusi, contoh berikut memperlihatkan output ketika kita memanggil program yang tidak memiliki hak akses eksekusi. Sebagai
contoh buat script dengan nama test yang disimpan pada direktori latihan, file ini dijalankan dari direktori tempat disimpannya
binbash uname -a
test
bash: test: Permission denied Ada dua alternatif didalam menjalan script test yang dibuat,
sh test
atau dengan melakukan chmod pada file tersebut
chmod 755 latihantest .test
Shell pada NIX sudah ada sebelum GUI ada, meskipun sekarang ini bisa dibilang sistem operasi NIX sudah berbasiskan GUI, akan tetapi
shell tetap menawarkan sesuatu yang lebih dibandingkan GUI. Dengan mengenal shell, berarti kita mampu untuk bekerja lebih cepat,
contohnya jika kita ingin mendelete file-file yang terdapat pada home direktori kita yang memiliki ekstension .tmp. Pada GUI mungkin kita
akan membuka nautilus, melakukan search untuk .tmp, men-select satu-satu file tersebut, kemudian mendeletenya. Dengan shell, cukup
jalankan perintah berikut
rm .tmp
Shell menterjemahkan command yang kita input, menjalankan sebuah program atau lebih untuk setiap command yang kita input. Gabungan
dari command- command yang di tempatkan dalam sebuah file disebut dengan shell script. Command yang terdapat pada shell script
dijalankan secara berurutan. Dengan shell kita bisa:
364 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Menjalankan dua atau lebih command Linux secara bersamaan. Misalnya command ls dan menyimpan output
nya dalam file bernama ls.output, kita bisa menjalankan dengan cara: ls | cat ls.output
Beberapa command Linux memiliki parameter yang hanya tersedia untuk command line saja
Pada Ubuntu, kita bisa menjalankan sebuah program dalam mode root, dengan menggunakan shell, contoh kita
ingin mengedit file etcresolv.conf, yang membutuhkan hak akses setara root, pada terminal kita bisa mengetikkan:
sudo gedit etcresolv.conf
Menjalankan command- command administrator, yang biasanya lebih banyak berjalan dalam mode command
line. Tugas dari shell itu sendiri antara lain adalah:
Menjalankan command yang di input oleh user Menyediakan programming environment
Shell sendiri memiliki bermacam-macam jenis, diantaranya adalah:
Bourne Shell sh
Shell ini dikenal dengan singkatan sh, diciptakan oleh Steven Bourne. Dikenal sebagai shell original Unix shell. Versi shell ini bisa dibilang
masih sangat primitif.
C Shell csh
Dikenal dengan singkatan csh, diciptakan oleh Bill Joy dari Universitas California di Berkeley. Shell ini memiliki sintak yang sangat mirip
dengan bahasa pemrograman C dan menjadi shell default pada sistem operasi BSD.
Korn Shell ksh
Disingkat dengan ksh, shell ini merupakan shell yang diciptakan oleh David Korn, dan pada awalnya shell ini dirilis bukan dalam lisensi
yang free. Diciptakan untuk menyaingi C Shell. Sekarang ini Korn Shell dirilis dengan free lisensi.
Shell dan Command Line 365
Bourne Again Shell bash
Lebih dikenal dengan nama bash. Shell ini merupakan shell default pada sistem linux modern sekarang. Merupakan versi modern dari
bourne shell yang asli, dimana shell ini memiliki fitur seperti command line editing
kita bisa menggunakan mode VI atau Emacs, free licence, file name completion
. Shell ini menjadi shell default pada distro Linux. Dan menjadi shell yang dibahas pada buku ini karena Ubuntu
menggunakan shell ini secara default.
T C Shell tcsh
Yang lebih dikenal dengan nama tcsh, merupakan versi extended dari csh shell, mendukung command editing, file name completion.
Beberapa shell lainnya yang ada adalah ash, zsh, tksh. Seperti yang telah disebutkan diatas, shell akan menjalankan command yang diinput
oleh user. Format umum perintah linux itu sendiri adalah
command argumen1 argumen2 ... command options1 options2 argumen1 argumen2 ...
Options yang ada pada command linux ada short options dan long options,
dimana output dari perintah tersebut sama, contohnya
ls -a
. .. .bash_history .bash_logout .bashrc hs .lesshst .profile
.sudo_as_admin_successful .zcompdump
.zshrc
ls --all
. .. .bash_history .bash_logout .bashrc hs .lesshst .profile
.sudo_as_admin_successful .zcompdump
.zshrc Untuk mengetahui options-options yang ada pada command yang akan
kita gunakan pada shell, gunakan command info atau man. Jika kita bekerja dengan shell, maka man dan info adalah tool yang tak ternilai
harganya. Contoh kita ingin mengetahui manual atau informasi mengenai command ls
366 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
man ls info ls
Untuk mengetahui tipe shell yang sedang kita gunakan, pada shell prompt ketik perintah berikut ini
binecho SHELL
binbash Ubuntu menggunakan bash sebagai shell defaultnya. Pada Ubuntu
yang penulis gunakan hanya terinstall satu jenis shell yaitu bash. Jika pada sistem yang digunakan terinstall banyak shell, kita bisa
berpindah dari satu shell ke shell yang lain dengan menjalankan command
berikut ini:
usrbinchsh -s binzsh urangkayo Password:
Perintah diatas akan mengganti default shell dari user urangkayo menjadi zsh shell. Hasilnya akan kelihatan ketika kita log out dari
session yang sekarang dan login lagi, maka shell yang muncul adalah zsh. Untuk berganti shell langsung, kita bisa mengetikkan nama shell
yang telah terinstall sebelumnya. Sekarang penulis akan mencoba menginstall zsh shell
sudo apt-get install zsh
Setelah proses installasi selesai, maka untuk menggunakan shell ini ketik pada gnome-terminal command berikut
binzsh
Lihat tampilan prompt nya sudah berbeda dibandingkan dengan bash, untuk lebih pastinya, jalankan lagi command echo SHELL untuk
memastikan bahwa kita sudah pindah ke shell yang diinginkan. Beberapa fitur penting yang mungkin berguna saat kita menjalankan
sebuah command dalam bash shell adalah:
1. Kemampuan untuk mengulang command terakhir yang dijalankan. Jika command terakhir yang kita ketik adalah
Shell dan Command Line 367
usrbinid, jika kita ingin mengulang command ini, pada shell prompt cukup ketik tanda double exclamation , contoh
usrbinid dan untuk mengulang command id, ketik pada shell prompt
usrbinid uid=1000urangkayogid=1000urangkayogroups=4a
dm,20dialout,24cdrom,25floppy,29audio,3 0dip,44video,46plugdev,109lpadmin,111sc
anner,114admin,1000urangkayo
2. Kemampuan untuk mengulang bagian dari sebuah command. Misalnya kita menjalankan command usrsbinuseradd dan
kemudian kita ingin melihat id dari user tersebut.
sudo usrsbinuseradd thinkerbels Password:
Sekarang pada shell prompt ketik usrbinid
usrbinid
id thinkerbels uid=1001thinkerbelsgid=1001thinkerbelsgroups
=1001thinkerbels
Pada hasil diatas, tanda oleh bash diganti dengan variabel terakhir dari command terakhir yang kita jalankan, pada contoh
diatas diganti dengan thinkerbels. Selain menggunakan dan dalam mengulang sebuah atau sebagian command, kita juga bisa
menggunakan panah atas dan bawah dari keyboard.
3. Kemampuan dalam melengkapi nama dari file atau direktori yang diketik. Misalnya kita ingin berpindah ke suatu direktori
yang terdapat di usrlocal. Pada shell ketik cd usrl. Kemudian tekan tombol tab dua kali, maka akan muncul direktori atau file
yang di awali huruf l pada direktori usr.
368 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
cd usrl → Tekan TAB dua kali
lib lib32 lib64 local
Sekarang tambahkan huruf o sehingga menjadi cd usrlo dan tekan tab maka secara otomatis shell akan melengkapinya
menjadi cd usrlocal
cd usrlocal
4. History. Shell secara default menyimpan informasi mengenai apa saja yang kita input. Untuk mengetahui berapa banyak jumlah
command yang disimpan oleh shell gunakan perintah
echo HISTSIZE 500
Defaultnya shell bash pada Ubuntu menyimpan 500 perintah. Sedangkan variable HISTFILESIZE digunakan oleh file
.bash_history, jika file ini diset 0 maka setiap kita log out, history dari command kita akan dihapus.
echo HISTFILESIZE
500 Untuk melihat history gunakan command
history
1 lsb_release -a 2 uname -a
4 ps aux | grep ssh 5 route -n
Dari output diatas, jika kita ingin mengulang command yang telah kita ketikkan sebelumnya, contoh penulis ingin mengulang
command
route -n, maka cukup dengan mengetikkan tanda
diikuti dengan nomor command dari history
5
route -n
Shell dan Command Line 369
Command diatas juga bisa menggunakan character dari command
yang ada pada history
u
uname -a Linux gateway.scorvia.or.id 2.6.22-14-server 1
SMP Sun Oct 14 23:34:23 GMT 2007 i686 GNULinux Untuk menghapus history command gunakan
history -c
5. Kemampuan mendukung penggunaan wildcards. Wildcards merupakan sebuah ekspresi yang digunakan oleh shell dalam
menjalankan sebuah command. Wildcards ada dua yaitu asterik yang berarti cocok untuk semua karakter, dan ? yang berarti
cocok untuk satu karakter. Contoh kita ingin menampilkan isi dari direktori usrbin yang diawali dengan huruf l, dan
sembarang karakter setelah huruf l, kemudian huruf b dan sembarang karakter setelah b, pada shell ketik command berikut
binls usrbinlb
usrbinlastb usrbinlsusb Dapat kita lihat, bahwa setelah huruf l, itu bisa huruf apa saja dan
jumlah nya bisa bermacam-macam huruf setelah huruf l. Jika kita ingin mencari file yang huruf awalnya l dan 1 karakter sembarang
setelah l, gunakan tanda ? contoh
binls usrbinl?pci
usrbinlspci
Penggunaan wildcard ini bisa digabung dengan tanda [...], yang berarti sesuai dengan setiap karakter yang ada didalam tanda [...].
Contohnya kita ingin menampilkan file dengan karakter pertama lib, karakter selanjutnya adalah karakter A besar atau z kecil, dan
sembarang karakter setelah karakter A atau z
ls usrliblib[Az]
usrliblibz.so.1 usrliblibz.so.1.2.3.3
370 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Pada command diatas [Az] berarti yang memiliki karakter A atau z setelah karakter lib. Contoh lain
ls usrliblib[AbLz]
usrliblibbind9.so.30 usrliblibz.so.1
ls usrliblib[A-Z] Untuk negasi atau lawannya, gunakan tanda . Contohnya
menampilkan karakter selain a-z setelah lib
ls usrliblib[a-z]
ls: usrliblib[a-z]: No such file or directory
ls usrliblib[A-Z]
usrliblibapt-inst-libc6.6-6.so.1.1 usrliblibapt-pkg-libc6.6-6.so.4.5.0
usrliblibasprintf.so.0
Selain penggunaan tanda [...], kita juga bisa menggunakan {...}. Contoh penggunaannya adalah
echo urang{kayo,miskin}
urangkayo urangmiskin
echo h{a{lo,low,luw},i} urangkayo
halo halow haluw hi urangkayo
echo h{a{lo,low,luw},i}
halo halow haluw hi
echo h{a{lo,low,luw},i}urangkayo
halourangkayo halowurangkayo
haluwurangkayo hiurangkayo
Dari output pada contoh untuk {...} diatas penulis yakin anda bisa mengambil kesimpulan mengenai cara kerjanya. Disini kita lihat
bahwa kata yang ada didalam tanda {} akan digabungkan dengan kata diluar dari tanda {}.
Shell dan Command Line 371
6. Command line editing. Merupakan kemampuan dari shell untuk mengedit command seperti kita melakukan teks editing dengan
teks editor. Bash shell mendukung command line editing dalam mode Vi atau Emacs. Defaultnya bash menggunakan mode editor
Emacs. Untuk mengganti mode editing dari bash shell, gunakan command
berikut
set -o emacs
Command diatas mengganti bash shell kedalam mode emacs.
Untuk mengganti mode ke editor vi, gunakan command
set -o vi
Untuk melihat dalam mode editing apa kita berapa gunakan command
shopt. shopt -o emacs
emacs on
shopt -o vi
vi off Output diatas memperlihatkan kita berada pada mode editing
emacs. Entah itu kita menggunakan mode emacs atau vi, ada beberapa tombol keyboard yang memiliki fungsi yang sama
dalam command line editing.
Panah kiri: Pindah satu karakter kekiri Panah kanan: Pindah satu karakter kekanan
Panah atas: menampilkan perintah sebelumnya Panah bawah: menampilkan perintah berikutnya jika ada
Backspace: menghapus karakter disebelah kiri Delete: menghapus karakter disebelah kanan.
Jika kita berada pada mode emacs, yang merupakan mode default pada shell untuk distro linux umumnya, gabungan tombol yang
bisa digunakan adalah gabungan tombol disini berarti dua
372 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
tombol keyboard ditekan secara bersamaan, contohnya CTRL + b, tekan CTRL dan b secara bersamaan.
CTRL + b : Pindah satu karakter kekiri, tanpa mendelete karakter CTRL + f : Pindah satu karakter kekanan
CTRL + p : Menampilkan command sebelumnya yang ada pada command history
CTRL + n : Menampilkan command selanjutnya TAB : Filename completion, akan menampilkan filename yang
cocok dan melengkapinya jika hanya ada satu yang cocok. Jika berada pada mode vi, terdapat dua kondisi yaitu input mode,
mode ini seperti menggunakan bash biasa. Untuk mode kedua yaitu mode control, pada mode ini kita bisa mengedit command
menggunakan control characters yang digunakan oleh editor vi.
ESC : Untuk memasuki mode kontrol, pada mode ini kita bisa menggunakan tombol-tombol seperti
h : pindah satu karakter kekiri l : pindah satu karakter kekanan
k : menampilkan command sebelumnya j : menampilkan command berikutnya
Untuk kembali kemode input pada vi mode gunakan tombol berikut
i : menginsert text dibelakang kursor a : menginsert text didepan kursor
I : menginsert text pada awal baris A : menginsert text pada akhir baris
R : menimpa text yang ada dibawah kursor
Untuk melihat bagaimana bash shell memperlakukan kombinasi tombol keyboard kita bisa menggunakan perintah
Shell dan Command Line 373
stty -a
speed 38400 baud; rows 24; columns 80; line = 0; intr = C; quit = \; erase = ?; kill = U; eof
= D; eol = undef; eol2 = undef; swtch = undef; start = Q;
stop = S; susp = Z; rprnt = R; werase = W; lnext = V; flush = O; min = 1;
time = 0; Selain itu kita bisa melihat kombinasi keyboard pada manual
page dari bash shell dibagian Readline. Tombol kontrol yang memiliki arti yang umum beberapa diantaranya adalah:
Control Key Stty Name
Function Description
CTRL + C intr
Menghentikan command
CTRL + D eof
Mengakhiri inputlog out
CTRL + S stop
Halt output pada screen
CTRL + Q
Restart output pada screen
DEL or CTRL +? erase
Hapus karakter terakhir
CTRL + U kill
Menghapus baris command
CTRL + Z susp
Suspend command
Tabel 16.1 Kombinasi Keyboard Multiple command
Pada linux, kita bisa menjalankan banyak command dalam satu baris, dimana perintah tersebut dieksekusi berdasarkan symbol yang
digunakan untuk memisahkannya. Jika command dipisahkan oleh tanda ; semicolon, maka command akan di jalankan secara
berurutan, mulai dari yang pertama sampai terakhir
printf s\n Pertama ; printf s\n Kedua
374 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Pertama Kedua
Jika command dipisahkan oleh dua double ampersand, command berikutnya akan dijalankan jika command sebelumnya
sukses di eksekusi. Jika gagal maka command yang berikutnya tidak akan dieksekusi. Perhatikan contoh dibawah ini
date printf s\n Command date sukses
Tue Nov 13 14:45:08 WIT 2007 Command date sukses
date1 printf s\n Command date
-bash: date1: command not found Hal ini umum dilakukan didalam mengcompile program dari source
code, dimana kita bisa menggabungkan configure dan make.
.configure --prefix=xxx make
Proses make hanya di eksekusi apabila proses .configure sukses.
Jika command dipisahkan oleh dua || double vertical bar, command kedua akan dijalankan apabila command pertama gagal.
date || printf s\n command kedua
Tue Nov 13 14:55:06 WIT 2007
date1 || printf s\n command kedua
-bash: date1: command not found command kedua
Selain multiple command, shell juga bisa menerima baris command lebih dari satu baris, misalkan kita mengetik sebuah command yang
panjang dan karena lebar screen yang terbatas, kita bisa memecahnya menjadi beberapa baris dengan menggunakan tanda \ backslash di
setiap akhir baris, dimana nanti akan muncul tanda
Sebagai contoh kita ingin menampilkan string baris pertama baris kedua baris ketiga, untuk itu pada prompt ketik echo baris pertama \
Shell dan Command Line 375
kemudian tekan ENTER, maka akan muncul tanda yang menandakan bahwa command yang kita input berada pada satu baris,
yang bisa dilihat pada command dibawah ini. Pada baris yang kita inginkan untuk mengakhirinya cukup tekan ENTER, tanpa tanda \
echo baris pertama \ baris kedua \
baris ketiga
baris pertama baris kedua baris ketiga
Shell Input dan Output.
Pada shell ada yang di sebut dengan standard input dan standard output serta standard error. Standar input biasanya berasal dari
keyboard, sedangkan standar output adalah output dari sebuah program dimana program tersebut dijalankan. Contoh penggunaan
standar input yang sederhana adalah penggunaan command cat, ketik pada shell
cat Cursor akan berpindah kebawah, dimana cat menunggu kita untuk
input dari keyboard, untuk menutupnya tekan CTRL + D. cat juga bisa mengambil input dari sebuah file, contohnya command cat dibawah ini
menggunakan file1.txt sebagai inputnya dan menampilkan isi file1.txt sebagai output pada screen.
cat file1.txt
Kita juga bisa melakukan input redirection dengan menggunakan tanda , dimana hal ini kurang lazim digunakan, contoh dibawah ini akan
sama hasilnya dengan perintah yang sebelumnya
cat file1.txt
Kenapa hal ini disebut tidak umum untuk digunakan, karena pada umumnya command yang ada pada NIX bisa menerima file sebagai
argument, seperti yang terlihat pada “cat file1.txt”. Sedangkan pada output redirection, kita mengirimkan output kedalam
sebuah file, bukan menampilkan output secara normal pada screen.
376 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Output redirection menggunakan tanda . Contoh dibawah ini akan menyimpan apa yang kita ketikkan begitu menekan CTRL + D pada
file bernama file.txt
cat file.txt
hello urangkayo
D
Tanda D diatas bukan berarti mengetikan D, tapi berarti tekan CTRL dan D secara bersamaan. Output redirection dengan
menggunakan tanda , jika ternyata file.txt sudah ada sebelumnya, maka file tersebut akan di timpa dengan file yang baru. Bagaimana jika
kita tidak ingin menimpanya, tapi menambahkan diakhir baris yang sudah ada, untuk itu gunakan tanda . Contohnya
cat file.txt
lagi belajar linux ubuntu
D
Sekarang lihat isi file tersebut dengan command berikut ini
cat file.txt
hello urangkayo
lagi belajar linux ubuntu
Dibawah ini contoh penggunaan cat yang digabungkan dengan grep menggunakan pipeline. cat merupakan perintah sederhana yang
handal didalam bekerja dengan shell dan command line. Terutama jika digabungkan dengan beberapa perintah seperti grep.
cat proccpuinfo | grep model name
model name : AMD Durontm processor Selain standar input dan standar output, ada juga standar error,
standar error memiliki stream ID 2, sedangkan stream ID 1 dimiliki
Shell dan Command Line 377
oleh standar output. Contoh berikut akan memperlihatkan standar error pada saat kita melakukan perintah ls untuk file yang tidak ada.
ls -l file.txt file.doc output.list
ls: file.doc: No such file or directory Sama seperti halnya standar input dan output, standar error juga bisa
kita redirect kedalam sebuah file, sehingga error tersebut tidak muncul pada screen, cara melakukan redirect standar error kedalam sebuah
filel adalah
ls -l file.txt file.doc output.list \ 2 message.error
Cara membaca baris command diatas adalah, redirect output dari ls kedalam file output.list, dan jika ada error, redirect error tersebut
kedalam file message.error. Perlu diingat antara angka 2 dan tidak boleh ada spasi yang memisahkan. Sekarang kalau kita lihat isi
direktori kerja kita, maka akan ada file output.list dan message.error. Lihat isi file message.error menggunakan cat, yang isinya adalah
standar output yang sebelumnya muncul pada screen.
ls
file.txt message.error output.list shell_script
cat message.error
ls: file.doc: No such file or directory Untuk meredirect standar output dan standar error kedalam satu file
yang sama, gunakan command berikut. Ingat antara angka 2, , dan angka 1 tidak boleh ada spasi.
ls -l file.txt file output_message 21 cat output_message
ls: file: No such file or directory -rw-r--r-- 1 urangkayo urangkayo 43 2007-04-06
20:03 file.txt
378 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Pipeline
Pipeline akan mengirimkan output sebuah command menjadi input bagi command berikutnya. Contohnya, pada command dibawah ini,
command ls akan menghasilkan daftar file yang ada pada pada
direktori usrbin kepada command grep, kemudian grep akan menampilkan output dari ls tersebut hanya yang sesuai dengan
expression yang ada pada grep, disini adalah zsh.
ls -l usrbin | grep zsh
lrwxrwxrwx 1 root root 28 2007-11-12 06:41 zsh - etcalternativeszsh-usrbin
Dengan pipeline kita bisa menggabungkan banyak command, lihat contoh berikut ini. Pada command pertama, output ls di kirim ke
command sort
, dimana sort akan mengurutkan output dari ls tersebut, kemudian hasilnya dikirim ke command less, yang berguna apabila
hasil sort, ternyata lebih dari satu layar, maka setiap tampilan satu layar, output tersebut akan di pause sampai kita tekan tombol SPACE.
ls -l usrlib | sort -n | less cut -d: -f1 etcpasswd | sort
backup bin
Perintah cut diatas akan menampilkan kolom pertama dari file etcpasswd dan mengurutkannya.
Background jobs
Umumnya pada shell untuk bisa menjalankan perintah yang lain, kita harus menunggu perintah sebelumnya selesai. Contohnya jika kita
mengekstrak file kernel dalam bentuk .tar.bz2
tar xjvf file_kernel.tar.bz2
Sebelum proses ini selesai, maka kita tidak bisa menjalankan perintah yang lain. Agar kita bisa menjalankan perintah lain pada waktu
perintah yang sebelumnya masih berjalan, maka tambahkan tanda didepan perintah tersebut, yang membuat perintah tersebut berjalan
Shell dan Command Line 379
pada background, perintah yang berjalan dengan cara seperti ini disebut dengan background jobs.
tar xjvf file_kernel.tar.bz2
Begitu perintah tersebut di ENTER, akan muncul seperti baris berikut ini dibawah perintah yang di input tadi.
[1] 175
Dimana [1] adalah nomor background jobs yang ada, kemudian 175 process id PID dari perintah tersebut. Untuk mengetahui perintah
apa saja yang sedang berjalan pada backgrounds gunakan perintah jobs
jobs
[1]+ Running tar xjvf file_kernel.tar.bz2 Jika background jobs ini telah selesai akan muncul tampilan
[1]+ Done tar xjvf file_kernel.tar.bz2 Jangan pernah menggunakan background jobs untuk perintah-
perintah yang bersifat interaktif, karena hal ini tidak akan bertindak seperti yang diinginkan, seperti menggunakan perintah useradd pada
background jobs. Untuk mengatur prioritas sebuah background jobs gunakan perintah nice.
Seperti yang sudah diketahui, pada linux untuk mengetahui manual atau informasi dari sebuah perintah bisa menggunakan man atau info.
Bash shell sendiri memiliki built-in help command untuk menampilkan informasi mengenai built-in command dari bash shell,
seperti perintah cd berikut,dimana perintah ini tidak memiliki man, karena merupakan perintah built-in pada bash shell
man cd
No manual entry for cd
help cd
cd: cd [-L|-P] [dir]
380 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Change the current directory to DIR. The variable HOME is the default DIR. The variable
CDPATH defines the search path for the directory containing DIR. Alternative directory names in
CDPATH are separated by a colon :. A null directory name is the same as the current
directory, i.e. `.. If DIR begins with a slash , then CDPATH is not used. If the directory
is not found, and the shell option `cdable_vars is set, then try the word as a variable name.
If that variable has a value, then cd to the value of that variable. The -P option says to
use the physical directory structure instead of following symbolic links; the -L option forces
symbolic links to be followed.
Perintah man sendiri memiliki 9 bagian yaitu: 1. Executable programs atau shell commands
2. System calls untuk fungsi-fungsi yang disediakan oleh kernel 3. Library calls fungsi-fungsi yang menyertai program library
4. Special files untuk device-device pada dev 5. File formats, seperti etcpasswd
6. Games 7. Miscellaneous command seperti macro packages dan
conventions, misalnya man7, groff7 8. System administration commands umumnya perintah ini hanya
bisa dijalankan dengan hak akses root 9. Kernel routines.
Jika sebuah perintah memiliki lebih dari satu bagian man, maka kita
bisa menggunakan format “man nomor_bagian nama_perintah” untuk menuju man dari perintah yang diinginkan, contoh perintah
man berikut akan melihat man bagian 5 dari etcpasswd
man 5 passwd
Shell dan Command Line 381
Shell Alias
Shell alias digunakan untuk mempersingkat sebuah command. Misalkan kita sering menggunakan perintah ls -lah dalam melihat isi
sebuah direktori, dengan alias kita bisa mempersingkatnya, misalkan dengan ll
alias ll=ls -lah ll
Setelah kita mengetikkan alias diatas, output dari perintah ls -lah akan sama dengan output saat kita mengetikkan ll pada prompt shell. Agar
alias tersebut bisa permanen, kita harus menambahkannya pada file .bashrc di home direktori kita.
Mengkostumisasi Prompt
Seperti yang telah kita lihat, prompt dari bash shell untuk user biasa adalah dan untuk root, yang diikuti dengan informasi seperti nama
user, working direktori, hostname. Tampilan ini bisa kita modifikasi dengan memodifikasi isi variable PS1 prompt string 1 yang
digunakan oleh bash sebagai prompt utama. Sekarang kita lihat isi dari variable PS1 terlebih dahulu
echo PS1
{debian_chroot:+debian_chroot}\u\h:\w\ Contohnya kita ingin menampilkan nama shell setelah hostname
export PS1=\u\h using-\s:\w\ urangkayogateway using--bash:~ echo PS1
\u\h using-\s:\w Terlihat diatas, begitu perintah export selesai, prompt shell kita juga
ikut berubah. Escape karakter yang bisa digunakan dalam memodifikasi shell prompt pada bash bisa dilihat pada tabel 16.2
dibawah ini. Anda bisa menggunakan daftar yang ada pada tabel ini didalam melakukan kustomisasi shell prompt sesuai yang diinginkan:
382 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
\a beep ASCII bell character
\A 24 jam, dengan format HH: MM
\d
Date, format “weekday-month-date”
\D{s} C statftime function with format string s
\e ASCII escape character
\h Hostname
\H Hostname, termasuk domain
\j Jumlah job pada jobs tabel
\l
tty device
\n New line
\r carriage return
\s Nama shell
\t Waktu dalam 24 jam
\T Waktu dalam 12 jam
\
Waktu dalam AMPM format
\u Username
\v Bash version
\V Bash release
\w Current working directory
\W basename dari current working directory
\
Posisi dari command dalam history list
Shell dan Command Line 383
\ Sequential command number for the session
\ Default prompt untuk superuser, user biasa
\nnn
ASCII character dalam octal format
\\ Backslash
\[ Begins a sequence of nonprintable characters
\] Ends a sequence of nonprintable characters
Tabel 16.2 Escape karakter untuk prompt shell Hash table
Hash table digunakan untuk melihat lokasi dari perintah yang pernah kita gunakan. Seperti yang sudah diketahui setiap kali kita
menjalankan sebuah command tanpa path lengkap, maka shell akan mencari command tersebut pada direktori yang ada di variable PATH.
Ketika command tersebut ditemukan, shell akan menempatkan command tersebut pada hash table, sehingga jika kita menjalankan
command yang sama lagi maka shell akan melihat hash table terlebih dahulu. Untuk melihat hash table gunakan perintah builtin shell
hash
hits command 16 bindate
19 usrbinman 4 binls
15 usrbinclear
Spesial karakter
Bash shell memiliki spesial karakter yang memiliki arti khusus bagi shell itu sendiri, spesial karakter ini memiliki arti khusus bagi bash
shell didalam kita menjalanakan sebuah perintah atau shell script, beberapa diantaranya adalah:
384 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Character Meaning
~ Home directory
` Command substitution archaic
Comment Variable expression
Background job String wildcard
Start subshell End subshell
\ Quote next character
|
Pipe
[ Start character-set wildcard
] End character-set wildcard
{ Start command block
} End command block
; Shell command separator
Strong quote Weak quote
Input redirect Output redirect
Pathname directory separator
Shell dan Command Line 385
? Single-character wildcard
Pipeline logical NOT
Tabel 16.3 Spesial Karakter
Ketika bekerja dengan shell, mungkin kita ingin menampilkan spesial karakter seperti tanda , dalam bentuk aslinya bukan sebagai spesial
karakter bagi shell itu sendiri. Agar kita bisa melakukan hal ini maka kita harus meng-quote baris yang kita input pada shell. Sebagai contoh
kita ingin agar baris
“2 5 adalah 5” ditampilkan seperti adanya, untuk itu bisa menggunakan tanda „ single quote, lihat perintah
dibawah ini
echo 2 5 adalah 5
2 5 adalah 5 Jika kita menghilangkan quote pada baris ini perintah echo ini tidak
akan menampilkan apapun pada screen. Pada perintah diatas kita menggunakan single quote, kita juga bisa menggunakan double quote
untuk menampilkan string diatas dengan hasil yang sama. Sekarang perhatikan perbedaan penggunaan single quote dan double
quote pada echo dimana kita ingin menampilkan string urangkayo books.
echo urangkayo book\s
urangkayo book\s Perintah echo diatas akan menganggap yang ada didalam sebagai
satu string tanpa mempedulikan escape karakter untuk \
echo urangkayo book\s
Perintah echo yang kedua memunculkan prompt untuk melanjutkan perintah, karena command tersebut dianggap tidak lengkap tanda
nya, sehingga muncul prompt untuk melanjutkan yaitu tanda
echo urangkayo book\s
386 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
urangkayo books Perintah echo yang ini menampilkan string yang ingin kita tampilkan.
Bagaimana hal ini terjadi, sekarang perhatikan urangkayo book akan dianggap sebagai satu string, kemudian \ dianggap sebagai escape
karakter untuk menampilkan tanda single quote dan selanjutnya s akan menampilkan karakter s, sehingga keseluruhan baris tersebut
akan menampilkan string urangkayo books. Hal ini akan berbeda jika kita menggunakan perintah printf. Anda bisa mencoba sendiri dengan
mengganti echo menjadi printf pada tiga perintah diatas.
Shell options
Bash shell mempunyai beberapa options yang bisa kita atur, beberapa diantaranya telah disebutkan seperti options untuk emacs mode, vi
mode. Untuk melakukan modifikasi sebuah options pada bash shell kita bisa menggunakan perintah set -o options_name, seperti set -o
emacs untuk merubah mode editing menjadi emacs mode. Beberapa options lain seperti
ignoreeof : tidak mengizinkan penggunaan CTRL + D untuk log out set -o ignoreeof
Sekarang tekan tombol CTRL + D berbarengan maka akan muncul seperti dibawah ini
Use logout to leave the shell. noclobber : tidak mengizinkan penggunaan output redirection
untuk meng-overwrite file yang sudah ada. Contoh jika options ini tidak diset, dan kita mempunyai file dengan nama document1.txt,
pada saat kita menggunakan perintah cat document1.txt, maka file yang lama akan dioverwrite oleh file yang baru. Jika option ini diset
set -o noclobber touch test
cat test
-bash: test: cannot overwrite existing file
noglob : tidak mengizinkan penggunaan wildcard expansion dan ?
Shell dan Command Line 387
set -o noglob ls -l usrlocalsbina
ls: usrlocalsbina: No such file or directory Terlihat options noglob akan menganggap a sebagai sebuah file
bukan sebagai wilcard untuk karakter apapun, sehingga ketika kita melakukan perintah ls, akan muncul error No such file or directory.
nounset : memunculkan pesan error jika kita menggunakan variable yang tidak terdefenisi. Contoh buat sebuah variable
NICKNAME=urangkayo echo NICKNAME
urangkayo
unset -v NICKNAME echo NICKNAME
Untuk perintah diatas, yang pertama kita mendefenisikan variable NICKNAME dengan value urangkayo, selanjutnya kita panggil
variable tersebut
menggunakan echo
NICKNAME yang
memunculkan urangkayo pada screen. Perintah ketiga meng-unset atau menghapus variable NICKNAME, kemudian kita coba panggil
lagi dengan echo, dimana hanya akan memunculkan baris kosong pada screen. Sekarang aktifkan options nounset pada shell
set -o nounset echo NICKNAME
-bash: NICKNAME: unbound variable Pada perintah yang kedua, kita panggil variable yang sebelumnya
telah dihapus, sehingga akan muncul error seperti diatas. Untuk melihat options shell apa saja yang aktif atau non aktif gunakan
perintah dibawah ini, options yang aktif ditandai dengan “on” dan
yang tidak aktif ditandai dengan “off” set -o
388 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Untuk menonaktifkan sebuah options gunakan perintah set +o nama_options, contoh kita akan menonaktifkan options noglob
set +o noglob
Lihat dengan perintah set -o sekarang option noglob sudah off. Selain menggunakan perintah set, kita juga bisa menggunakan perintah
shopt, gunakan help shopt untuk mengetahui cara menggunakan shopt.
Session Profile
Pada saat kita login dan memulai sebuah session baru bash shell, maka bash akan menjalankan file etcprofile, .profile, etcbash.bashrc
.bashrc. File etcprofile dan etcbash.bashrc digunakan untuk semua user yang ada, jika kita melakukan modifikasi file ini maka
akan ber-efek pada semua user yang bisa login kedalam system. Sedangkan .profile dan .bashrc hanya terdapat pada masing-masing
home direktori dari user yang bersangkutan. File etcprofile dan .profile hanya akan dieksekusi oleh login shell, jika dalam session aktif
kita menjalankan perintah
bash
maka file .profile tidak akan dijalankan, agar .profile dijalankan kita harus menggunakan perintah
bash --login
Perintah ini berguna untuk melihat hasil dari file .profile yang dimodifikasi tanpa harus logout dari session. Sekarang kita akan
mencoba memodifikasi file .profile, buka dengan teks editor, dan tambahkan baris berikut dibagian paling bawah
date simpan hasil perubahan tersebut, kemudian jalankan perintah berikut
bash --login
Tue Nov 13 20:55:13 WIT 2007 Untuk keluar ketik perintah
Shell dan Command Line 389
logout
Modifikasi seperti merubah prompt shell secara permanen, mode editing yang digunakan oleh shell bisa ditempatkan pada file .profile.
Untuk interaktif session yang bukan login session, maka bash akan melihat pada file etcbash.bashrc dan .bashrc. Pada .bashrc,
umumnya digunakan untuk menempatkan sebuah fungsi alias bagi
sebuah command, misalnya alias ls=‟ls –qF‟. Pada distro Ubuntu, file .bashrc ini juga dijalankan pada waktu login session, hal ini bisa dilihat
pada file .profile di Ubuntu terdapat baris berikut
if running bash if [ -n BASH_VERSION ]; then
include .bashrc if it exists if [ -f ~.bashrc ]; then
. ~.bashrc fi
fi
.bash_logout merupakan file yang dijalankan pada saat kita logout dari session bash shell. Jika kita ingin menghapus isi direktori tertentu
pada saat logout, maka perintah tersebut harus ditempatkan pada file .bash_logout. Sedangkan .bash_history berisikan command-command
yang pernah kita input pada shell.
dot File pada Linux
Linux biasanya menyimpan file-file konfigurasi dari user, sistem, shell dalam bentuk file yang diawali dengan tanda . titik didepan nama
filenya. Contohnya .bash_history, .bashrc, .bash_logout. File-file ini dinamakan dengan nama dot file, yang berisikan konfigurasi dari
program atau shell. Umumnya file-file ini terdapat pada home direktori dari user, dan file ini merupakan file yang dihidden
tersembunyi jika di lihat dengan perintah ls -a, untuk melihatnya gunakan argument -a, ls -la. Tidak semua file dengan tanda . titik
merupakan dot file. Jika ingin membuat file atau direktori yang
390 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
dihidden awali nama file atau direktori tersebut dengan tanda . titik, contoh
mkdir .hidden touch .hidden_file
Untuk melihatnya gunakan perintah ls dengan options -a.
ls -la
Tanda . titik selain berarti hidden file, juga memiliki arti khusus bagi shell. Sekarang buat direktori kosong dengan menggunakan perintah
berikut
mkdir direktori_kosong cd direktori kosong
ls -la
. .. Hasil dari ls -la pada direktori ini berupa tanda . titik satu kali dan ..
titik dua kali. Tanda titik satu kali disini berarti current direktori merujuk pada direktori kita aktif sekarang sedangkan tanda titik dua
kali berarti parent direktori merujuk pada satu direktori diatas direktori sekarang. Contoh penggunaannya
cd ..
Perintah diatas berarti , pindah change direktori satu tingkat keatas dari direktori aktif sekarang, jika direktori aktif kita adalah
homeurangkayodirektori_kosong, maka perintah cd .. diatas akan membawa kita ke direktori homeurangkayo. Yang perlu diingat
adalah ketika kita bekerja dengan file seperti membuat file atau direktori, pemberian tanda titik berarti hidden file atau direktori pada
Linux.
Permisions pada File dan Direktori
Pada Linux, permisi file file permission dan direktori sangat berperan penting untuk memproteksi file dan direktori dari akses yang tidak
sah. Pada shell kita bisa menggunakan perintah ls –l untuk melihat
Shell dan Command Line 391
permisi dari sebuah file atau direktori. Sekarang perhatikan perintah berikut ini
ls –l
drwxr-xr-x 2 urangkayo urangkayo 1024 2006-12-19 12:33 test -rw-r--r-- 1 urangkayo urangkayo 24 2006-12-19 16:17 file1
Yang berhubungan dengan file permission adalah sepuluh karakter paling kiri, yang bisa dilihat pada tabel berikut ini
Tipe file User
Groups Others
d rwx
-xr --x
test -
rw- r--
r-- file1
Tabel 16.4 File permission
Keterangan untuk tipe file adalah
d : digunakan untuk direktori
- : berarti file biasa
l : berarti simbolik link
b : berarti block device
c : karakter device
p : pipe devices
s : socket device
Sedangkan untuk user owner, groups, others direpresentasikan dalam tiga karakter yang masing-masing karakter tersebut memiliki
arti
r : read pemisi baca
w : write permisi tulis
x : execution permisi eksekusi
- : berarti tidak memiliki permisi
392 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Permisi file yang dilambangkan diatas bisa ditulis dengan angka yang disebut dengan absolute mode, dimana
4 : mewakili permisi baca
2 : mewakili permisi tulis
1 : mewakili permisi eksekusi
Jika ada file dengan permisi rwx, bisa disimbolkan dengan angka 7 4 + 2 + 1. Perintah-perintah yang berhubungan dengan file permission ini
adalah chmod untuk merubah permisi file, chown merubah pemilik file dan chgrp merubah group file.
Simbol-simbol yang biasa digunakan dalam merubah permisi dari file adalah :
u : owner atau user
g : group files
o : others
a : all default dari file permisi jika tidak didefenisikan
+ : untuk menambah permisi
- : untuk mengurangi permisi
= : mereset permisi menghapus semua permisi file yang ada
Berikut ini akan diberikan contoh penggunaan dari perintah chmod ls
–l
-rw-r--r-- 1 urangkayo urangkayo 24 2006-12-19 16:17 file1 -rw-r--r-- 1 urangkayo urangkayo 24 2006-12-19 16:30 file2
chmod = file2 ls -l file2
---------- 1 urangkayo urangkayo 24 2006-12-19 16:40 file2
chmod u+x file1 ls
–l
-rwx-r--r-- 1 urangkayo urangkayo 24 2006-12-19 16:50 file1
Shell dan Command Line 393
chmod go-r file1 ls
–l
-rwx------- 1 urangkayo urangkayo 24 2006-12-19 16:55 file1
Symbolic Links
Symbolic link merupakan file yang merujuk kepada file lain, seperti halnya shortcut pada MS Windows. Pada output dari ls -l dibawah ini
terlihat bahwa file umask_file2 merupakan symbolic link dari file umask_file, hal ini ditandai dengan tanda - yang merujuk kepada file
aslinya. Penggunaan symbolic links tidak menghabiskan ruang pada harddisk, hal ini berbeda dengan penggunaan hard links.
ls -l
total 4 drwxr-x--x 2 urangkayo urangkayo 4096 2007-11-14
09:26 umask_dir -rw-r----- 1 urangkayo urangkayo 0 2007-11-14
09:26 umask_file lrwxrwxrwx 1 urangkayo urangkayo 10 2007-11-15
18:43 umask_file2 - umask_file Untuk membuat symbolic links, gunakan perintah ln -s nama_file
nama_symbolic_links. Yang perlu diingat adalah, jika kita melupakan option -s, maka kita akan membuat hard links, bukan symbolic links.
Sekarang penulis akan mencoba membuat symbolic links dari umask_dir, untuk itu gunakan perintah
ln -s umask_dir dir_simbolic
Gunakan perintah ls -l untuk melihatnya, yang terlihat pada gambar 16.2 berikut ini. Pada gambar 16.2 juga terlihat bahwa symbolic links
akan diberi warna yang sama baik itu symbolic link untuk file maupun untuk direktori. Perhatikan juga ketika penulis men-delete file
umask_file, ketika dilakukan perintah ls -l, maka symbolic links tidak ikut terhapus, akan tetapi file symbolic ini akan menjadi broken links,
yang ditandai dengan warna merah pada nama filenya.
394 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
Gambar 16.2 Warna untuk symbolic links
Hal sebaliknya adalah jika kita men-delete file symbolic links, maka tidak akan memiliki pengaruh apapun terhadap file aslinya. Untuk
membuktikan file symbolicnya menjadi rusak linknya, perhatikan error yang muncul disaat penulis melakukan perintah cat pada file
symbolic link yang telah didelete file aslinya
cat umask_file2
cat: umask_file2: No such file or direktory Hal ini sama persis seperti shortcut pada MS Windows, dimana jika
file aslinya dihapus, maka shortcut tersebut tidak akan bekerja.
Gambar 16.3 Symbolic links
Shell dan Command Line 395
Sekarang perhatikan gambar 16.3, ketika penulis melakukan perintah “cd dir_simbolic” dan kemudian melakukan “pwd” pada direktori
t ersebut, outputnya adalah “homeurangkayodir_simbolic”
meskipun sebenarnya direktori tersebut sama dengan direktori umask_dir. Untuk membuktikan bahwa direktori ini sama, sekarang
penulis membuat file pada direktori umask_dir
touch umask_dirfile_di_umask_dir.txt cd umask_dir
Ketika dilakukan perintah ls dari dalam direktori ini akan menampilkan file yang telah dibuat tadi, sekarang keluar dari direktori
umask_dir dengan mengetikkan perintah, dan kemudian pindah ke direktori dir_simbolic
cd .. cd dir_simbolic
Jika kita lakukan perintah ls pada direktori ini, hasilnya akan sama dengan ls pada direktori umask_dir, dimana daftar file yang
ditampilkan sama. Symbolic links umum digunakan untuk melink file-file library pada linux, atau pada kernel headers, hal ini berguna
untuk menghemat ruang pada harddisk.
Shell Variable Environment Variable
Shell variable merupakan variable yang disimpan sementara oleh shell. Untuk memberikan value pada shell variable gunakan tanda =
setelah nama variable, contohnya
TEST=belajar
Untuk menampilkan isi dari shell variable ini gunakan perintah berikut
echo TEST
Belajar Kita sudah mengetahui jika options nounset diaktifkan, maka kita
harus mendeklarasikan variable terlebih dahulu untuk bisa digunakan agar tidak terjadi pesan error. Untuk menghapus variable gunakan
396 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
perintah unset -v nama_variable. Sekarang kita akan melihat penggunaan variable dan quote. Jika ingin menggunakan variable
dalam sebuah string pada command line atau shell script, gunakan “
double quote, kenapa? Lihat contoh berikut ini untuk memahaminya
MYVAR=urangkayo echo MYVAR
urangkayo
echo Met pagi MYVAR
Met pagi MYVAR
echo Met pagi MYVAR
Met pagi urangkayo Seperti terlihat pada perintah-perintah diatas, pertama kali kita
mendefenisikan variable MYVAR dengan value urangkayo. Selanjutnya kita panggil variable tersebut dengan perintah echo. Pada
command yang ketiga, kita gabungkan string dan variable yang didefenisikan tadi dengan menggunakan single quote dan hasilnya
adalah echo mencetak Met pagi MYVAR, dimana MYVAR dianggap sebagai satu kata dengan string Met pagi. Sekarang lihat
yang selanjutnya, ketika kita menggunakan double quote echo menampilkan yang seharusnya yaitu Met pagi urangkayo, terlihat
disini dengan menggunakan echo terlebih dahulu mengganti variable MYVAR dengan valuenya, dan kemudian mencetak
keseluruhan string pada screen. Sekarang lihat lagi contoh berikut ini
MYVAR2=CaPoeX dot Net echo MYVAR2
CaPoeX dot Net
echo MYVAR2
CaPoeX dot Net
MYVAR3=CaPoeX dot Net echo MYVAR3
Shell dan Command Line 397
CaPoeX dot Net
echo MYVAR3
CaPoeX dot Net Variable MYVAR2 memiliki value CaPoeX dot Net terdapat tiga
spasi yang memisahkan kata CaPoeX dan dot, serta dot dan Net, dan kita gunakan single quote ketika mendefenisikan variable tersebut,
ketika dipanggil dengan echo MYVAR2, hasilnya adalah CaPoeX dot Net dimana hanya ada satu spasi diantara masing-masing kata.
Agar echo menampilkan isi variable sesuai dengan yang didefenisikan ketika menggunakan echo tambahkan tanda diantara nama variable
sehingga menjadi echo MYVAR. Hal yang sama juga terjadi
meskipun kita mendefenisikan variable dengan menggunakan tanda “ yang terlihat pada MYVAR3.
Environment Variable yaitu informasi yang disimpan oleh shell yang bisa digunakan tidak hanya oleh shell tersebut, tapi juga oleh program-
program lainnya. Environment Variable dapat berisikan lokasi untuk file-file konfigurasi, mail, path, ukuran besar history, ataupun nilai dari
shell. Variable ini disebut juga dengan built-in variable. Untuk melihat built-in variable dari bash shell, lihat pada halaman man bash shell.
Untuk melihat isi dari environment variables bisa menggunakan perintah declare. Pada shell ketik perintah berikut
declare | more
Untuk melihat daftar lengkap environment variable, gunakan perintah man bash. Beberapa environment variable yang biasa digunakan
adalah:
BASH : berisi full path dari BASH SHELL echo BASH
binbash
BASH_VERSION : melihat versi dari BASH SHELL echo BASH_VERSION
3.1.171-release
398 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
EUID : efektif user id dari user yang sedang login. echo EUID
1000
HISTFILE : full path dari history file echo HISTFILE
homeurangkayo.bash_history
HISTFILESIZE : jumlah entri dari file .bash_history, default nya adalah 500.
echo HISTFILESIZE
500
HISTCMD : jumlah command history yang ada pada .bash_history echo HISTCMD
493
HOME : full path dari home direktori user aktif. echo HOME
homeurangkayo
PATH : menampilkan daftar direktori untuk menjalankan sebuah perintah. Bisa berupa full path dimulai dengan tanda slash atau
bisa juga relatif path dimulai dengan tanda . titik. Variable ini sudah dibahas diatas, silahkan dilihat kembali pada bagian awal dari bab ini.
echo PATH
usrlocalsbin:usrlocalbin:usrsbin:usrbin: sbin:bin:usrbinX11:usrgames
RANDOM : menghasilkan bilangan acak dari bilangan 0
– 99999
echo RANDOM
11663
UID : mengetahui ID dari user aktif echo UID
Shell dan Command Line 399
Selain environment variable yang sudah ada dalam sistem itu sendiri, kita juga bisa mendefenisikan sendiri environment variable. Misalkan
kita ingin membuat environment variable untuk X yang menunjuk kepada direktori homeurangkayolatihantempsampah sehingga
kalau kita ketik cd X pada shell akan langsung menuju ke homeurangkayolatihantempsampah.
X=homeurangkayolatihantempsampah export X
cd X
Jika kita ingin menghapus isi dari variable X, gunakan perintah unset.
unset X Umask
Umask digunakan untuk menentukan hak akses default untuk file yang dibuat oleh user. Pada Ubuntu nilai umask default adalah 022,
yang bisa dilihat dengan mengetikkan perintah umask pada shell. Untuk mengetahui cara kerja umask, kita harus mengetahui mengenai
file permission pada Linux, seperti yang sudah dibahas diatas. Umask menggunakan absolute mode permission dari chmod. Seperti yang
telah kita ketahui, hak akses terdiri atas owner,groups, others, dimana bisa dilihat seperti pada gambar berikut
Gambar 16.4 Absolute file permission
Dan telah diketahui juga, jumlah maksimal dari masing-masing bit tersebut adalah 7 yang berarti memiliki hak akses penuh, cara kerja
umask adalah dengan mengurangi nilai maksimal untuk hak akses ini yaitu 7 dengan hak akses yang diinginkan. Untuk lebih jelasnya lihat
contoh berikut ini. Misalkan kita ingin membuat hak akses default untuk setiap file agar owner memiliki seluruh hak akses 7, groups
400 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu
memiliki hak akses read, execute 5, others memiliki hak akses execute 2, yang bisa dilihat pada tabel berikut
Owner Groups
Others
Read Write Execute Read Write Execute Read Write Execute
4 2
1 4
1 1
7 5
1
Tabel 16.5 Hak akses 751
Sekarang untuk mendapatkan nilai umask yang diinginkan untuk hak akses diatas, kurangkan nilai hak akses maksimal 7 dengan setiap
hak akses dari owner, groups, dan others
7 -7 = 0 owner 7 - 5 = 2 groups
7 - 1 = 6 others
Sehingga didapat nilai umask 026 untuk hak akses yang diinginkan yaitu 751. Sekarang gunakan perintah umask untuk merubahnya
umask 026
Uji umask baru ini dengan membuat sebuah file dan direktori,
touch umask_file mkdir umask_dir
ls -l
drwxr-x--x 2 urangkayo urangkayo 4096 2007-11-14 09:26 umask_dir
-rw-r----- 1 urangkayo urangkayo 0 2007-11-14 09:26 umask_file
Disini dapat kita lihat bahwa meskipun hak akses default yang diset adalah 751, tapi ketika kita membuat sebuah file, hak akses yang
diberikan adalah 640, hal ini umum pada penggunaan umask untuk
Shell dan Command Line 401
file, seperti menggunakan umask default 022 yang berarti 755 dimana ketika kita membuat file, maka hak akses nya menjadi 644. Hal
yang berbeda terjadi ketika membuat direktori, dimana hak akses yang diberikakn adalah 751 sesuai dengan umask default yang dibuat
tadi.
Full Path dan Relative Path
Direktori Linux dimulai dari slash yang lebih sering disebut sebagai root direktori. Berbeda dengan Windows dimana direktori
dipisah oleh tanda \ backslash, pada Linux direktori dipisah oleh tanda slash. Contoh nya root, home, etc. Tanda . satu titik
merupakan direktori aktif current direktori. Tanda .. dua titik merupakan direktori parent satu tingkat diatas direktori aktif.
Contoh
nya, jika
kita saat
ini berada
pada direktori
homeurangkayolatihan , maka ..temp itu akan sama dengan homeurangkayotemp. Hal ini sudah dijelaskan sebelumnya pada
bab 16 ini.
Direktori yang diawali dengan tanda disebut dengan full path atau absolute path, sedangkan direktori yang diawali dengan tanda . titik
disebut relatif path. Penulisan home direktori juga bisa dilambangkan dengan tanda ~, yang berarti juga relative path, jika pada shell kita
mengetikkan “ cd ~” itu sama artinya dengan “ cd homeurangkayo”. Contoh perintah cd berikut merupakan bentuk
penggunaan dari full path
cd usrlocalsbin cd homeurangkayolatihan
Perintah berikut merupakan bentuk penggunaan dari relative path
cd .latihan cd ..temp_dir
cd ~latihan Gunakan perintah pwd untuk melihat direktori aktif kita berada
pwd
402 Pake Ubuntu Yuk Dijamin ga bakalan kena usus buntu