Sunday, September 27, 2015

First Post : Tutorial Menampilkan Bilangan Prima dan Memindahkannya Dalam File menggunakan Bash Script

Ya Halooo....!!

First Post dalam blog ini adalah tutorial menampilkan bilangan prima dan mengisinya dalam sebuah file txt menggunakan bash script. Kenapa bilangan prima yang dipilih?
Pertama, karena dalam membuat sebuah script, dasar yang dibutuhkan adalah menampilkan sesuatu (echo), if statement, perulangan, dan juga sedikit aritmatika.
Kedua, karena bilangan prima adalah contoh sederhana yang mudah dipahami hehe..

Sebelum membahas soal scriptnya, mari kita pahami sedikit tentang bash command untuk linux.

Apa itu bash command?
Bash command adalah perintah-perintah yang digunakan di terminal (seperti command prompt pada windows) untuk mengatur file, waktu, user, sistem operasi, dan lain-lain pada sistem operasi linux. Bash command inilah yang nanti akan digunakan dalam menjalankan sebuah script.

Contoh bash command :
1. ls : menampilkan informasi tentang file dalam sebuah direktori
2. pwd : Print Working Directory, menampilkan direktori saat ini
3. mkdir : membuat folder baru
4. chmod : mengubah izin akses dari file dan direktori
5. chown : mengganti kepemilikan file user dan grup
6. chroot : mengganti direktori root
7. sudo : mengubah identitas user
8. grep : mencari file untuk baris yang sesuai dengan pola yang diberikan
9. ps : Process status
10. halt : menghentikan dan restart OS
11. cd :  Change Directory, mengubah folder yang bekerja
12. rm : menghapus file
13. mv : memindahkan atau rename file atau direktori
14. date : menampilkan atau mengubah tanggal dan waktu
15. free : menampilkan pemakaian memori
16. whoami : menampilkan id user dan nama yang bekerja
17. which : menampilkan lokasi program file dalam path user
18. touch : membuat sebuah file kosong

Setelah mengetahui bash command, mari kita mulai membahas tentang shell script...

Shell script adalah beberapa perintah yang ditulis dengan plain text file untuk mengotomasi perintah - perintah yang sudah biasa kita gunakan sehingga kita
tidak perlu menuliskan setiap kali dengan cara yang berulang dan lengkap, tapi cukup dengan fungsi yang telah kita buat.
Shell script dapat berupa bash script, c shell script, korn shell script dan lain-lain.

Sekarang untuk membuat script bilangan prima, kita perlu mengetahui tentang cara menampilkan sesuatu (echo), kondisi if, dan perulangan.

Echo
Echo adalah perintah untuk menampilkan sesuatu
Contoh :
 echo 10
Maka terminal akan menampilkan output :
10

Untuk dapat menulisnya dalam sebuah file, maka setelah echo ditambahkan “> (nama file)” atau “>> (nama file)”
> (nama file) : untuk meng-overwrite file dan menggantinya dengan yang baru
>> (nama file) : untuk meng-update isi dari file
Contoh :

                    echo 10 >> angka.txt

Maka output akan tertulis dalam file angka.txt :
10

If statement
If statement adalah suatu perintah penyeleksian kondisi, contohnya jika … maka …
Sintaks dari if statement dalam bash script adalah

if [kondisi]
then
fi

Dalam if statement, untuk menyeleksi suatu kondisi maka diperlukan suatu perbandingan dengan beberapa command berikut :

-eq : sama dengan (“==”)
-ne : tidak sama dengan (“!=”)
-lt : lebih kecil dari (“<”)
-le : lebih kecil atau sama dengan (“<=”)
-gt : lebih besar dari (“>”)
-ge : lebih besar atau sama dengan (“>=”)

Contoh if statement :

if [ 1 –lt 10 ]
then
          echo “angka 1 lebih kecil dari 10”
fi

Outputnya adalah :
angka 1 lebih kecil dari 10

Selain if, ada juga if – else. If – else adalah suatu penyeleksian kondisi dan jika kondisi tersebut tidak terpenuhi maka akan menjalankan else nya.
Sintaks dari if-else

if [kondisi]
then
          …
else
          …
fi

Contoh if – else  :

if  [11 –lt 10]
then
          echo “angka 11 lebih kecil dari 10”
