Membuat Program Bash Shel Pada Linux

------------------------
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:
   
   pinguin@HP-Notebook:~$ nano hello.sh
   #!/bin/sh
   echo 'HELLO WORLD'
   
   Untuk menjalankan ada dua cara, pertama melalui program shell itu sendiri
   
   pinguin@HP-Notebook:~$ sh hello.sh
   
   Kedua adalah mengeksekusinya secara independen, untuk melakukan hal tersebut
   anda harus memberi permission 'execute' pada file.
   
   pinguin@HP-Notebook:~$ chmod +x hello.sh
   pinguin@HP-Notebook:~$ ./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:
   
   pinguin@HP-Notebook:~$ a='Hello '
   pinguin@HP-Notebook:~$ b='World!'
   pinguin@HP-Notebook:~$ echo $a$b
   Hello World!
   pinguin@HP-Notebook:~$ 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.
   
   pinguin@HP-Notebook:~$ isi_home=`ls /home`
   pinguin@HP-Notebook:~$ 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 "$?".
   
   pinguin@HP-Notebook:~$ ls /home
   pinguin@HP-Notebook:~$ echo $?
   0
   pinguin@HP-Notebook:~$ ls /file/ngawur
   pinguin@HP-Notebook:~$ 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
   
   pinguin@HP-Notebook:~$ 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`. 
   
   pinguin@HP-Notebook:~$ ls -l
   
   Sedangkan GNU style umumnya terdiri dari minimal sebuah kata contoh
   '--all' pada perintah `ls`.
   
   pinguin@HP-Notebook:~$ 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:
   pinguin@HP-Notebook:~$ nano nama.sh
   #!/bin/sh
   nama=$1
   echo 'Halo '$nama', selamat datang!'
   
   pinguin@HP-Notebook:~$ chmod +x nama.sh
   pinguin@HP-Notebook:~$ ./nama.sh STMIK
   Halo STMIK, selamat datang!
   pinguin@HP-Notebook:~$ ./nama.sh STMIK NH Jambi
   Halo STMIK, selamat datang!
   pinguin@HP-Notebook:~$ ./nama.sh 'STMIK NH Jambi'
   Halo STMIK NH Jambi, 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`.
   
   LATIHAN:
   Buatlah sebuah shell script untuk menghitung nilai dari argument-1 dikali
   argument-2 ditambah argument-3!
   
   JAWABAN:
   Secara matematis perhitungannya adalah 
   
   (argument-1 + argument-2) + argument-3. 
   
   Tidak seperti bahasa tingkat tinggi, pada shell script untuk memberi 
   prioritas pada suatu perhitungan kita menggunakan tanda $[ ... ]. Jadi 
   perhitungannya menjadi
   
   $[ argument-1 + argument-3 ] + argument-3
   
   Keuntungan lain ketika kita menggunakan tanda $[...] adalah kita tidak perlu
   melakukan escaping character pada tanda perkalian(*). Berikut ini adalah 
   shell scriptnya.
   
   pinguin@HP-Notebook:~$ nano hitung.sh
   #!/bin/sh

   bil1=$1
   bil2=$2
   bil3=$3

   echo -n "HASIL DARI $bil1 * $bil2 + $bil3 = "
   echo `expr $[ $bil1 * $bil2 ] + $bil3`
   pinguin@HP-Notebook:~$ chmod +x hitung.sh
   pinguin@HP-Notebook:~$ ./hitung.sh 10 10 10
   HASIL DARI 10 * 10 + 10 = 110
   
---------------
1.4 User Input
---------------
   Selain melalui argument pada command line, cara lain untuk mendapatkan input
   dari user adalah melalui STANDARD INPUT (STDIN). Dimana user langsung 
   mengetikkan isi dari suatu nilai yang program inginkan.
   
   Untuk mendapatkan input dari user dapat digunakan perintah `read`. Perintah
   read tidak begitu berguna jika kita tidak menyimpan hasil inputan tersebut
   kedalam sebuah variabel. Untuk menyimpan hasil inputan kita harus memberi
   satu argument pada perintah read. Argument inilah yang akan menyimpan nilai
   yang diinputkan. Contoh,
   
   pinguin@HP-Notebook:~$ read a
   10
   pinguin@HP-Notebook:~$ read b
   5
   pinguin@HP-Notebook:~$ expr $a \* $b
   50
   
   LATIHAN:
   Sama dengan latihan sebelumnya, hanya saja kali ini gunakan perintah read
   untuk membaca setiap bilangan yang diinputkan user.
   
   JAWABAN:
   pinguin@HP-Notebook:~$ nano hitung2.sh
   #!/bin/sh

   # deklarasikan variabel dengan nilai NULL
   bil1=
   bil2=
   bil3=

   echo -n 'Masukkan bilangan-1: '
   read bil1
   echo -n 'Masukkan bilangan-2: '
   read bil2
   echo -n 'Masukkan bilangan-3: '
   read bil3

   echo ''
   echo -n "Hasil dari $bil1 * $bil2 + $bil3 = "
   echo `expr $[ $bil1 * $bil2 ] + $bil3`
   pinguin@HP-Notebook:~$ chmod +x hitung2.sh
   pinguin@HP-Notebook:~$ ./hitung2
   Masukkan bilangan-1: 10
   Masukkan bilangan-2: 10
   Masukkan bilangan-3: 10

   Hasil dari 10 * 10 + 10 = 110
   
----------   
1.5 Piping
----------
   Piping merupakan penggabungan dua atau lebih perintah dimana output dari
   perintah sebelumnya digunakan sebagai input untuk perintah selanjutnya. 
   Simbol yang digunakan untuk membatasi perintah yang satu dengan yang lain
   adalah tanda pipe "|". Berikut adalah beberapa contoh sederhana penggunaan
   piping pada command line.
   
   pinguin@HP-Notebook:~$ cat /etc/passwd | wc -l
   pinguin@HP-Notebook:~$ cat /etc/passwd | sort -r
   pinguin@HP-Notebook:~$ cat /etc/passwd | grep "/bin/sh/" | wc -l

