SHELL SCRIPT


Nama                    : Fransisca Sinaga
NIM                      : 201431129
KELAS                 : B
MATA KULIAH : PERANGKAT LUNAK JARINGAN DASAR

SHELL SCRIPT PERANGKAT LUNAK JARINGAN

Shell script adalah suatu file yang berisi perintah perintah yang harus dikerjakan oleh shell. Perintah dalam suatu script bisa berupa perintah yang dapat diberikan dari prompt atau perintah kendali alir( Flow Control Command). Perintah kendali alir adalah perintah untuk mengatur urutan eksekusi perintah-perintah dalam suatu script. 

Perintah kendali alir terbagi dalam dua kelompok, yaitu percabangan dan pengulangan.
1. Membuat Shell Script
File script dapat dibuat dengan menggunakan teks editor seperti misalnya vi, pico, joe, gedit, kedit dll. Setiap fiel script biasanya diawali dengan baris seperti ini : #!/bin/bash yang artinya script dibawah baris tersebut akan dijalankan dengan interpreter /bin/bash. Untuk menandai baris komentear gunakan tanda “#” pada awal baris.

2. Menjalankan Shell Script
Script dijalankan seperti executable file dengan cara mengetikkan nama file pada prompt.

Ada hal yang harus diperhatikan dalam menjalankan script, yaitu :
1. Direktori tempat script berada harus termasuk dalam search PATH Gunakan perintah echo $PATH untuk melihat search PATH yang berlaku saat ini
2. File script harus memiliki ijin akses (permission) r dan x. Ubah dengan perintah chmod jika perlu !

3. Variabel
Variabel merupakan nama yang mewakili suatu harga string. Nama variabel harus diawali dengan alfabet (a..z, A..Z) atau garis bawah/underscore (_) dan tidak boleh diawali dengan angka.

1. Penamaan variabel yang benar
Nama
hari
_jumlah

2. Penamaan variabel yang salah
5hari
2jum
a. Menyimpan Harga Variabel
Bentuk umum: Nama_Var=Harga
Keterangan:
Tidak boleh ada spasi di kiri dan kanan "=".
b. Menampilkan Harga Variabel
Perintah echo digunakan untuk menampilkan nilai yang disimpan dalam suatu variabel. Bentuk umum : echo $Nama_Var Keterangan: $ merupakan karakter khusus bagi shell yang menyatakan substitusi variabel.
$Nama_Var berarti substitusi harga yang disimpan dalam variabel bernama Nama_Var pada posisi tersebut.
c. Menghapus Variabel
Caranya : isi dengan NULL
Contoh :
$ nama= atau
$ nama='' atau
$ nama="" atau
$ unset nama

3. Parameter
a. Parameter Posisi (Positional Parameter)
Variabel yang diketikkan pada baris perintah.
Parameter posisi : $0, $1, $2 ... $9