else
          echo “angka 11 lebih besar dari 10”

fi

output :
angka 11 lebih besar dari 10

Perulangan
Dalam bash script terdapat beberapa statement perulangan yaitu perulangan for, while dan until.

Perulangan for
Perulangan for adalah perulangan untuk melakukan sesuatu dalam kondisi tertentu.
Sintaksnya adalah :

for (nama variabel) in (kata);
do
          …
Done

Contoh :

for i in seq 1 5;
do
          echo i
done

 output :
1
2
3
4
5

Penjelasan : seq adalah perintah untuk menjalankan deretan angka dari angka pertama hingga angka kedua. Jadi seq 1 5 dapat diganti dengan 1 2 3 4 5.

Perulangan while
While adalah perintah yg digunakan untuk mengulangi sesuatu selama kondisi tersebut memenuhi.
Sintaksnya adalah
while [kondisi];
do
          …
Done
Contoh :

i=1
while [$i –lt 5];
do
          echo i
          i=$i+1
done

output :
1
2
3
4

Perulangan until
Until adalah kebalikan dari while, perintah ini akan menjalankan sesuatu selama kondisi tersebut salah. Sintaksnya mirip dengan while, hanya merubah kata while menjadi until.
Contoh :

i=1
until [$i –gt 5];
do
          echo i
          i=$i+1
done

output :
1
2
3
4
5

Input
Setelah mengetahui echo, if, dan perulangan, kita perlu mengetahui cara menginputkan sesuatu kedalam program. Ada beberapa cara menginputkan sesuatu kedalam program. Yang akan dibahas dalam post ini adalah cara menginputkan menggunakan parameter dan read.
Input menggunakan parameter
Input menggunakan parameter yaitu memasukan input setelah menuliskan nama script.
Sintaksnya :

          ./(nama script) (parameter1) (parameter2) (…);

Contoh menggunakan 1 parameter :

./namascript.sh 5

Output :

5
Keterangan :
Dalam script namascript.sh perintah yang digunakan adalah :

echo $1

yaitu perintah menampilkan sesuatu dalam parameter1.
Contoh menggunakan 2 atau lebih parameter :

./namascript2.sh 5 7 9

Output :

Parameter 1: 5
Parameter 2 : 7
Parameter 3 : 9

Keterangan :
Dalam script namascript2.sh perintah yang digunakan adalah :

echo Parameter 1 : $1
echo Parameter 2 : $2
echo Parameter 3 : $3

Input menggunakan read
Read adalah perintah untuk menginputkan saat program meminta input
Sintaksnya
read (variabel)
contoh:

read a

echo inputnya adalah $a

input : 5

output :

inputnya adalah 5

Setelah memahami hal-hal diatas, mari kita mulai membahas script bilangan prima yaitu menuliskan bilangan prima dari 2 hingga angka yang kita inputkan.
Pertama, untuk memulai sebuah bash script perlu diawali dengan :

#!/bin/bash

Setelah itu, mari kita mengawali script tersebut dengan menginisialisasi input dari parameter 1 dengan:

          input=$1

Setelah memeberi input pada program, mari kita membuat file txt untuk menyimpan hasil output dari program kita dengan command touch sebagai berikut:

          touch prima.txt

Setelah memberi input dan membuat file, mari kita mulai dengan perulangan untuk menentukan angka yang akan dicetak adalah prima atau bukan dengan variabel i:

          for i in `seq 2 $input`;
do
                    ….
done

Perintah for ini akan mengawali pengecekan angka dari angka 2 hingga angka yang kita inputkan dalam parameter 1.
Kenapa memulai dari 2?
Karena pastilah kita sudah dajarkan pada sekolah dasar angka prima awal adalah 2 bukan 0 atau 1.

Setelah itu, mari kita isi … dengan beberapa perintah…
Sebelum memulai perhitungan mari kita memberi penanda terlebih dahulu. Penanda ini berguna untuk menandai apakah angka yang akan dicetak itu prima atau bukan. Kita akan memberi penanda dengan variabel “divisible” yang nantinya diisi angka 0 atau 1 dimana 0 adalah angka tersebut prima alias tidak habis dibagi selain dengan angka 1 atau angka tersebut sendiri, dan 1 menandakan angka tersebut bukan prima alias habis dibagi angka diantara 1 hingga angka tersebut. Sebelum itu, mari kita inisialisasi divisible dengan 0 :

          divisible=0