---------------
1.6 Redirection
---------------
   Secara umum jika kita ingin mengambil inputan maka kita mengambil dari
   STANDARD INPUT (STDIN) yaitu keyboard. Sedangkan hasil output program yang
   tercetak di layar monitor kita disebut STANDARD OUTPUT (STDOUT). Hampir sama 
   dengan STDOUT, error yang dihasilkan program juga ditampilkan lewat monitor 
   biasa disebut STANDARD ERROR (STDERR). Setiap standard mempunyai kode file 
   descriptor sendiri-sendiri diantaranya:
   
   - STDIN => File Descriptor: 0
   - STDOUT => File Descriptor: 1
   - STDERR => File Descriptor: 2
   
   Dengan mengetahui file descriptor tersebut kita dapat melakukan redirection
   (pengalihan), misal dari dari STDOUT menjadi STDERR atau sebaliknya. 
   Terdapat tiga simbol untuk melakukan redirection diantarnya:
   
   1.
   Simbol: ">"
   Keterangan: Simbol tersebut akan meredirect output ke dalam suatu file. Jika
               file tersebut belum ada maka akan buat secara otomatis, jika 
               file sudah ada ada maka isinya akan di-overwrite/ditimpa.
   
   2.
   Simbol: ">>"
   Keterangan: Hampir sama dengan ">" hanya saja jika file sudah ada, maka file
               isi tersebut tidak dioverwrite tetapi ditambah.
   
   3.
   Simbol: "<"
   Keterangan: Simbol "<" artinya input tidak diambil dari STDIN melainkan dari
               sebuah file.
   
   Sebagai contoh sederhana, ketika anda mengetikkan perintah `ls /nama/dir`
   maka secara default program ls akan menampilkan output ke STDOUT yaitu
   layar monitor. Jika kita ingin meredirect output yang dihasilkan kedalam
   sebuah file maka kita dapat menggunakan simbol ">" atau ">>". Intinya segala
   STDOUT dapat dilakukan redirect.
   
   pinguin@HP-Notebook:~$ echo 'DAFTAR ISI FOLDER LUG' > /tmp/data.txt
   pinguin@HP-Notebook:~$ ls /home/lugstikom >> /tmp/data.txt
   
   Untuk contoh "<" kita akan menggunakan program tr, program ini dapat kita
   gunakan untuk manipulasi teks. Input yang akan kita berikan ke tr adalah
   dari sebuah file, nantinya teks yang ada pada file tersebut akan di-UPPER
   CASE semua.
   
   pinguin@HP-Notebook:~$ echo 'stmik nh jambi' > /tmp/stmik.txt
   pinguin@HP-Notebook:~$ tr "[a-z]" "[A-Z]" < /tmp/stmik.txt
   STMIK NH Jambi
   
   Selain meredirect ke file kita juga dapat melakukan redirect ke file 
   descriptor lain. Misal dari STDOUT ke STDERR atau sebaliknya.
   
   pinguin@HP-Notebook:~$ rm /file/ngawur 2>&1
   pinguin@HP-Notebook:~$ ls / 1>&2
   
-----------
1.7 FUNGSI
-----------
   Hampir sama dengan bahasa pemrograman tingkat tinggi, pada shell script juga
   dikenal istilah fungsi. Dimana dengan adanya fungsi kita dapat membagi
   kode kita ke dalam sub-sub yang lebih kecil. Hal ini sangat berguna jika kita
   membangun sebuah program shell script yang cukup kompleks. Syntax penggunaan
   fungsi pada shell script adalah:
   
   function nama-fungsi() 
   {
      perintah
      ...
      ...
      return
   }

   LATIHAN:
   Buatlah shell script untuk mencetak banner seperti output berikut:
   
   pinguin@HP-Notebook:~$ ./fungsi.sh
   ==============================
    SELAMAT DATANG DI LUG-STMIK
   ==============================
   HARI INI: Rabu, 14-05-2008
   
   Tulisan "SELAMAT blabla..." diletakkan dalam fungsi tersendiri, begitu pula
   fungsi untuk mencetak tanggal. Fungsi mencetak tanggal nantinya akan 
   dipanggil didalam fungsi yang mencetak tulisan "SELAMAT...".
   
   JAWAB:
   pinguin@HP-Notebook:~$ nano fungsi.sh
   #!/bin/sh

   function indo_date() {
           echo `date +"%A, %d-%m-%Y"`
           return
   }

   function welcome() {
           echo "=============================="
           echo " SELAMAT DATANG DI LUG-STMIK"
           echo "=============================="
           echo -n "HARI INI: "
           indo_date
           return
   }

   welcome
   pinguin@HP-Notebook:~$ chmod +x fungsi.sh
   
   Apakah fungsi pada shell script juga menerima parameter? YA tapi dengan 
   sedikit "nyeleneh". Kenapa? jika pada bahasa pemrograman umumnya parameter
   diletakkan diantara tanda (), tidak demikian dengan shell script. Cara 
   pengambilan parameter pada shell script sama dengan pengambilan argument
   pada program shell script itu sendiri. Jadi kita dapat menggunakan variabel
   $*, $#, $0, $1, dan seterusnya.
   
   Dibawah ini adalah contoh pembuatan fungsi untuk mengubah text menjadi
   UPPER-CASE.
   
   pinguin@HP-Notebook:~$ nano fungsi2.sh
   #!/bin/sh
   function toUpperCase() {
           teks=$*
           echo $teks | tr "[a-z]" "[A-Z]"
           return
   }

   echo -n "Masukkan teks(lowercase): "
   read foo
   toUpperCase $foo
   pinguin@HP-Notebook:~$ chmod +x fungsi2.sh
   pinguin@HP-Notebook:~$ ./fungsi2.sh
   Masukkan teks(lowercase): ini lower case
   INI LOWER CASE

   Pada contoh diatas kita menggunakan variabel $* untuk mengambil parameter 
   bukan $1 atau $2 dkk karena yang akan diinputkan user kemungkinan mengandung 
   dua kata atau lebih. Jadi jika kita menggunakan variabel $1 maka yang terbaca 
   hanya kata pertama. Untuk itu kita gunakan variabel $* yang akan membaca 
   semua parameter.
   

---------------
2.0 Percabangan
---------------
   Dengan menggunakan percabangan/branching maka kita dapat mengontrol alur 
   dari shell script yang kita buat. Hal ini memungkinkan kita untuk menulis 
   program yang sangat kompleks pada shell script. Syntax penggunaan percabangan 
   pada shell script adalah:
   
   if kondisi
   then
      ...
      ...
   fi
   -----------
   if kondisi
   then
      ...
      ...
   else
      ...
      ...
   fi
   -----------
   if kondisi1
   then
      ...
      ...
   elif kondisi1
      ...
      ...
   elif kondisi-n
      ...
      ...
   else
      ...
      ...
   fi
   --------------
   case $variabel in
      pattern1) perintah
               ...
               perintah;;
      pattern1) perintah
               ...
               perintah;;
      *) perintah
         ...
         perintah;;
   esac
   
   Untuk melakukan perbandingan kondisi pada data kita dapat menggunakan
   perintah `test`(man test) atau meletakkannya dalam blok [ ].
   
   Berikut ini adalah operator yang dapat digunakan untuk membandingkan data
   NUMERIK:
   
   +------------+-----------------------------------+
   | OPERATOR   | KETERANGAN                        |
   +------------+-----------------------------------+
   |    -eq     | SAMA DENGAN (=)                   |
   +------------+-----------------------------------+
   |    -ne     | TIDAK SAMA DENGAN (!=)            |
   +------------+-----------------------------------+
   |    -gt     | LEBIH BESAR (>)                   |
   +------------+-----------------------------------+
   |    -ge     | LEBIH BESAR ATAU SAMA DENGAN (>=) |
   +------------+-----------------------------------+
   |    -lt     | KURANG DARI (<)                   |
   +------------+-----------------------------------+
   |    -le     | KURANG DARI ATAU SAMA DENGAN (<=) |
   +------------+-----------------------------------+
   