b. Parameter Khusus (Special Parameter)
Variabel yang mempunyai arti khusus bagi shell dan sudah ditentukan oleh shell.
Yang termasuk dalam parameter khusus diantaranya : $#, $*, $@
1. $#, fungsinya untuk menyimpan jumlah parameter yang diketikkan pada baris perintah.
2. $*, digunakan untuk menyimpan nilai semua parameter yang diketikkan pada baris    perintah.
3. $@, fungsinya sama dengan $* kecuali bila dalam kutip ganda ("$@") akan     menempatkan setiap argumen posisi dalam kutip ganda.
4. Mengganti "$*" dengan "$@"
c. Pengutipan
Karakter khusus adalah karakter yang mempunyai fungsi khusus bagi shell.
Contoh karakter khusus :
? : substitusi nama file
* : substitusi nama file
` : substitusi perintah
$ : substitusi variabel
Pengutipan (quoting) berfungsi untuk mengabaikan fungsi dari karakter khusus.

Terdapat tiga macam pengutipan :
1. Backslash (\)
2. Kutip Tunggal (' ')
Fungsi : mengabaikan semua karakter khusus di dalamnya, seperti newline, tabs, spasi
3. Kutip Ganda (" ")
Fungsi : mirip dengan kutip tunggal kecuali tidak mengabaikan : $ (substitusi variabel )
Back quote/kut ip bal ik (`)
Backslash (\ )
4. Kutip Balik
Fungsinya untuk menjalankan perintah yang ada di dalamnya serta menyisipkan standard output nya pada posisi tersebut (command substitution).
Bentuk umum : `perintah`
5. Substitusi Nama File
6. Input dan Output
a. read
Fungsi : untuk membaca data dari keyboard atau file.
Bentuk umum : read var1 var2 ... varn
Keterangan : kata pertama diassign ke var1, kata kedua ke var2 dan seterusnya. jika jumlah variabel dalam list lebih sedikit dari jumlah data yang dibaca maka s isa baris disimpan dalam variabel terakhir (varn).
Contoh :
1. Membaca data nama dan alamat dari keyboard
2. Menampilkan isi variabel nama
3. Menampilkan isi variabel alamat
b. echo
Fungsi : untuk menampilkan string ke standard output (layar).
Bentuk umum : echo [pilihan] arg1 arg2 ... argn
Keterangan : Setiap argumen dipisahkan oleh satu spasi.
Pilihan yang sering digunakan :
-n : tidak menampilkan baris baru (newline)
-e : untuk menampilkan backslashescaped characters
Backslash escaped characters :
Contoh :
1. Menampilkan isi direktori
2.Menampilkan baris kosong
3.Menampilkan tabulasi
4. Menampilkan baris baru
5. Membuat script untuk menerima input tanpa escape character
6. Membuat script untuk menerima input dengan escape character
7. Pencabangan dengan If
a. If, fungsinya untuk mengambil keputusan perintah mana yang akan dijalankan dari beberapa pilihan yang ada .
Bentuk Umum:
Keterangan :
Kondisi diperoleh sebagai hasil eksekusi program (berupa exit status).
Exit status = 0 maka perintahperintah antara then dan fi dilaksanakan.
Exit status <> 0
•Perintah antara then dan fi dilompati.
•Untuk bentuk umum dengan else perintahperintah antara else dan fi
dilaksanakan.
b. Exit Status, yaitu Suatu angka yang menunjukkan sukses atau tidaknya suatu    program atau perintah dijalankan.
Exit status = 0 berarti sukses.
Exit status <> 0 berarti gagal.
Exit status dari suatu perintah pipeline adalah exit status dari perintah paling akhir    dalam pipeline.
c. Variabel $?
$? merupakan variabel penyimpanan exit status dari perintah terakhir.
d. Bentuk else if
Bentuk else if digunakan jika pilihan yang harus dilaksanakan lebih dari dua.
8. Evaluasi Kondisi
Fungsi : melakukan testing satu kondisi atau lebih
a. test
Bentuk umum : test ekspresi atau [ ekspresi ] atau [[ ekspresi ]]
Keterangan : ekspresi adalah kondisi yang akan ditest untuk bentuk [ ekspresi ] harus ada spasi setelah tanda "[" dan sebelum tanda "]" test mengembalikan :
•exit status = 0 jika ekspresi bernilai true.
•exit status <> 0 jika ekspresi bernilai false.
b. Operator String
c. Operator Integer
Keterangan :
Shell tidak akan membedakan tipe harga yang disimpan dalam variabel tetapi test akan memperlakukan suatu harga sebagai integer jika dibandingkan dengan operator integer.
d. Operator File
e. Operator Logika

1. Operator negasi (!)
Fungsi : menegasikan hasil evaluasi kondisi/ekspresi

2. Operator and (a)
Fungsi :
melakukan fungsi logika and terhadap 2 ekspresi mengembalikan hasil true bila kedua ekspresi benar
Memiliki prioritas lebih rendah dibandingkan dengan operator string, integer dan file.

