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

16.2 Perintah Linux

yang umum digunakan Pada sub bab ini akan ditampilkan beberapa perintah-perintah dasar yang umum digunakan ketika kita bekerja dengan command line. Untuk melihat lebih lengkap lagi dari daftar perintah-perintah linux, bisa melihat pada lampiran E dari buku ini. man Digunakan untuk melihat manual perintah. Sintak dari perintah ini adalah man [nama_perintah], contohnya man ls man man Perintah yang pertama akan menampilkan manual dari perintah ls, dan perintah yang kedua menampilkan manual dari man itu sendiri. Biasakan untuk melihat manual sebuah perintah untuk mengetahui parameter apa saja yang bisa dilewatkan pada perintah tersebut, yang berguna ketika kita menjalankan sebuah perintah. info Digunakan untuk melihat kegunaan sebuah perintah pada Linux sama dengan perintah man. Sintak perintah ini adalah info [nama_perintah], contohnya info ls info mkdir ls Digunakan untuk menampilkan isi dari sebuah direktori, parameter yang sering digunakan dalam perintah ls adalah –l menampilkan dalam long format, -a menampilkan hidden files. Sintaknya adalah ls [nama_direktori], contohnya ls admin linux programming server shell_editor Shell dan Command Line 403 ls -l total 10 drwxr-xr-x 2 urangkayo urangkayo 2048 2006-12-17 04:47 admin ls -la total 17 drwxr-xr-x 7 urangkayo urangkayo 5120 2006-12-17 04:49 . drwxr-xr-x 30 urangkayo urangkayo 2048 2006-12-18 18:09 .. drwxr-xr-x 2 urangkayo urangkayo 2048 2006-12-17 04:47 admin cp Perintah untuk men-copy sebuah file atau direktori. Sintak dari perintah ini adalah cp [file1] [file2] atau cp [file1] [file2] [file…] [direktori_tujuan], contoh penggunaannya, perintah berikut akan meng-copy file latihan1 dengan nama latihan2 cp latihan1 latihan2 Meng-copy file latihan1 latihan2 ke direktori temp cp latihan1 latihan2 temp Untuk meng-copy direktori, gunakan option -r pada perintah cp. cp -r direktori1 direktori2 mv Perintah untuk me-rename atau untuk memindahkan sebuah file atau direktori. Sintak perintah ini adalah mv [file1] [file2] atau mv [file1 file2...] [direktori_tujuan] atau mv [direktori] [direktori], contoh penggunaannya, me-rename file latihan1 menjadi latihan3 mv latihan1 latihan3 Memindahkan file latihan3 ke direktori temp