-------------------
2.1 if...then...fi
------------------
   
   pinguin@HP-Notebook:~$ nano if-then-fi.sh
   #!/bin/sh
   
   num_arg=$#
   bil1=$1
   bil2=$2

   function help() {
	   echo 'Penggunaan: '
	   echo "$0 bil1 bil2"
	   echo ''
	   echo Dimana bil1 dan bil2 harus angka genap.
	   return
   }

   function cek_arg() {
	   if test $num_arg -lt 2 
	   then
		   help
		   exit 1	# keluar dengan exit status 1
	   fi
	
	   if [ `expr $bil1 % 2` -ne 0 ] ; then
		   help
		   exit 1
	   fi
	
	   if [ `expr $bil2 % 2` -ne 0 ] 
	   then
		   help
		   exit 1
	   fi
	   return
   }

   cek_arg
   echo 'Argument anda adalah '$bil1' dan '$bil2
   exit 0
   pinguin@HP-Notebook:~$ chmod +x if-then-fi.sh
   pinguin@HP-Notebook:~$ ./if-then-fi.sh 
   Penggunaan: 
   ./if-then-fi.sh bil1 bil2

   Dimana bil1 dan bil2 harus angka genap.
   pinguin@HP-Notebook:~$ echo $?
   1
   pinguin@HP-Notebook:~$ ./if-then-fi.sh 2 4
   Argument anda adalah 2 dan 4
   pinguin@HP-Notebook:~$ echo $?
   0
   
   Perintah exit pada shell script dapat digunakan untuk keluar langsung dari
   program. Pada contoh diatas, jika terdapat kesalahan kita keluar dengan exit
   status 1( bukan 0 ) artinya program selesai tapi dengan error. Error status
   tidak harus 1 tapi bisa sembarang angka asal BUKAN 0.

-------------------------
2.2 if...then...else...fi
-------------------------
   Statement pada blok else akan dieksekusi jika kondisi pada pada blok if
   bernilai false.
   
   pinguin@HP-Notebook:~$ nano if-else.sh
   #!/bin/sh
   
   if test $1 -ge 0
   then
      echo "Argument bernilai positif"
   else
      echo "Argument bernilai negatif"
   fi
   pinguin@HP-Notebook:~$ chmod +x if-else.sh
   pinguin@HP-Notebook:~$ ./if-else 10
   Argument bernilai positif
   pinguin@HP-Notebook:~$ ./if-else -2
   Argument bernilai negatif

--------------------------------
2.3 if...then...elif...else...fi
--------------------------------
   Statement elif digunakan jika kita ingin memilih lebih dari dua kondisi.
   
   pinguin@HP-Notebook:~$ nano if-elif.sh
   #!/bin/sh
   pilih=
   teks="Sistem operasi pilihan anda adalah "

   echo "Pilih Sistem Operasi Anda: "
   echo "1. Linux"
   echo "2. Mac OS"
   echo "3. FreeBSD"
   echo "4. Lainnya"
   echo ""

   echo -n "Masukkan pilihan: "
   read pilih

   if [ $pilih = "1" ] ; then
	   echo "${teks}Linux"
   elif [ $pilih = "2" ] ; then
	   echo "${teks}Mac OS"
   elif [ $pilih = "3" ] ; then
	   echo "${teks}FreeBSD"
   else
	   echo "Anda memilih sistem operasi lain"
   fi
   pinguin@HP-Notebook:~$ chmod +x if-elif.sh
   pinguin@HP-Notebook:~$ ./if-elif.sh
   Pilih Sistem Operasi Anda: 
   1. Linux
   2. Mac OS
   3. FreeBSD
   4. Lainnya

   Masukkan pilihan: 3
   Sistem operasi pilihan anda adalah FreeBSD

-------------
2.5 Nested If
-------------
   Pada shell script anda juga dapat meletakkan blok if didalam if atau istilah
   "kerennya" nested if. Berikut adalah contoh sederhana penggunaannya.
   
   pinguin@HP-Notebook:~$ nano nested-if.sh
   #!/bin/bash

   bil=$1
   if [ `expr $bil % 2` -eq 0 ] ; then
	   if [ $bil -ge 0 ] ; then
		   echo "Angka yang anda masukkan genap dan >= 0"
	   else
		   echo "Angka yang anda masukkan genap dan < 0"
	   fi
   else
	   if [ $bil -ge 0 ] ; then
		   echo "Angka yang anda masukkan ganjil dan >= 0"
	   else
		   echo "Angka yang anda masukkan ganjil dan < 0"
	   fi
   fi
   pinguin@HP-Notebook:~$ sh nested-if.sh 10
   Angka yang anda masukkan genap dan >= 0
   pinguin@HP-Notebook:~$ sh nested-if.sh -5
   Angka yang anda masukkan ganjil dan < 0

--------------------
2.6 case...in...esac
--------------------
   Perintah case hampir sama dengan if-then-elif-else-fi karena dapat memilih
   dari banyak kondisi. Sebagian orang lebih suka menggunakan case...esac
   dibanding multi level-if karena lebih mudah dibaca.

   Pada contoh dibawah ini adalah modifikasi dari contoh if-then-elif-else-fi
   yang pernah dibahas sebelumnya menggunakan case...in...esac.
   
   pinguin@HP-Notebook:~$ nano case.sh
   #!/bin/sh
   pilih=
   teks="Sistem operasi pilihan anda adalah "

   echo "Pilih Sistem Operasi Anda: "
   echo "1. Linux"
   echo "2. Mac OS"
   echo "3. FreeBSD"
   echo "4. Lainnya"
   echo ""

   echo -n "Masukkan pilihan: "
   read pilih

   case $pilih in
	   "1") echo "${teks}Linux";;
	   "2") echo "${teks}Mac OS";;
	   "3") echo "${teks}FreeBSD";;
	   *)	echo "Anda memilih sistem operasi lain";;
   esac
   pinguin@HP-Notebook:~$ sh case.sh
   Pilih Sistem Operasi Anda: 
   1. Linux
   2. Mac OS
   3. FreeBSD
   4. Lainnya

   Masukkan pilihan: 1
   Sistem operasi pilihan anda adalah Linux