3. Operator or (o)
Fungsi :
melakukan fungsi logika or terhadap 2 ekspresi mengembalikan hasil true bila salah satu ekspresi benar
Memiliki prioritas lebih rendah dibandingkan dengan operator a.
9. Pengulangan dengan for
Berfungsi untuk menjalankan sekelompok perintah secara berulangulang sesuai dengan jumlah yang sudah ditentukan.
Perintahperintah antara do dan done disebut badan Iterasi (Body Loop)
Pertama kali loop dijalankan, var disubstitusi dengan word1 (atau $1 untuk for tanpa list) lalu badan iterasi dijalankan. Berikutnya var disubstitusikan dengan word2 (atau $2 untuk for tanpa list) kemudian badan iterasi dieksekusi lagi dan seterusnya. Badan literasi ini dijalankan berulangulang dari atas ke bawah sebanyak:
•Jumlah word dalam list setelah in
•Jumlah argumen pada command line (untuk for tanpa list)
Contoh :
1. For dengan list
2. For tanpa list





LATIHAN 
Tulis skript berikut dengan menggunakan editor VI dengan nama coba.#!/bin/bashecho “halo $LOGNAME , senang bertemu denganmu”
echo “direktori anda saat ini `pwd`”
echo “anda bekerja di mesin `uname –o`”
Eksekusilah file tersebut, apa yang dihasilkan dari file coba 
 VARIABEL 
Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akanmenganggap pemisahan tersebut sebagai parameter, contoh : TI =informatika ##error TI= informatika ##errorUntuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama variabletersebut. Pada shell, instruksi echo dapat menampilkan isi variable tersebut,contoh : TI=informatika echo $TI Gaji=450000 echo $Gaji echo $TI $Gaji Perangkat Lunak Jaringan I 
JENIS VARIABEL
Ada dua jenis variabel dalam Shell yaitu variabel lokal dan variabel environtment.
1. Variabel Lokal
 Yang dimaksud dengan variabel lokal adalah variabel yang nilainya langsungdiisikan.Tipe nilai variabel : numerik, karakter atau alphanumerik. Di dalam memberikan nama sebuah varibel, yang harus diperhatikan adalahnama variabel berupa karakter alphanumeric atau bisa juga diawali dengan karakater garis bawah(_), setelah itu baru bisa diikuti dengan jenis karakter yang lain. 
