Sabtu, 26 September 2015

Bash



Halo, pada kesempatan kali ini saya akan membahas tentang bash scripting dan juga mencoba menyelesaikan beberapa soal agar bisa lebih terbiasa dan tahu tentang aplikasi dari bash scripting itu sendiri. Selamat membaca J
Bash scripting merupakan salah satu jenis pemrograman yang bisa kita lakukan di linux. Selain bash, ada juga jenis pemrograman lain seperti C shell, Korn shell, dll. Bash shell menjadi salah satu opsi yang banyak digunakan oleh kebanyakan orang karena lebih mudah untuk digunakan. Pada bash scripting, yang paling pertama dilakukan setelah kita membuat file baru adalah menyertakan satu sintaks yang menjadi penanda bahwa kita akan membuat shell bertipe bash dengan cara menuliskan:

#!/bin/bash

di baris pertama. Nah untuk mempelajari bash shell lebih jelas, kita dapat menggunakan contoh soal yang sudah saya sediakan.

Mari kita lihat soal – soalnya

Untuk soal pertama kita harus membuat sebuah program yang dapat menampilkan angka – angka prima yang ada hingga batas tertentu. Ketika program dijalankan, kita harus memberikan input yang merupakan batas yang saya sebutkan sebelumnya. Saya telah melakukan penyelesaian untuk masalah ini, ini lah salah satu solusinya:


Pertama – tama, saya membuat array dan mengisinya dengan angka 0. Angka 0 ini akan kita jadikan sebagai penanda bahwa bilangan indeksnya adalah bilangan prima atau bukan. – le pada codingan diatas berarti less than equal to. Jadi jika indeksnya kurang dari 1, maka akan diberi angka 1 dan lainnya diisi dengan angka 0.


Setelah mengisi semua array dengan angka 0, kita mulai menandai kembali mana yang bilangan prima dan mana yang bukan. Caranya adalah dengan mengkalikan indeks dari counter dengan 2. Misalnya pada awalnya, counter berada di angka 2. Lalu, angka 2 ini kita kalikan dengan 2 sehingga menghasilkan angka 4. Berarti bias dipastikan bahwa angka 4 bukan lah bilangan prima karena angka 4 memiliki faktor selain 1 dan angka 4 itu sendiri yaitu angka 2. Sama halnya ketika counter berada di angka 3, maka angka 3 kita kalikan dengan 2 sehingga menghasilkan angka 6. Maka angka 6 bukan bilangan prima. Dan seterusnya ini dilakukan hingga batas yang telah kita inputkan di awal program. Setiap kali counter dikalikan 2, maka isi dari indeks angka tersebut kita ganti dengan angka 1. Misalnya ketika tadi kita mendapatkan hasil dari sebuah perkalian adalah 4, maka angka 0 yang ada di indeks 4 kita ganti dengan angka 1. Dengan seperti ini, kita telah menandai bahwa indeks tersebut bukanlah bilangan prima.

Lalu diakhir program kita tinggal menampilkan angka dari indeks yang memiliki isi 0 karena sebelumnya kita sudah merubah angka 0 pada indeks yang bukan bilangan prima dengan angka 1. Mudah kan? Ini lah hasilnya ketika program dijalankan


Ok, lanjut ke nomor berikutnya.
Di nomor 2 sampai 4, kita diperintahkan untung mendownload sebuah file yang berisikan jadwal minum obat dari sebuah rumah sakit. Yang dari data tersebut akan kita olah hingga kita mendapatkan keterangan berapa obat yang telah pasien – pasien di rumah sakit tersbut minum lalu mengarsipkannya ke dalam bentuk tar.gz. Mari kita mulai.