--------------------------
2.7 Menangkap Error Status
--------------------------
   Seperti yang pernah dijelaskan sebelumnya bahwa untuk melihat error status
   dari suatu perintah kita gunakan special variable "$?". Error status ini 
   dapat kita gunakan untuk melihat apakah perintah yang kita jalankan berjalan
   tanpa error atau tidak. Error status terdiri dari dua flag yaitu:
   
   +-----------+-----------------+
   | NO. ERROR | STATUS PROGRAM  |
   +-----------+-----------------+
   |     0     | OK              |
   +-----------+-----------------+
   |    !=0    | TERJADI ERROR   |
   +-----------+-----------------+
   
   NOTE: != artinya TIDAK SAMA DENGAN
   
   Setelah anda mengetahui bagaimana menggunakan percabangan pada shell script
   maka kita dapat menggunakanya untuk menangkap error status yang dihasilkan
   oleh suatu program.
   
   pinguin@HP-Notebook:~$ nano error-status.sh
   #!/bin/sh

   perintah=`rm /file/ngawur 2>/dev/null`
   if [ $? -eq 0 ] ; then
	   echo "PERINTAH SUKSES, EXIT STATUS: $?"
   else
	   echo "PERINTAH GAGAL, EXIT STATUS: $?"
   fi

   ls / 1>/dev/null
   if [ $? -eq 0 ] ; then
	   echo "PERINTAH SUKSES, EXIT STATUS: $?"
   else
	   echo "PERINTAH SUKSES, EXIT STATUS: $?"
   fi
   lug@stikom.edu:~$ sh error-status.sh
   PERINTAH GAGAL, EXIT STATUS: 1
   PERINTAH SUKSES, EXIT STATUS: 0
   
   Pada contoh diatas STDERR dan STDOUT semuanya di-redirect ke /dev/null. Hal 
   ini agar output perintah rm dan ls tidak muncul dilayar. /dev/null adalah
   semacam file "blackhole" yang dapat kita gunakan untuk mengririm semua output 
   yang tidak kita inginkan.
   
   CATATAN:
   Variabel $? hanya berisi error status dari perintah yang TERAKHIR KALI 
   dijalankan.


----------------------------------
3.0 Perulangan dalam Shell Script
----------------------------------
   Perbedaan utama kita, manusia dengan komputer adalah jika kita melakukan
   suatu pekerjaan berulang-ulang maka rasa bosan pasti datang. Tidak demikian
   dengan komputer, komputer melakukan hal-hal yang sama sebanyak 1 juta kali
   pun dia akan dengan "senang hati" melakukannya.
   
   Perulangan atau looping adalah pengeksekusian suatu blok perintah selama
   kondisi yang digunakan masih bernilai TRUE. Saya yakin anda pernah disuruh
   orang tua anda waktu kecil untuk berhitung 1 - 10. Dimana jika sudah melebihi 
   10 anda harus berhenti berhitung karena kondisi meminta anda untuk berhenti 
   pada saat mencapai sepuluh.
   
   Analogi sederhana diatas dapat menggambarkan bagaimana suatu looping bekerja.
   Dalam shell script terdapat dua tipe perulangan yaitu:
   
   - for loop
     - for...do...done
     - for...in...do...done
   - while loop
   
   Umumnnya perulangan `for` digunakan apabila kita sudah tahu batas perulangan 
   yang akan kita lakukan. Syntax penulisannya adalah:
   
   for nama_variabel in list
   do
      ...
      ...
   done
   -------------------------
   for (( expr1; expr2; expr3 ))
   do
      ...
      ...
   done

-------------------
3.1 for...do...done
-------------------
   Berikut adalah contoh untuk penggunaan for...do...done.
   
   pinguin@HP-Notebook:~$ nano for.sh
   #!/bin/sh
   
   for (( i=0; i<=5; i++ ))
   do
      echo "PENALTI KE-$i GOL"!!!
   done
   pinguin@HP-Notebook:~$ sh for.sh
   PENALTI KE-1 GOL!!!
   PENALTI KE-2 GOL!!!
   PENALTI KE-3 GOL!!!
   PENALTI KE-4 GOL!!!
   PENALTI KE-5 GOL!!!

------------------------
3.2 for...in...do...done
------------------------
   Pada for-in terdapat perbedaan cara penggunaan, pada for-in kita melakukan
   perulangan berdasarkan data yang ada pada list. Dimana setiap list dipisahkan 
   oleh tanda spasi. Berikut adalah contohnya:
   
   pinguin@HP-Notebook:~$ nano for-in.sh
   #!/bin/sh

   for i in 1 2 3 4 5 ; do
	   echo -n "$i "
   done
   echo ''
   for abjad in "A B C D E" ; do
	   echo -n "$abjad "
   done
   echo ''
   pinguin@HP-Notebook:~$ sh for-in.sh
   1 2 3 4 5
   A B C D E

---------------------
3.3 while...do...done
---------------------
   Bentuk perulangan lain yang juga sering digunakan adalah while. Perulangan
   menggunakan while lebih difokuskan jika kita memang belum mengetahui batas
   perulangan yang dilakukan. Syntax penggunaan while adalah sebagai berikut:
   
   while [ kondisi ]
   do
      ...
      ...
   done

   Berikut adalah contoh penggunaannya:
   
   pinguin@HP-Notebook:~$ nano while.sh
   #!/bin/sh

   i=5
   while [ $i -ge 1 ] 
   do
	   echo "$i Mod 2 = "`expr $i % 2`
      i=`expr $i - 1`
   done
   pinguin@HP-Notebook:~$ sh while.sh
   5 Mod 2 = 1
   4 Mod 2 = 0
   3 Mod 2 = 1
   2 Mod 2 = 0
   1 Mod 2 = 1

-------------------------
3.4 Percabangan Bersarang
-------------------------
   Suatu percabangan dapat berisi perbacabangan yang lain misalnya for didalam
   for atau while didalam while atau kombinasi keduanya. Nah bentuk inilah yang
   dinamakan percabangan bersarang(nested loop). Jumlah banyaknya nested loop
   dapat dikatakan tidak terbatas. 
   
   Anda sebagai pemrogram bebas dapat memasukkan
   sebanyak mungkin percabangan bersarang, tapi tentu dengan berbagai 
   pertimbangan teknis. Umumnya maksimal perbacangan bersarang yang sering 
   penulis gunakan adalah tiga, namun pada beberapa kondisi bisa lebih dari itu.
   Jadi itu semua relatif terhadap anda sebagai pemrogram dan kondisi yang 
   anda hadapi.
   
   Contoh berikut menunjukkan percabangan bersarang menggunakan for dengan 
   kedalaman dua level.
   
   pinguin@HP-Notebook:~$ nano nested-for.sh
   #!/bin/sh

   for (( i=1; i<=5; i++ ))
   do
      for (( j=1; j<=5; j++ ))
      do
         echo -n "$i "
      done
      echo ""
   done
   pinguin@HP-Notebook:~$ sh nested-for.sh
   1 1 1 1 1 
   2 2 2 2 2 
   3 3 3 3 3 
   4 4 4 4 4 
   5 5 5 5 5