setelah itu mari kita membuat perulangan untuk mengetes bilangan tersebut prima atau bukan mulai dari angka 2 sampai angka yang akan dicetak (i) dengan variabel pembaginya adalah j:

for j in `seq 2 $i`;
do
                    …
done

Dalam … yang ke-2 kita awali dengan memberi if statement jika sudah sampai angka i maka keluar dari perulangan dengan perintah if dan break :

          if [ $i -eq $j ];
          then
                    break
          fi

perintah break adalah perintah untuk keluar dari loop(perulangan) sebelumnya.
Setelah itu, kita memulai penentuan untuk bilangan prima dengan menentukan i habis dibagi dengan j atau tidak seperti yang dijelaskan sebelumnya dengan menggunakan penanda divisible. Cara menentukan habis dibagi adalah menggunakan modulus yaitu “%” jika hasil modulus adalah 0 maka habis dibagi. Jadi scriptnya adalah :

          if [ $(( i%j )) -eq 0 ];
          then
                    divisible=1
                    break          
fi

jika angka yang akan dicetak (i) habis dibagi dengan angka diantara 1 dan i, maka penanda akan berubah menjadi 1 menandakan angka tersebut bukan prima.
Setelah selesai dengan perulangan untuk mengecek bilangan tersebut prima atau bukan, maka kita akan mencetak bilangan prima tersebut dengan menggunakan if statement, echo, dan “>>”.

If statement berguna untuk melihat kondisi penanda (divisible)  adalah 0 atau bukan. Jika divisible adalah 0 maka bilangan tersebut adalah prima.

Echo berguna untuk mencetak bilangan prima tersebut.

“>” digunakan untuk meng-overwrite isi dari file .txt dan mencetak bilangan prima pertama yaitu 2

“>>” berguna untuk mencetak bilangan prima dalam file yang sudah dibuat sebelumnya (prima.txt) .

Kita akan menuliskan script dibawah ini setelah perintah done pada for yang ke-2.

          if [ $divisible -eq 0 ];
          then
                    if [$i –eq 2];
                    then
                              echo $i >prima.txt;
                    else
                              echo $i >>prima.txt
                    fi
          fi

inilah akhir dari … dari for yang pertama. Maka semuanya selesai dan diakhiri dengan done.

Berikut ini adalah contoh script lengkapnya :

#!/bin/bash
input=$1
touch prima.txt
for i in `seq 2 $input`;
do
          divisible=0
          for j in `seq 2 $i`;
          do
                    if [ $i -eq $j ];
                    then
                              break
                    fi
                    if [ $(( i%j )) -eq 0 ];
                    then
                              divisible=1
                    break
                    fi
          done
          if [ $divisible -eq 0 ];
          then
                    if [$i –eq 2];
                    then
                              echo $i >prima.txt;
                    else
                              echo $i >>prima.txt
                    fi
          fi
done

setelah menulis script, mari kita simpan script tersebut dengan ekstensi .sh contoh nama script adalah prime.sh dalam sebuah folder (contoh desktop).
Setelah menyimpan script, mari kita masuk ke terminal untuk menjalankan script tersebut. Kita mulai dengan masuk ke folder dimana script itu disimpan (desktop) dengan bantuan command pwd, cd namafolder dan ls (untuk melihat file dalam folder).
Setelah sampai pada folder tersebut, kita mulai dengan mengubah permission file tersebut agar dapat dieksekusi dengan command :

chmod +x prime.sh.

Lalu setelah mengubah permission, kita jalankan script tersebut dengan menuliskan :

          ./prime.sh (input)

Setelah kita jalankan script tersebut, kita akan mendapat sebuah output berupa file prima.txt yang berisikan hasil bilangan prima yang dicetak. Ada tidaknya file output ini dapat dicek melalui command ls atau langsung melihat dalam folder dimana kita menyimpan script tersebut. File prima.txt dapat dibuka menggunakan text editor atau menggunakan command nano prima.txt .

Contoh input :10

 ./prime.sh 10

Output dalam file prima.txt:
2
3
5
7

Sekian post kali ini, semoga bermanfaat J See you next time!!