Berawal ketika grub yang saya pasang di netbook tiba-tiba hilang dan kebingungan gak bisa masuk OS, kemudian saya mencari-cari cara untuk mengembalikannya dan akhirnya grub yang jadi pintu masuk untuk bisa booting ke OS, akhirnya bisa di kembalikan dengan bantuan live USB flash disk untuk masuk ke sistem ubuntu secara live. Dengan beberapa baris perintah yang kita ketikkan di terminal shell linux, GRUB akhirnya bisa kembali lagi, tapi bukan itu yang akan saya sharing disini, tapi saya akan mengutip sebuah tulisan yang membahas tentang shell script, karena seperti kasus saya tentang GRUB yang hilang itu, ternyata proses pengembalian GRUB, (yang hanya sekitar 5 baris script) ataupun proses yang lebih kompleks bisa di otomasikan dengan hanya mengeksekusi sebuah file .sh
Berikut saya kutipkan tulisan tentang shell script yang semoga saja membantu bagi siapa saja yang ingin belajar tentang linux dan khususnya shell script...
1.0 APA ITU SHELL SCRIPT
------------------------
Dalam lingkungan unix, kata 'shell' mengacu pada semua program yang dapat
dijalankan pada command line. Jadi secara sederhana shell script merupakan
kumpulan perintah yang disimpan pada suatu file. Extensi umum yang digunakan
untuk shell script adalah '.sh', sebenarnya hal ini tidak mutlak karena
pada dasarnya unix mengabaikan extensi file.
Shell juga dapat mengacu pada program yang menangani command line itu
sendiri dalam sistem operasi UNIX program tersebut adalah Bourne Shell
(1978 - Steve Bourne) disingkat sh. Dalam sistem operasi GNU/Linux shell yang
menjadi standar adalah Bourne Again Shell(bash). Bash merupakan shell yang
kompatibel dengan sh dan memiliki lebih banyak fitur.
Jika anda ingin menguasai shell script tentu anda harus tahu dan hafal
sedikit banyak perintah dasar command line, seperti mengkopi file(cp),
merename file(mv), mencetak string (echo), melihat file(cat), dan beberapa
perintah dasar lainnya.
Shell script juga menyediakan beberapa fitur yang tersedia pada bahasa
pemrograman tingkat tinggi seperti variabel, percabangan dan perulangan.
Berikut ini adalah contoh sederhana penggunakan shell script:
lug@stikom.edu:~$ nano hello.sh
#!/bin/sh
echo 'HELLO WORLD'
Untuk menjalankan ada dua cara, pertama melalui program shell itu sendiri
lug@stikom.edu:~$ sh hello.sh
Kedua adalah mengeksekusinya secara independen, untuk melakukan hal tersebut
anda harus memberi permission 'execute' pada file.
lug@stikom.edu:~$ chmod +x hello.sh
lug@stikom.edu:~$ ./hello.sh
HELLO WORLD
Baris pertama #!/bin/sh adalah MUTLAK diperlukan dan HARUS diletakkan pada
BARIS PERTAMA agar file yang anda buat dikenali sistem sebagai shell script.
Tanda '#!' sering disebut 'shebang' operator. Tanda tersebut menandakan
bahwa file tersebut adalah shell script. Sisanya misal '/bin/sh' adalah
lokasi file binari atau program. Dalam contoh kita menggunakan program
bash '/bin/sh' atau '/bin/bash'.
Tanda # jika tidak terletak pada baris dan kolom paling awal akan dianggap
sebagai komentar oleh shell.
------------
1.1 Variabel
------------
Pemberian variabel pada shell script bersifat 'dynamic typing' karena
shell script tidak mengenal adanya tipe data. Pada shell script dikenal
dua istilah variabel yaitu SYSTEM VARIABLE(SV) dan USER DEFINED VARIABLE
(UDV). SV adalah kumpulan variabel yang telah dideklarasikan secara otomatis
oleh shell, sedangkan UDV adalah variabel yang kita buat sendiri. Contoh dari
variabel SV adalah HOME, SHELL, RANDOM, OSTYPE, dan masih banyak yang lain.
Dalam membuat variabel ada beberapa aturan yang harus dipenuhi agar variabel
tersebut dianggap valid oleh shell, syntax untuk penamaan variabel adalah:
nama_variabel=NILAI
Perhatikan bahwa tidak ada spasi antara nama_variabel dengan tanda '=' juga
dengan NILAI. Ini adalah suatu KEHARUSAN. Berikut adalah beberapa aturan
tentang penamaan variabel:
1. Variabel HARUS diawali ABJAD atau _ (tidak dapat diawali angka)
2. Variabel dapat terdiri dari karakter alphanumeric dan _
3. Variabel bersifat CaSe SeNsItIvE
4. Jika isi variabel mengandung spasi sebaiknya apit dengan tanda petik (')
atau (").
5. Gunakan escape character (\) untuk karakter non-literal
seperti (\', \$, \?, dll)
Untuk mencetak nilai dari suatu variabel digunakan tanda dollar ($) didepan
nama variabel, contoh:
lug@stikom.edu:~$ a='Hello '
lug@stikom.edu:~$ b='World!'
lug@stikom.edu:~$ echo $a$b
Hello World!
lug@stikom.edu:~$ echo ${a}${b}
Hello World!
Cara yang terakhir adalah cara yang disarankan untuk menghindari kesalahan
dalam melakukan concat string.
Jika anda ingin menyimpan output dari suatu perintah kedalam suatu variabel
gunakan tanda backtick (`). Contoh, kita akan melihat isi direktori home
lalu menyimpannya dalam variabel isi_home.
lug@stikom.edu:~$ isi_home=`ls /home`
lug@stikom.ecu:~$ echo $isi_home
Dalam shel juga terdapat SPECIAL VARIABEL untuk mendapatkan exit status dari
suatu program. Pada UNIX setiap program dinyatakan selesai TANPA error
apabila exit statusnya SAMA DENGAN 0. Selain itu maka program tersebut
selesai tapi dengan error. Variabel tersebut adalah "$?".
lug@stikom.edu:~$ ls /home
lug@stikom.edu:~$ echo $?
0
lug@stikom.edu:~$ ls /file/ngawur
lug@stikom.edu:~$ echo $?
2
Angka 2(TIDAK SAMA DENGAN 0) menunjukkan bahwa program ls keluar dengan
status terjadi error. Penggunaan exit sangat penting saat kita membuat
shell script yang kompleks, dimana didalamnya kita banyak menggunakan
program lain.
------------------------------
1.2 Command Line dan Argument
------------------------------
Ketika berbicara shell script kita pasti berhubungan dengan command line.
Apabila berbicara tentang command line pasti berhubungan dengan argument.
Apaliba berbicara tentang argument.....cukup....cukup.... nanti malah sampai
sejarah kerajaan majapahit nantinya :)
Perintah-perintah command line umumnya memerlukan minimal satu buah argumen
agar dapat mengerjakan tugasnya secara optimal. Apa itu argument? secara
sederhana argumen adalah text/character yang ditempatkan setelah nama program
dengan pemisah minimal satu spasi.
Contoh berikut mengilustrasikan pemberian dua argument pada perinta copy file
`cp`. Perintah cp memerlukan dua argument yaitu 1)lokasi file awal
2)lokasi file tujuan
lug@stikom.edu:~$ cp /foo/bar /tmp/bar
^ ^
argument-1 argument-2
Pada sistem Linux dikenal dua istilah argument short style(UNIX style) dan
long style(GNU Style). Hampir setiap program command line pada linux
menyediakan dua opsi tersebut saat memberikan argument. Penulisan argument
UNIX style biasanya hanya terdiri dari satu huruf contoh '-l' pada perintah
`ls`.
lug@stikom.edu:~$ ls -l
Sedangkan GNU style umumnya terdiri dari minimal sebuah kata contoh
'--all' pada perintah `ls`.
lug@stikom.edu:~$ ls --all
Untuk membaca argument dalam shell script digunakan special variabel yaitu
$0, $1, $2,...$9. Variabel $0 adalah nama program itu sendiri.
CATATAN:
Untuk mengetahui jumlah argument yang diinputkan user gunakan variabel $#,
sedangkan untuk mendapatkan seluruh argument gunakan variabel $*.
LATIHAN:
Buat sebuah shell script untuk menampilkan nama user, nama tersebut
diinput melalui argument ke-1
JAWAB:
lug@stikom.edu:~$ nano nama.sh
#!/bin/sh
nama=$1
echo 'Halo '$nama', selamat datang!'
lug@stikom.edu:~$ chmod +x nama.sh
lug@stikom.edu:~$ ./nama.sh STIKOM
Halo STIKOM, selamat datang!
lug@stikom.edu:~$ ./nama.sh STIKOM SURABAYA
Halo STIKOM, selamat datang!
lug@stikom.edu:~$ ./nama.sh 'STIKOM SURABAYA'
Halo STIKOM SURABAYA, selamat datang!
CATATAN:
Untuk menyimpan file pada nano Tekan CTRL-O lalu jika ingin keluar tekan
CTRL-X.
--------------------------
1.3 Perhitungan Aritmatik
--------------------------
Untuk melakukan perhitungan aritmatik, shell tidak memiliki kemampuan
built-in, tetapi meminta bantuan program lain yaitu `expr`. Program expr
berfungsi untuk mengevaluasi suatu expresi baik itu perbandingan string
atau operasi aritmatik sederhana.
Operator aritmatik yang disediakan expr antaran lain:
+-----------+-----------------------------------------------------------+
| Operator | KETERANGAN |
+-----------+-----------------------------------------------------------+
| + | Operator Penjumlahan contoh: expr 1 + 1 |
+-----------+-----------------------------------------------------------+
| - | Operator Pengurangan contoh: expr 10 - 9 |
+-----------+-----------------------------------------------------------+
| * | Operator Perkalian contoh: expr 10 \* 10 |
+-----------+-----------------------------------------------------------+
| / | Operator Pembagian contoh: expr 10 / 2 |
+-----------+-----------------------------------------------------------+
| % | Operator Modulus contoh: expr 15 % 3 |
+-----------+-----------------------------------------------------------+
Selain digunakan untuk perhitungan aritmatik, perintah `expr` juga cukup
handal untuk melakukan manipulasi string, untuk lebih jelas silahkan lihat
halaman manual dari expr dengan mengetikkan `man expr`.
Berikut saya kutipkan tulisan tentang shell script yang semoga saja membantu bagi siapa saja yang ingin belajar tentang linux dan khususnya shell script...
1.0 APA ITU SHELL SCRIPT
------------------------
Dalam lingkungan unix, kata 'shell' mengacu pada semua program yang dapat
dijalankan pada command line. Jadi secara sederhana shell script merupakan
kumpulan perintah yang disimpan pada suatu file. Extensi umum yang digunakan
untuk shell script adalah '.sh', sebenarnya hal ini tidak mutlak karena
pada dasarnya unix mengabaikan extensi file.
Shell juga dapat mengacu pada program yang menangani command line itu
sendiri dalam sistem operasi UNIX program tersebut adalah Bourne Shell
(1978 - Steve Bourne) disingkat sh. Dalam sistem operasi GNU/Linux shell yang
menjadi standar adalah Bourne Again Shell(bash). Bash merupakan shell yang
kompatibel dengan sh dan memiliki lebih banyak fitur.
Jika anda ingin menguasai shell script tentu anda harus tahu dan hafal
sedikit banyak perintah dasar command line, seperti mengkopi file(cp),
merename file(mv), mencetak string (echo), melihat file(cat), dan beberapa
perintah dasar lainnya.
Shell script juga menyediakan beberapa fitur yang tersedia pada bahasa
pemrograman tingkat tinggi seperti variabel, percabangan dan perulangan.
Berikut ini adalah contoh sederhana penggunakan shell script:
lug@stikom.edu:~$ nano hello.sh
#!/bin/sh
echo 'HELLO WORLD'
Untuk menjalankan ada dua cara, pertama melalui program shell itu sendiri
lug@stikom.edu:~$ sh hello.sh
Kedua adalah mengeksekusinya secara independen, untuk melakukan hal tersebut
anda harus memberi permission 'execute' pada file.
lug@stikom.edu:~$ chmod +x hello.sh
lug@stikom.edu:~$ ./hello.sh
HELLO WORLD
Baris pertama #!/bin/sh adalah MUTLAK diperlukan dan HARUS diletakkan pada
BARIS PERTAMA agar file yang anda buat dikenali sistem sebagai shell script.
Tanda '#!' sering disebut 'shebang' operator. Tanda tersebut menandakan
bahwa file tersebut adalah shell script. Sisanya misal '/bin/sh' adalah
lokasi file binari atau program. Dalam contoh kita menggunakan program
bash '/bin/sh' atau '/bin/bash'.
Tanda # jika tidak terletak pada baris dan kolom paling awal akan dianggap
sebagai komentar oleh shell.
------------
1.1 Variabel
------------
Pemberian variabel pada shell script bersifat 'dynamic typing' karena
shell script tidak mengenal adanya tipe data. Pada shell script dikenal
dua istilah variabel yaitu SYSTEM VARIABLE(SV) dan USER DEFINED VARIABLE
(UDV). SV adalah kumpulan variabel yang telah dideklarasikan secara otomatis
oleh shell, sedangkan UDV adalah variabel yang kita buat sendiri. Contoh dari
variabel SV adalah HOME, SHELL, RANDOM, OSTYPE, dan masih banyak yang lain.
Dalam membuat variabel ada beberapa aturan yang harus dipenuhi agar variabel
tersebut dianggap valid oleh shell, syntax untuk penamaan variabel adalah:
nama_variabel=NILAI
Perhatikan bahwa tidak ada spasi antara nama_variabel dengan tanda '=' juga
dengan NILAI. Ini adalah suatu KEHARUSAN. Berikut adalah beberapa aturan
tentang penamaan variabel:
1. Variabel HARUS diawali ABJAD atau _ (tidak dapat diawali angka)
2. Variabel dapat terdiri dari karakter alphanumeric dan _
3. Variabel bersifat CaSe SeNsItIvE
4. Jika isi variabel mengandung spasi sebaiknya apit dengan tanda petik (')
atau (").
5. Gunakan escape character (\) untuk karakter non-literal
seperti (\', \$, \?, dll)
Untuk mencetak nilai dari suatu variabel digunakan tanda dollar ($) didepan
nama variabel, contoh:
lug@stikom.edu:~$ a='Hello '
lug@stikom.edu:~$ b='World!'
lug@stikom.edu:~$ echo $a$b
Hello World!
lug@stikom.edu:~$ echo ${a}${b}
Hello World!
Cara yang terakhir adalah cara yang disarankan untuk menghindari kesalahan
dalam melakukan concat string.
Jika anda ingin menyimpan output dari suatu perintah kedalam suatu variabel
gunakan tanda backtick (`). Contoh, kita akan melihat isi direktori home
lalu menyimpannya dalam variabel isi_home.
lug@stikom.edu:~$ isi_home=`ls /home`
lug@stikom.ecu:~$ echo $isi_home
Dalam shel juga terdapat SPECIAL VARIABEL untuk mendapatkan exit status dari
suatu program. Pada UNIX setiap program dinyatakan selesai TANPA error
apabila exit statusnya SAMA DENGAN 0. Selain itu maka program tersebut
selesai tapi dengan error. Variabel tersebut adalah "$?".
lug@stikom.edu:~$ ls /home
lug@stikom.edu:~$ echo $?
0
lug@stikom.edu:~$ ls /file/ngawur
lug@stikom.edu:~$ echo $?
2
Angka 2(TIDAK SAMA DENGAN 0) menunjukkan bahwa program ls keluar dengan
status terjadi error. Penggunaan exit sangat penting saat kita membuat
shell script yang kompleks, dimana didalamnya kita banyak menggunakan
program lain.
------------------------------
1.2 Command Line dan Argument
------------------------------
Ketika berbicara shell script kita pasti berhubungan dengan command line.
Apabila berbicara tentang command line pasti berhubungan dengan argument.
Apaliba berbicara tentang argument.....cukup....cukup.... nanti malah sampai
sejarah kerajaan majapahit nantinya :)
Perintah-perintah command line umumnya memerlukan minimal satu buah argumen
agar dapat mengerjakan tugasnya secara optimal. Apa itu argument? secara
sederhana argumen adalah text/character yang ditempatkan setelah nama program
dengan pemisah minimal satu spasi.
Contoh berikut mengilustrasikan pemberian dua argument pada perinta copy file
`cp`. Perintah cp memerlukan dua argument yaitu 1)lokasi file awal
2)lokasi file tujuan
lug@stikom.edu:~$ cp /foo/bar /tmp/bar
^ ^
argument-1 argument-2
Pada sistem Linux dikenal dua istilah argument short style(UNIX style) dan
long style(GNU Style). Hampir setiap program command line pada linux
menyediakan dua opsi tersebut saat memberikan argument. Penulisan argument
UNIX style biasanya hanya terdiri dari satu huruf contoh '-l' pada perintah
`ls`.
lug@stikom.edu:~$ ls -l
Sedangkan GNU style umumnya terdiri dari minimal sebuah kata contoh
'--all' pada perintah `ls`.
lug@stikom.edu:~$ ls --all
Untuk membaca argument dalam shell script digunakan special variabel yaitu
$0, $1, $2,...$9. Variabel $0 adalah nama program itu sendiri.
CATATAN:
Untuk mengetahui jumlah argument yang diinputkan user gunakan variabel $#,
sedangkan untuk mendapatkan seluruh argument gunakan variabel $*.
LATIHAN:
Buat sebuah shell script untuk menampilkan nama user, nama tersebut
diinput melalui argument ke-1
JAWAB:
lug@stikom.edu:~$ nano nama.sh
#!/bin/sh
nama=$1
echo 'Halo '$nama', selamat datang!'
lug@stikom.edu:~$ chmod +x nama.sh
lug@stikom.edu:~$ ./nama.sh STIKOM
Halo STIKOM, selamat datang!
lug@stikom.edu:~$ ./nama.sh STIKOM SURABAYA
Halo STIKOM, selamat datang!
lug@stikom.edu:~$ ./nama.sh 'STIKOM SURABAYA'
Halo STIKOM SURABAYA, selamat datang!
CATATAN:
Untuk menyimpan file pada nano Tekan CTRL-O lalu jika ingin keluar tekan
CTRL-X.
--------------------------
1.3 Perhitungan Aritmatik
--------------------------
Untuk melakukan perhitungan aritmatik, shell tidak memiliki kemampuan
built-in, tetapi meminta bantuan program lain yaitu `expr`. Program expr
berfungsi untuk mengevaluasi suatu expresi baik itu perbandingan string
atau operasi aritmatik sederhana.
Operator aritmatik yang disediakan expr antaran lain:
+-----------+-----------------------------------------------------------+
| Operator | KETERANGAN |
+-----------+-----------------------------------------------------------+
| + | Operator Penjumlahan contoh: expr 1 + 1 |
+-----------+-----------------------------------------------------------+
| - | Operator Pengurangan contoh: expr 10 - 9 |
+-----------+-----------------------------------------------------------+
| * | Operator Perkalian contoh: expr 10 \* 10 |
+-----------+-----------------------------------------------------------+
| / | Operator Pembagian contoh: expr 10 / 2 |
+-----------+-----------------------------------------------------------+
| % | Operator Modulus contoh: expr 15 % 3 |
+-----------+-----------------------------------------------------------+
Selain digunakan untuk perhitungan aritmatik, perintah `expr` juga cukup
handal untuk melakukan manipulasi string, untuk lebih jelas silahkan lihat
halaman manual dari expr dengan mengetikkan `man expr`.