Membuat contoh kasus kalkulator sederhana menggunakan Bash Shell.
dengan kasus :
Bilangan Pertama =
Bilangan Kedua =
Operator =
buka terminal atau tekan ctrl + alt + T.
pinguin@HP-Notebook:~$ nano calc.sh
maka akan keluar command edit pada terminal linux, masukan script berikut pada command terminal.
! /bin/bash
 echo "----Calc----"
 echo -n "Bilangan 1 : "
 read bil1
 echo -n "Bilangan 2 : "
 read bil2
 echo -n "Operator : "
 read op
 if [ $op = + ]
  then
  echo "$bil1 $op $bil2 = expr $bil1 + $bil2"
 elif [ $op = - ]
  then
  echo "$bil1 $op $bil2 = expr $bil1 - $bil2"
 elif [ $op = / ]
  then
  echo "$bil1 $op $bil2 = expr $bil1 / $bil2"
 elif [ $op = x ]
  then
  echo "$bil1 $op $bil2 = expr $bil1 \* $bil2"
 fi

kemudian ctrl + x
tekan Y
dan enter...

untuk menjalankannya anda ketikan
pinguin@HP-Notebook:~$ chmod +x nano calc.sh
pinguin@HP-Notebook:~$ ./calc.sh



sekian dan terima kasih,
download link disini
https://drive.google.com/open?id=1jl6nUCAooeAbmFY_S7WNlHdGCIPh15dp
---------
REFERENSI
---------
http://www.freeos.com/guides/lsst/
http://en.wikipedia.org/wiki/Shell_script
http://ilmukomputer.com/2007/03/06/membaca-proses-dengan-shell-script/

Perintah Dasar Linux

Perintah Dasar
Shell merupakan antar muka antara user dengan kernel. Tugas
utama shell adalah menerima perintah dari user kemudian
mengirimkan kepada kernel untuk dieksekusi. Sebagai tempat di
mana user dapat memberikan perintah, shell akan memberikan
sebuah prompt. Prompt shell juga sering digunakan untuk
membedakan super user (root) dengan user biasa (ordinary user).
Bentuk dari prompt shell pada bourne again shell yang akan kita
gunakan adalah sebagai berikut:

pinguin@HP_Notebook:~$
Keterangannya:
pinguin : nama user yang sedang menggunakan shell
HP_Notebook : nama host
$ : prompt untuk menandakan user biasa, jika mengunakan super user akan berbentuk #.

Option merupakan pilihan yang dapat digunakan untuk memberikan
hasil tertentu dari suatu perintah.

Argument merupakan sesuatu yang akan diproses oleh perintah,
misalnya nama file atau nama direktori. Penjelasan masing-masing
perintah akan dipersingkat saja, untuk mengetahui lebih detail lagi
fungsi-fungsi suatu perintah, dapat digunakan perintah man.
Beberapa perintah dasar yang biasa digunakan adalah:

How to Install CentOS 7 Step by Step with Screenshots

CentOS (Community Enterprise Operating System) is forked from RedHat Linux, a Linux Distro fine-tuned for servers. Finally, the much awaited CentOS 7 is out.

Step 1: Download The ISO Image

To get a copy of CentOS 7 download from its source mirror. CentOS 7 is now shipping for 64 bit platforms, and currently there is no 32 bit ISO image. This is primarily due to the fact that most servers in production are 64 bit.

Step 2: Make A bootable Drive

After you have downloaded the ISO image, make a bootable USB drive. Since Centos 6.5, you can create usb drive bootable by simply transferring iso file to usb using dd command. As we found Unetbootin no longer works for CentOS 7.

# dd if=/iso/CentOS-7-x86_64-DVD-1602-99.iso of=/dev/sdb

* /dev/sdb is the usb device and make sure you have atleast 4.3 GB space.

Step 3: Begin Installation

Desktop Install to Hard Drive

To begin installation, click on the Install to Hard Drive icon on the desktop.

Step 4: Select Language And Keyboard

Select your preferred language as well as the Keyboard type you have. Take care not forget to choose the correct keyboard or else you will end up with a few scrambled keys.

Select Language

Step 5: Change The Installation Destination

By default the Anaconda installer will choose automatic partitioning for your hard disk. Click on the Installation Destination icon to change this to custom partitioning.

Automatic Partitioning
Configure Partitioning

Click on the hard drive you want to install CentOS 7 and under the Other Storage Options, choose I will configure partitioning then click Done.

Step 6: Select The Partitioning Scheme

Next select the partitioning scheme to use for the mount points. In this case choose Standard Partition.

Select Partitioning Scheme

Step 7: Create A Swap Space

Create Swap Space

You can create a swap space from one of the partitions and set the desired capacity, which is dependent on the RAM you have. Choose the File System for swap space as swap, and click on Reformat, though reformatting is optional. You can also name your swap space to whatever name you like but a name like swap is more descriptive.

Step 8: Create A Mount Point

The next step is to create a mount point where the root partition will be installed. Depending on your requirements you might need to put the boot, home and root partition on different mount points. For this case we shall have only one mount point /.

After this set the Label and Desired Capacity to whatever you wish. A rule of thumb is to use descriptive names for the Label especially if the computer is to be used by different system administrators.

Choose the file system as ext4 and click on reformat.

Create a Mount Point

Step 9: Accept Changes

Accept Changes

After completing Step 7 and Step 8 successfully click on Done button. A prompt window will appear with a summary of changes that will take place. If you are satisfied with them click Accept changes.

Step 10: Set Date And Time

Set Date and Time

Click on the clock icon under the localization menu and select a time zone from the map of the world, then click Done.

Step 11: Begin Installation

Begin Installation

Now after configuring the System and Localization settings you can click on the Begin Installation button.

configuration during installation

Installation will begin immediately and as it proceeds you need to set up a User account as well as the root password.

Step 12: Set Up Root Password

Click on the root password option and enter a password and confirmation of the same then click Done.

Set Up Root Password

Step 13: Create a User Account

Create a User Account

The next step is to create a user account. Enter the correct details and if this is the administrator account, tick Make this user administrator and Require a password to use this account for security purposes.

Step 14: Complete Installation

Installing Bootloader

The installer should complete installing the software and the bootloader. Have a look on how to Set Linux Grub Password with Examples.

Once complete you should get a success message, after which you can click quit.
Logout from the Live system and login to your new installation.

Complete Installation

Finally once you login to your CentOS 7 accept the EULA agreement and enjoy!

New Features in CentOS 7

The following are some of the notable feature in CentOS 7:

Gnome 3 Desktop Environment

CentOS 7 comes with Gnome 3 which is very convenient when you have a touch screen.