Contoh penamaan variabel : Penamaan variabel yang salah Penamaan variabel yang benar 5nama Nama _hasil4 4_hasil _nilai nila. iContoh dalam penulisan variabel dan pemberian nilai dalam potonganprogram Shell sebagai berikut : ucapan=selamat hasil=dua awal=”tidak ada” echo $ucapan echo $hasil echo $awal Perangkat Lunak Jaringan I 
Untuk membuat variabel local cukup menyatakannya dengan keyword “local”.Contoh: #!/bin/bash HELLO=Hello function hello { local HELLO=World echo $HELLO } echo $HELLO hello echo $HELLO Perangkat Lunak Jaringan I 
2. Variabel Environment
Yang dimakasud variabel environment adalah variabel yang merupakan bawaan dari Shell itu sendiri, biasanya variabel ini berisi nilai-nilai yang merupakan konfigurasi standar dalam lingkungan program Shell. Aturan penulisan dari environment variable adalah semua nama variabel menggunakan huruf kapital. lingkup dari variabel environment adalah bersifat GLOBAL. Artinya variabel environment berlaku untuk semua Shell yang ada. Contoh variabel environment adalah sebagai berikut : LOGNAME=shell14 (variabel yang berisi nama login) SHELL=/bin/bash (variabel yang berisi nama shell yang aktif) HOME=/home/shell14 (variabel yang berisi nama direktori user) USER=shell14 (variabel yang berisi nama user). Untuk mengetahui variabel apa saja yang ada dalam kelompok environment variabel dapat digunakan perintah berikut: $ env ‘enter’Merubah nilai variabel environment untuk merubah nilai dari variabel environment dapat dilakukan dengan menggunakan perintah sebagai berikut : $ export LOGNAME=mrbee ‘enter’kemudian hasilnya dapat dilihat dengan menggunakan perintah : $ env | grep “LOGNAME”Menghapus variabel environment $ unset LOGNAME Perangkat Lunak Jaringan I 
META KARAKTER
Metakarakter adalah sebuah karakter yang memiliki arti tertentu.Dalam Shell juga dikenal beberapa meta karakter. Karena meta karakter juga ada dalam Shell maka yang perlu diperhatikan adalah kesalahan dalam penanganan sebuah karakter. 
QUOTING (PENGUTIPAN)
Quoting adalah mekanisme untuk melindungi meta karakter dariinterpretasi sebagai sebuah simbol. Shell juga mempunya beberapa karakter yang difungsikan untuk melindungi meta karkater agar tetap diinterpretasikan sebagai karakter biasa. Ada tiga karakter quoting dalam Shell, yaitu : 1. Backslash ( ) 2. Petik tunggal ( ) 3. Petik ganda (“ “ ).
Contoh quoting dalam Shell :$ echo don’t miss itdon’t miss it$ echo “don’t miss it”don’t miss itKeterangan :1. Tanda menandakan katakter ‘ yang mengikuti bukan sebuah metakarakter2. Pengunaan tanda petik double “” juga berfungsi melindungi interpretasi karakter sebagai metakarakter Perangkat Lunak Jaringan I 
INPUT KEYBOARD
Seringkali dalam menulis sebuah script diperlukan input dari user, untuk melakukan hal tersebut dapat digunakan perintah read. read adalah sebuah perintah built-in yang membaca input dari terminal atau dari sebuahfile hingga sebuah baris baru. Perintah read memiliki empat buah option untukmengendalikan perilakunya : -a, -e,-p, dan -r melalui perintah echo.Fungsi : untuk membaca data dari keyboard atau file.Bentuk umum : read var1 var2 ... varnKeterangan :1. kata pertama di-assign ke var1, kata kedua ke var2 dan seterusnya.2. jika jumlah variabel dalam list lebih sedikit dari jumlah data yang dibaca maka sisa baris disimpan dalam variabel terakhir (varn). Perangkat Lunak Jaringan I 
OUTPUT
Fungsi : untuk menampilkan string ke standard output (layar).Bentuk umum : echo [-pilihan] arg1 arg2 ... argnKeterangan :- Setiap argumen dipisahkan oleh satu spasi.- Pilihan yang sering digunakan :-n : tidak menampilkan baris baru (newline)-e : untuk menampilkan backslash-escaped characters, yaitu : n, c, t 
contoh : 1. Membuat script untuk menerima input - tanpa escape character $ cat > masukan1 echo "Nama Anda: " read nama echo "Nama anda adalah $nama" [Ctrl]+[D] $ masukan1 Nama Anda: Unyil Nama anda adalah Unyil Perangkat Lunak Jaringan I 2. Membuat script untuk menerima input - dengan escape character $ cat > masukan2 echo -e "Nama Anda: c" read nama echo "Nama anda adalah $nama" [Ctrl]+[D] $ masukan2 Nama Anda: Unyil Nama anda adalah Unyil Perangkat Lunak Jaringan I 

Berikut ini adalah hasil dari praktikum mengenai ShellScript  


Pada kali ini kita akan mengganti suatu direktori dengan nama PLJB, dengan perintah cd PLJB
lalu untuk mengetahui posisi file kita buat perintah pwd. Setelah itu kita akan membuat suatu direktori 
script dengan cara mkdir script. Setelah itu kita buat masukan i=saya, j=gila. Agar dapat menjalankan i=saya, kita buat perintah dengan echo $i, dimana fungsi echo, yaitu menampilkan nilai yang sudah 
diberikan pada variabel.Begitu juga untuk menampilkan i= saya, j=gila, masukkan perintah 
 echo $i $j, maka akan tampil “saya gila” 


  

 Pada hal ini kita buat sebuah program yang berisi biodata, maka beri perintah vi program.sh lalu ketikkan beberapa kalimat seperti gambar di atas lalu beri perintah vi kalimat.sh, maksudnya 
Editor VI (vee eye, dibaca vi ai) adalah editor berbasis text yang digunakan oleh banyak pemakai UNIX/LINUX. Penggunaan editor VI memang agak sedikit menyulitkan penggunanya. Dikarenakan tidak tersedianya menu yang memberikan petunjuk untuk melakukan sebuah perintah. sh adalah command untuk meninggalkan editor vi untuk sementara. lalu untuk memasukkan isi dari suatu file.
maka muncullah sejumlah kalimat tersebut.
berikut ini adalah isi dari suatu file tadi.