Pertama – tama, kita mulai dengan membuat variabel untung menyimpan tanggal, bulan, dan tahun ketika kita mendownload file tersebut yang dalam kasus ini adalah variabel x. Kita juga membuat variabel untuk menyimpan jam, menit, detik ketika kita mendownload file tersebut yang dalam kasus ini adalah variabel y. Setelah itu, kita mendownload file tersebut dari alamat yang sudah ada dengan perintah “wget”. Lalu kita merename file yang kita download dengan jam, menit, detik menggunakan perintah “mv” seperti pada baris ke – 4. Setelah itu kita membuat folder baru dengan nama tanggal_bulan_tahun dengan menggunakan perintah “mkdir” seperti pada baris ke – 5. Dan yang terakhir kita pindahkan file yang telah kita download dan rename tadi ke dalam folder yang baru kita buat dengan perintah “mv” seperti pada baris ke – 6.


Langkah berikutnya adalah dengan membuat array dengan nama pasien dan kita isi dengan nama – nama pasien tersebut. Misalnya pada soal ini nama pasiennya adalah A, B, C, D, dst. Lalu disana saya membuat variabel b sebagai counter. Setelah itu kita masuk ke dalam looping. Loop ini berfungsi untuk membaca per baris dari isi file tersebut lalu menyimpannya di variabel line. Di dalam loop ini, pertama saya membuat variabel obat sebagai variabel untuk mengetahui berapa obat yang telah diminum oleh pasien yang ada. Jika kita buka file yang telah kita download sebelumnya, maka akan berisi jam:menit:detik dari jadwal minum obat seorang pasien. Misal:

08:16:40
15:01:32
23:00:13
dst

Nah dalam kasus ini, kita hanya memerlukan jamnya saja sehingga menit dan detiknya bisa kita hiraukan. Karena seperti di dalam soal, seorang pasien minum obat setiap 3 jam sekali, maka kita hanya akan berurusan dengan jamnya saja. Tapi karena isi file tersebut berupa string, maka kita harus mengambil 2 angka pertamanya saja lalu merubahnya menjadi tipe data integer sehingga bisa kita kalkulasikan. Semua itu saya lakukan secara bersamaan dalam satu baris yaitu di baris ke – 6 dan 7. Di baris ke – 6 saya mengambil 2 angka pertama dalam string tersebut. ${line:0:2} berarti saya akan mengambil 2 angka ke kanan dimulai dari indeks ke – 0. Jadi bila kita aplikasikan pada jam 08:16:40, maka nanti hanya akan terambil angka 08. Setelah itu di baris ke – 7, saya melakukan operasi matematis menggunakan perintah “let”. Disitu ada tulisan #0. Tulisan itu digunakan untuk merubah string yang telah kita ambil tadi menjadi integer sehingga bisa kita kalkulasikan pada rumus yang ada. Namun disitu ada satu kondisi bila jamnya kurang dari 3, maka hasilnya bisa jadi minus. Maka dari itu saya menambahkan satu if ke dalam looping saya. Lalu, kita menampilkan jam:menit:detik tadi beserta keterangan berapa obat yang telah diminum si pasien ke dalam file baru yaitu JadwalBaru.txt. Dan di akhir loop, kita menambahkan counternya.

Setelah semuanya selesai, maka kita sampai ke tahao akhir yaitu pengarsipan. Untuk membuat file arsip, kita menggunakan perintah “tar”. Lalu –czvf adalah sebuah perintah dalam library tar yang memiliki fungsinya masing – masing.
c = membuat file arsip baru
z = membuatnya dalam bentuk zip .gz
v = menampilkan pada terminal file – file apa saja yang masuk ke dalam file arsip yang kita buat
f = dapat mengakses file arsip
lalu disebelah perintah – perintah tersebut kita mengetik nama file arsip beserta alamat arsip yang akan kita buat. Langkah terakhir adalah dengan membuat file baru yang berisikan waktu kita mengarsipkannya kedalam file bernama logC08.txt. Voila, jadilah arsipan baru kita yuhuuuuuuuuu~

Nah kita telah membahas soal – soal yang ada mulai dari nomor 1 sampai 4. Bagaimana? Semoga pembahasan yang saya lakukan bisa membantu dalam memahami lagi tentang soal – soal yang ada. Bila ada kritik atau saran bisa mengkomentari tentang postingan saya ini, supaya kedepannya bisa membuat yang lebih baik lagi. Terima kasih, have a nice day ;)











Tidak ada komentar:

Posting Komentar