gnome 3 Desktop

It also comes with Gnome Classic for those that want the look and feel of Gnome 2.

gnome classic

CentOS 7 comes with GRUB 2 which solves dual booting problems with other Linux distros that have been using GRUB 2, like Ubuntu. This is an improvement from CentOS 6.5 which used GRUB Legacy and was a problem when dual booting. Now you can do your installation without concerns of GRUB issues.

CentOS 7 has support for the xfs file system which is suitable especially in a distributed type of environment. XFS is known for its ability to handle parallel I/O compared to ext4.

CentOS 7 will also be shipping with MariaDB, a replacement for MySQL.

Conclusion

CentOS 7 has greatly improved from version 6.5 and now is easier to adopt it as a Desktop OS compared to its predecessor. For those that probably cannot keep up with Fedora releases every 6 months, CentOS 7 is a good consideration. Try it out today!

Ubuntu 18.04 LTS Desktop Installation Guide

Good News for Ubuntu fans ,after all the wait canonical has released its latest and stable version of Ubuntu 18.04 LTS on 26th April 2018. Code name for this release is “Bionic Beaver” and it has come up with various interesting features. In this article, we will be looking about how to install Ubuntu 18.04 LTS in a desktop with screenshots.

Ubuntu 18.04 LTS – New Features:

Ubuntu 18.04 LTS has been released with a lot of new features and improvements, some of the important features are listed below:

  • Support and Updates of Ubuntu 18.04 LTS for next 5 Years (April 2023)
  • New latest and stable Linux Kernel version 4.15
  • Installer offer a new option of “minimal Installation”
  • Updated LibreOffice 6.0
  • The Bionic Beaver supports attractive and beautiful color emojis
  • 18.04 LTS also comes with a new Suru icon theme that will make your desktop much more colorful
  • Updated GNOME (3.28) desktop environment
  •  XORG is the new default display server and replaces Wayland
  • Fast and improved boot speed
  •  Along with other major improvements and bug fixes

Minimum System Requirement for Ubuntu 18.04 LTS (Desktop)

  • 2 GB RAM
  • Dual Core Processor (2 GH)
  • 25 GB free Hard disk space
  • Installer Media (DVD or USB)
  • (optional) Internet Connectivity if you are planning to download third party software and updates during the installation

Step-by-Step Guide to Install Ubuntu 18.04 LTS on your Laptop or Desktop

Step 1)   Download Ubuntu 18.04 LTS ISO File

Please make sure you have the latest version of Ubuntu 18.04 LTS, If not, please download the ISO file from the link here

https://www.ubuntu.com/download/desktop

Since Ubuntu 18.04 LTS only comes in a 64-bit edition, so you can install it on a system that supports 64-bit architecture.

Step 2) Create a Bootable Disk

Once the ISO file is downloaded then next step is to burn the downloaded ISO image into the USB/DVD or flash drive to boot the computer from that drive.

Also make sure you change the boot sequence so that system boots using the bootable CD/DVD or flash drive.

Step 3) Boot from USB/DVD or Flash Drive

Once the system is booted using the bootable disk, you can see the following screen presented before you with options including “Try Ubuntu” and “Install Ubuntu” as shown in the image below,

Install-Ubuntu18-04-option

Even though when you click “Try Ubuntu” you can have a sneak peek into the 18.04 LTS without installing it in your system, our goal here is to install Ubuntu 18.04 LTS in your system. So click “Install Ubuntu” to continue with the installation process.

Step 4) Choose your Keyboard layout

Choose your favorite keyboard layout and click “Continue”. By default English (US) keyboard is selected and if you want to change, you can change here and click “Continue”,

Keyboard-Layout-Ubuntu18-04

Step 5) Preparing to Install Ubuntu and other Software

In the next screen, you’ll be provided following beneath options including:

  • Type of Installation: Normal Installation or Minimal installation, If you want a minimal installation then select second option otherwise go for the Normal Installation. In my case I am doing Normal Installation
  • Download Updates While Installing Ubuntu (select this option if your system has internet connectivity during installation)
  • Install third party software for graphics and Wi-Fi hardware, MP3 and additional media formats  Select this option if your system has internet connectivity)
Update-other-Software-Ubuntu18-04

click on “Continue” to proceed with installation

Step 6) Select the appropriate Installation Type

Next the installer presents you with the following installation options including:

  • Erase Disk and Install Ubuntu
  • Encrypt the new Ubuntu installation for security
  • Use LVM with the new Ubuntu installation
  • Something Else

Where,

Erase Disk and Install Ubuntu – Choose this option if your system is going to have only Ubuntu and erasing anything other than that is not a problem. This ensures a fresh copy of Ubuntu 18.04 LTS is installed in your system.

Encrypt the new Ubuntu installation for security – Choose this option if you are looking for extended security for your disks as your disks will be completely encrypted. If you are beginner, then it is better not to worry about this option.

Use LVM with the new Ubuntu installation – Choose this option if you want to use LVM based file systems.

Something Else – Choose this option if you are advanced user and you want to manually create your own partitions and want to install Ubuntu along with existing OS (May be Windows or other Linux Flavor)

In this article, we will be creating our custom partitions on a hard disk of 40 GB and the following partitions are to be created:

  •     /boot           1 GB (ext4 files system)
  •     /home         18 GB (ext4 file system)
  •     /                  12 GB (ext4 file system)
  •     /var             6 GB (ext4 file system)
  •     Swap          2 GB
Installation-type-Ubuntu18-04

Now, Choose “Something Else” and Click on continue

You can see the available disk size for Ubuntu in the next window as shown below:

Now in order to create your own partitions, click on “New Partition Table

create-new-partitiontable-ubuntu18-04
create-empty-partition-table-ubuntu18-04

Click on Continue

Create /boot partition of size 1GB, Select the free space and then Click on the “+” symbol to create a new partition

create-boot-partition-ubuntu18-04

Click on “OK”

Let’s create /home partition of size 18 GB,

create-home-partition-ubuntu18-04

In the same way create / & /var file system of size 12 GB & 6 GB respectively

create-slash-root-partition-ubuntu18-04
Create-var-partition-ubuntu18-04

Now create last partition as swap of size 2 GB,

Create-Swap-Partition-Ubuntu18-04

Click on OK

Once you are done with the partition creation task , then click  on “Install Now” option to proceed with the installation

Install-Now-Option-Ubuntu18-04
Write-Changes-disk-ubuntu18-04

Now click on “Continue” to write all the changes to the disks

Step 7) Select Your Time zone

Choose your favorite time zone and then click on “Continue”

Step 8) Provide your User Credentials

In the next screen you will be prompted to provide your user credentials. In this screen provide your name, computer name, username and the password to login into Ubuntu 18.04 LTS

Click “Continue” to begin the installation process.