setelah kita menampilkan sejumlah kalimat, maka kita beri perintah lagi vi kalimat.sh , vi program.sh ,
 vi clear.sh dan ls -l program.sh dimana ls, untuk melihat suatu folder, maka muncul seperti pada gambar.

 pada gambar di atas, kita juga dapat beri perintah ./program.sh, lalu kasih perintah chmod a+x program.sh yang berfungsi untuk memberikan akses. lalu kita ls -l program.sh, maka tampillah seperti pada gambar.

pada bagian ini kita akan buat vi arg, lalu beri perintah sh arg, lalu masukkan jumlah argumen yang
 diinput 3, dengan argumen pertama= saya, kedua= ngantuk dan ketiga = sekali, maka akan tampil argumen yang diinput, saya ngantuk sekali.


lalu kita coba dengan memasukkaan jumlah inputan berbeda dengan pengisian argumen yang diminta. jumlah inputan = 5, pertama= saya, kedua=mencoba, ketiga=program, lalu aargumen yang diinput adalah saya mencoba program shell script, hal itu karena inputan kita sebanyak 5, maka yg tampil 5 buah kata. setelah itu kita beri perintah cat arg, artinya menggabungkan file dan cetak pada keluaran. beri perintah echo "nama program : " $0, dimana $--> untuk substitusi variabel,
$#, fungsinya untuk menyimpan jumlah parameter yang diketikkan pada baris perintah.
 $*, digunakan untuk menyimpan nilai semua parameter yang diketikkan pada baris perintah.


selanjutnya kita akan melakukan perhitungan, dimana kita menggunakan perintah expr, suatu perintah untuk operasi matematika.


kita akan membuatk program dengan seperti di atas, kita echo yang artinya diinput bilangan ke-1, 
lalu kita read yang artinya cout dengan sebuah variabel. lalu untuk mulai perhitungannya, 
kita pakai programnya echo -n "penjumlahan : " (tdk menggunakan ;) lalu untuk menghitung kita pakai
 expr $a + $b + $c + $d kita pakai simbol +, kalau pengurangan kita pakai -,
 kalau perkalian kita pakai \* kalau pembagian kita pakai / dan pemodulusan %.

lalu kita masukkan sh kalkulator, lalu kita input nilai yang kita inginkan, dan proses operasi perhitungan tadi akan mengitung niali sesuai dengan apa yang diminta, maka jalannya program seperti pada gambar di atas. 

sudah ada beberapa file yang terbuat, seperti arg, biodata.sh, cat, clear.sh, file.sh, kalimat.sh, kalkulator.sh, program.sh.

lalu kita akan mengganti direktori dengan cd pljE, lalu perintah vi jus.txt lalu kita ketik nama nama buah yang ingin kita jus, seperti apel, jeruk, mangga, nanas, melon. untuk menghitung jumlah baris beri perintah wc -l jus.txt, menghitung karakter wc -c jus.txt, lalu untuk menghitung baris, kata, karakter kita pakai perintah wc jus.txt
nah setelah itu kita buat vi biodata.txt, lalu kita isi biodata seperti yg digambar. lalu untuk menampikan kita cat biodata.txt  maka akan muncul data-data biodata mahasiswa. nah untuk melihat data nimnya saja beri perintah cut -f2 biodata.txt, untuk menampilkan nama dan asal saja pakai cut -f1,3 biodata.txt.

untuk menampilkan nama, nim dan asal tapi hanya 4 baris dari atas adalah head -4 biodata.txt
untuk menampilkan 2 data dari bawah pakai tail -2 biodata.txt





untuk menampilkan data mahasiswa secara berurut berdasar abjad kita pakai perintah sort biodata.txt,
 untuk sebaliknya kita pakai sort -r biodata.txt. dan utk menampilkan data keeempat dari tas dan
 nomor satu dari bawah beri perintah haad -4 biodata.txt | tail 1
  
  

top