Step 9) Start Installing Ubuntu 18.04 LTS

The installation of Ubuntu 18.04 LTS starts now and will take around 5-10 mins depending on the speed of your computer,

Step 10) Restart Your System

Once the installation is completed, remove the USB/DVD from the drive and Click “Restart Now” to restart your system.

Restart-after-ubuntu18-04-installation

Step:11) Login to Your Ubuntu 18.04 desktop

Once your system has been rebooted after the installation then you will get the beneath login screen, enter the User name and password that you have set during installation (Step 8)

And that concludes our step by step installation guide for Ubuntu 18.04 LTS and it’s all up to you now to explore the exciting features of Ubuntu 18.04 LTS and have fun 

How to Install Wine 4.0 on Ubuntu 18.04 & 16.04 LTS

Wine 4.0 Stable Released. Wine team has announced the latest stable release 4.0.1 on May 15, 2019. Its source code is available for download from its official site. You may also use the package manager to install wine. Wine is an Open Source implementation of the Windows API and will always be free software. Approximately half of the source code is written by its volunteers, and remaining effort sponsored by commercial interests, especially CodeWeavers.

winehq_logo_glass

This article will help you to install Wine 4.0 Stable Release on Ubuntu 18.10, 18.04 LTS & 16.04 LTS systems using the apt-get package manager.

Step 1 – Setup PPA

First of all, If you are running with 64-bit system enable 32-bit architecture. Also, install the key which was used to sign packages of wine.

sudo dpkg --add-architecture i386
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -

Use one of the following commands to enable Wine apt repository in your system based on your operating system and version.

###  Ubuntu 19.04 
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ disco main'

###  Ubuntu 18.04 
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

###  Ubuntu 16.04 
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'

Step 2 – Install Wine on Ubuntu

Use below commands to install Wine packages from the apt repository. The –install-recommends option will install all the recommended packages by winehq stable versions on your Ubuntu system.

sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

If you face unmet dependencies error during installation, use the following commands to install winehq using aptitude.

sudo apt-get install aptitude
sudo aptitude install winehq-stable

Step 3 – Check Wine Version

Wine installation successfully completed. Use the following command to check the version of wine installed on your system.

wine --version

wine-4.0.1

How to Use Wine (Optional)?

To use wine we need to login to the GUI desktop of your Ubuntu system. After that Download a windows .exe file like PuTTY on your system and open it with Wine as below screenshot or use following command.

wine putty.exe

You can also launch by right click on the application and click Open With Wine Windows Program as shown in below screenshot.

Install Wine on Ubuntu


Mengenal Distro Linux Dan Turunannya

Mengenal Macam-Macam Distro Linux dan Turunannya – Distro? apaan tuh? yang jual baju itu ya? ckkkkkk….bukan bro… di Linux, Distro Linux itu singkatan dari Distribusi Linux, adalah sebutan untuk sistem operasi komputer dan aplikasinya, merupakan keluarga Unix yang menggunakan kernel Linux.
Distribusi Linux bisa berupa perangkat lunak bebas dan bisa juga berupa perangkat lunak komersial seperti Red Hat Enterprise, SuSE, dan lain-lain.

Ada banyak distribusi atau distro Linux yang telah muncul. Beberapa bertahan dan besar, bahkan sampai menghasilkan distro turunan, contohnya Distro Debian GNU/Linux. Distro ini telah menghasilkan puluhan distro anak, antara lain Ubuntu, Knoppix, Xandros, DSL, dan sebagainya.

Beberapa Contoh Distro Linux

1. Ubuntu

Ubuntu merupakan distro Linux yang paling populer diantara distro-distro lainnya. Sifatnya yang stabil serta user friendly membuatnya sangat diminati oleh publik. Ubuntu juga merupakan distro Linux yang paling cocok bagi pengguna awam yang baru belajar menggunakan Linux, karena memang distro inilah yang paling gampang pengoperasiannya. Dukungan komunitas yang besar membuat anda tidak akan pernah kehabisan tempat untuk bertanya.

2. Opensuse
Opensuse pertama kali dipublikasikan pada tahun 1992 oleh 4 orang maniak Linux berkebangsaan jerman. Project mereka diberikan nama SUSE yang merupakan kepanjangan dari (Software und System Entwicklung). Edisi yang tersedia saat ini adalah openSuse dan Suse Linux Enterprise.

3. Fedora

Fedora pertama kali dirilis pada tahun 1995, dikembangkan oleh 2 orang yang bernama Bob Young dan Marc Ewing dibawah nama perusahaan Red Hat Linux. Walaupun dirilis sudah sejak lama namun fedora baru mulai populer pada tahun 2004. Edisi yang tersedia dari distro ini adalah fedora dan Red Hat enterprise.

4. Debian
Debian GNU Linux pertama kali di publikasikan 1993. Pembuatnya adalah Ian Murdock. Debian GNU Linux merupakan sebuah project non-komersil yang dikembangkan secara bersama-sama oleh ratusan programmer diwaktu senggang mereka. Debian tumbuh menjadi distro yang besar dan populer, memiliki komunitas yang besar, serta menelurkan berbagai macam distro-distro turunan.

5. Mandriva
Mandriva linux pertama kali diluncurkan pada tahun 1998 oleh Gael Duval dibawah nama Mandrake Linux. Pada awalnya mandriva merupakan hasil olahan dari Red Hat dengan berbagai sentuhan tambahan, namun lambat laun mandriva memiliki fungsi-fungsi sendiri yang membuatnya lebih user friendly.

6. LinuxMint
LinuxMint yang merupakan distro berbasis ubuntu, pertama kali diluncurkan pada tahun 2006 oleh seorang kelahiran perancis yang bernama Clement Lefebvre.

7. PclinuxOS
Pertama kali diluncurkan pada tahun 2005 oleh Bill Reynolds atau lebih dikenal dengan julukan “texstar”. Sebelum Bill Reynolds menciptakan PclinuxOS, ternyata texstar adalah salah satu developer yang cukup terkenal dari Mandrake Linux. Edisi yang tersedia adalah MiniMe, Junior and BigDaddy.

8. Slackware
Distro yang diciptakan oleh Patrick Volkerding pada tahun 1992 ini, merupakan salah satu distro Linux lawas yang berhasil bertahan hingga kini dan bahkan menjadi salah satu distro yang paling populer.

9. Gentoo Linux
Gento disusun pada tahun 2000 oleh Daniel Robbins. Ide dasar dari distro ini adalah mengizinkan user untuk meng-compile sendiri source code dari Linux ataupun aplikasi program ke sistem milik mereka. Sebenarnya distro yang satu ini diperuntukkan bagi user-user level lanjut dengan jam terbang yang sudah tinggi.

10. Centos
Centos pertama kali dipublikasikan pada tahun 2003. Centos merupakan hasil re-build source code RedHat Enterprise Linux oleh sebuah komunitas. Tujuan distro ini adalah untuk menciptakan sebuah distro yang menyediakan update secara cepat.

Dan masih banyak lagi distro-distro yang lainnya seperti Sabily yang diperuntukkan bagi user muslim dan distro-distro lokal seperti Garuda OS.

Oke sekarang kita lanjut turunan dari distro distro linux

Distribusi bebas berbasis Debian

  • 64Studio
  • Adamantix
  • Amber Linux
  • BeatrIX
  • Bonzai Linux
  • Debian
  • Debian-BR-CDD
  • DeveLinux
  • Dreamlinux
  • Elive
  • Finnix
  • GenieOS
  • Gnoppix
  • gOS linux
  • Guadalinex
  • Hiweed
  • Kalango
  • Kanotix
  • Knoppix
  • Kuliax (sebuah distro Linux yang dikembangkan Indonesia)
  • Kurumin
  • LinEx
  • Loco Linux
  • MeNTOPPIX
  • Morphix
  • NepaLinux
  • PingOO
  • Skolelinux
  • Sun Wah RAYS LX
  • Symphony OS
  • Ubuntu
  • Gethux Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • BlankOn Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • Dewalinux (sebuah distro Linux yang dikembangkan Indonesia)
  • linux mint
  • Briker (sebuah distro Linux yang dikembangkan Indonesia)
  • Edubuntu
  • Kubuntu
  • Xubuntu
  • De2
  • Xandros
  • Zen Linux

Distribusi berbasiskan RPM

  • aLinux
  • ALT Linux
  • Annvix
  • Ark Linux
  • ASPLinux
  • Aurox
  • Berry Linux
  • BLAG Linux and GNU
  • BlankOn versi pertama (sebuah distro Linux yang dikembangkan Indonesia)
  • Caixa Mágica
  • cAos Linux
  • CentOS
  • Cobind
  • Conectiva
  • EduLinux
  • Engarde Secure Linux
  • Fox Linux
  • IGOS Nusantara (sebuah distro linux yang dikembangkan Indonesia)
  • Linux Mobile System
  • Magic Linux
  • Mandriva Linux (dahulu bernama Mandrake Linux)
  • NOPPENLINUX
  • PCLinuxOS
  • PCQLinux2005
  • PLD Linux Distribution
  • QiLinux
  • Red Hat Linux:
  • Fedora Core
  • Red Flag Linux
  • Scientific Linux
  • Vine Linux
  • White Box Enterprise Linux
  • Yellow Dog Linux
  • Sesco Linux
  • SUSE Linux
  • Tinfoil Hat Linux
  • Trustix
  • Ulteo
  • YOPER (“Your Operating System”)

Distribusi bebas berbasis Slackware

  • AliXe
  • Austrumi
  • BackTrack
  • Bluewhite64 Linux
  • CD Forum Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • College Linux
  • Cytrun Linux
  • DARKSTAR
  • DeepStyle
  • easys GNU/Linux
  • Frugalware
  • Hardened Linux
  • Kate OS
  • MooLux
  • Plamo Linux
  • SLAX
  • Sauver
  • Singkong Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • Slackintosh
  • Slackware
  • Slamd64
  • Splack Linux
  • targeT Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • Topologi Linux
  • Truva Linux
  • Ultima Linux
  • Vector Linux
  • Wolvix
  • 0x7F GNU/Linux
  • ZenCafe Linux (sebuah distro Linux yang dikembangkan Indonesia)
  • Zenwalk Linux (dulu MiniSlack)

Distribusi bebas berbasis lainnya

Distribusi ini menggunakan sistem manajemen paket sendiri atau gabungan, dan adayang tidak menggunakan manajemen paket.

  • Arch Linux (dengan sistem manajemen paket Pacman)
  • Coyote Linux (distro Router/firewall)
  • CRUX (menggunakan manajemen paket berbasis tar.gz yang sederhana, BSD-style initscripts)
  • DD-WRT (embedded firewall)
  • DeLi Linux (kombinasi Slackware dan CRUX)
  • Devil-Linux (distro firewall/router/server)
  • DSLinux (Linux untuk Nintendo DS)
  • dyne:bolic (instalasi software baru cukup dengan menyalin [copy] ke direktori tertentu)
  • Familiar Linux (distro untuk iPAQ handhelds)
  • Fli4l (distro yang muat dalam satu floppy disk)
  • Foresight Linux (menggunakan sistem manajemen paket Conary)
  • FREESCO (router)
  • GeeXboX (media center)
  • GoboLinux (manajemen paket sendiri yang menggunakan symlink)
  • Hikarunix (distro khusus untuk main Go)
  • IPCop (distro Router/firewall)
  • iPodLinux (linux untuk Apple iPod berbasis µCLinux kernel)
  • Jlime (distro untuk HP Jornada 6xx dan 7xx dan NEC MobilePro 900(c) handhelds)
  • Lunar Linux (distro berbasis source code)
  • MCC Interim Linux (mungkin ini distro Linux pertama; dibuat oleh Manchester Computing Centre di bulan February 1992)
  • MkLinux (distro untuk PowerPC, menjalankan Linux kernel sebagai server di atas Mach microkernel)
  • Mobilinux (buatan Montavista untuk smartphones)
  • MontaVista Linux (embedded systems distro buatan MontaVista Software)
  • NASLite (distro floppy-disk untuk menjalankan perangkat Network Attached Storage / NAS)
  • Nitix (autonomic server buatan Net Integration Technologies Inc.)
  • OpenWrt (embedded firewall)
  • Pardus (buatan Turki; menggunakan sistem manajemen paket PISI, dan COMAR configuration framework)
  • PS2 Linux (distro Sony Computer Entertainment unuk PlayStation 2 video game console)
  • Puppy Linux (sistem manajemen paket PetGet dan DotPup; tapi mulai versi 3 juga bisa menggunakan paket Slackware)
  • Rocks Cluster Distribution (untuk computer cluster = gabungan beberapa komputer menjadi satu super komputer)
  • rPath (menggunakan sistem manajemen paket Conary)
  • Sentry Firewall (firewall, server sistem)
  • SliTaz GNU/Linux
  • Smallfoot
  • SmoothWall (router/firewall)
  • Softlanding Linux System (salah satu distro tertua, dibangun tahun 1992-1994; basis awal Slackware)
  • Sorcerer (berbasis source code)
  • Source Mage GNU/Linux (berbasis source code)
  • Tinfoil Hat Linux (distro floppy-disk)
  • tomsrtbt (root boot disk)


Distribusi Linux terjadi dikarenakan adanya berbagai keperluan, tentunya disesuaikan dengan Perkembangan Hardware dan Tingkat keperluan penggunanya.
Terima kasih sudah berkunjung dan ditunggu kunjungan selanjutnya.