Pemrosesan String
wc – word count
Fungsi : menghitung jumlah baris, kata, dana karakter dalam suatu file.
Sintaks : wc [-lwc] nama_file
Keterangan :
-l : line
-w : word
-c : Character
Contoh :
1. Menampilkan jumlah baris, kata dan karakter dari file latih
2. Menampilkan jumlan baris dari file latih
cut
Fungsi : mengambil bagian tertentu dari suatu file dan menampilkannya ke layar.
Sintaks : cut [-d] [-fc] nama_file
Keterangan :
-d : delimeter atau pemisah antar field, digunakan jika menggunakan option -f
Default = TABULASI
-f : field atau kolom.
-c : character.
Contoh :
1. Menampilkan field pertama dan ketiga dari file /etc/passwd
2. Menampilkan karakter 1 sampai dengan 8 dan karakter 25 sampai dengan 27 pada file
/etc/passwd
3. Menampilkan karakter ke 12 sampai dengan ke 16 dari hasil keluaran perintah date
head
Fungsi : menampilkan n baris pertama dari suatu file
Sintaks : head [-n] nama_file
Keterangan : Jumlah baris yang akan ditampilkan default = 10
Contoh :
1. Menampilkan 10 baris pertama dari file /etc/passwd
2. Menampilkan 5 baris pertama dari file /etc/passwd
tail
Fungsi : menampilkan n baris terakhir dari suatu file
Sintaks : tail [-n] nama_file
Keterangan : Jumlah baris yang akan ditampilkan default = 10
Contoh :
1. Menampilkan 10 baris terakhir dari file /etc/passwd
2. Menampilkan 5 baris terakhir dari file /etc/passwd
3. Menampilkan mulai dari baris ke 5 sampai baris terakhir file /etc/passwd
sort
Fungsi : mengurutkan isi suatu file berdasarkan key tertentu
Sintaks : sort [-tchar] [+key] [-r] nama_file
Keterangan :
-t char : delimeter / karakter pemisah antar field.
+ key : nomor kolom sebagai key pengurutan, dimulai dari nol
-r : reverse, mengurutkan secara descending.
Contoh :
1. Mengurutkan isi file /etc/passwd berdasarkan kolom pertama secara ascending
2. Mengurutkan isi file /etc/passwd berdasarkan kolom keempat secara ascending
3. Mengurutkan isi file /etc/passwd berdasarkan kolom keempat secara descending
uniq
Fungsi : menghilangkan duplikasi data, syarat data harus terurut terlebih dahulu.
Sintaks : uniq nama_file
Contoh :
tr
Fungsi : untuk mengubah suatu karakter menjadi karakter lain.
Sintaks : tr “string1” “string2”
Contoh :
1. Mengubah semuakarakter 1 menjadi G, 3 menjadi &, dan s menjadi n
2. 2. Mengubah semua huruf kecil menjadi huruf besar
grep
Fungsi : mencari string di dalam suatu file.
Sintaks ; grep [-pilihan] string_file
Pilihan yang sering digunakan :
-q : tidka menampilkan hsil keluaran ke layar.
-v : menampilkan baris string yang tidak cocok
Contoh :
1. Menampilkan baris yang ada string Linux di file latih.
2. Menampilkan seluruh file di current directory yang mempunyai string Linux
3. Menampilkan baris yang tidak mempunya i string Linux di file latih
find
Fungsi : mencari file denga kriteria tertentu
Sintaks : find nama_path -pilihan
Keterangan :
nama_path = direktori awal dpencarian
Pilihan yang sering digunakan:
Contoh :
1. Mencari file dengan nama latih mulai dari current directory ke bawah
2. Mencari file yang dimilik oleh user dudi mulai dari direktori / ke bawah
3. Mencari seluruh dengan tiper direktori mulai dari direktori /home/dudi ke bawah
4. Mencari seluruh file yang bernama core kemudian dihapus dengan konfirmasi dimulai dari current direktori hingga ke bawah
1. Pendahuluan
Apa itu shell ? shell adalah program (penterjemah perintah) yang menjembatani user dengan sistem operasi dalam hal ini kernel (inti sistem operasi), umumnya shell menyediakan prompt sebagai user interface, tempat dimana user mengetikkan perintah-perintah yang diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi suatu file progam (eksternal command), selain itu shell memungkinkan user menyusun sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program.Macam - macam shell?
Tidak seperti sistem operasi lain yang hanya menyediakan satu atau 2 shell, sistem operasi dari keluarga unix misalnya linux sampai saat ini dilengkapi oleh banyak shell dengan kumpulan perintah yang sangat banyak, sehingga memungkinkan pemakai memilih shell mana yang paling baik untuk membantu menyelesaikan pekerjaannya, atau dapat pula berpindah-pindah dari shell yang satu ke shell yang lain dengan mudah, beberapa shell yang ada di linux antara lain:- Bourne shell(sh),
- C shell(csh),
- Korn shell(ksh),
- Bourne again shell(bash),
- dsb.
[fajar@linux$]echo $BASH_VERSION
bash 2.04.12(1)-release
Mungkin saat anda membaca dokumentasi ini versi terbaru dari bash sudah dirilis dengan penambahan feature yang lain.2. Pemrograman Shell ?
Yaitu menyusun atau mengelompokkan beberapa perintah shell (internal atupun eksternal command) menjadi kumpulan perintah yang melakukan tugas tertentu sesuai tujuan penyusunnya. Kelebihan shell di linux dibanding sistem operasi lain adalah bahwa shell di linux memungkinkan kita untuk menyusun serangkaian perintah seperti halnya bahasa pemrograman (interpreter language), melakukan proses I/O, menyeleksi kondisi, looping, membuat fungsi, dsb. adalah proses - proses yang umumnya dilakukan oleh suatu bahasa pemrograman, jadi dengan shell di linux kita dapat membuat program seperti halnya bahasa pemrograman, untuk pemrograman shell pemakai unix atau linux menyebutnya sebagai script shell.3. Kebutuhan Dasar
Sebelum mempelajari pemrograman Bash shell di linux sebaiknya anda telah mengetahui dan menggunakan perintah - perintah dasar shell baik itu internal command yang telah disediakan shell maupun eksternal command atau utility, seperticd, pwd, times, alias, umask, exit, logout, fg, bg, ls, mkdir, rmdir, mv, cp, rm, clear, ...- utilitas seperti
cat, cut, paste, chmod, lpr,... - redirection (cara mengirim output ke file atau menerima input dari file), menggunakan operator redirect
>, >>, <, <<,contohnya:ls > data
hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan ditimpa.ls >> data
hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.cat < data
file data dijadikan input oleh perintahcat - pipa (output suatu perintah menjadi input perintah lain), operatornya :
|, contoh:ls -l | sort -s
ouput perintah ls -l (long) menjadi input perintah sort -s (urutkan secara descending), mending pakels -l -rsaja :-)ls -l | sort -s | morecat <data | sort > databaru - Wildcard dengan karakter
*, ?, [ ], contohnya:ls i*
tampilkan semua file yang dimulai dengan ils i?i
tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri dengan ils [ab]*
tampilkan file yang dimulai dengan salah satu karakter a atau b
4. Simple Bash Script
Langkah awal sebaiknya periksa dulu shell aktif anda, gunakan perintah ps (report process status)[fajar@linux$]ps
PID TTY TIME CMD
219 tty1 00:00:00 bash
301 tty1 00:00:00 ps
bash adalah shell aktif di system saya, jika disystem anda berbeda misalnya csh atauksh ubahlah dengan perintah change shell[fajar@linux$]chsh
Password:
New shell [/bin/csh]:/bin/bash
Shell changed
atau dengan mengetikkan bash[fajar@linux$]bash
sekarang coba anda ketikkan perintah dibawah ini pada prompt shellecho "Script shell pertamaku di linux"[fajar@linux$]echo "Script shell pertamaku di linux"
Script shell pertamaku di linux
string yang diapit tanda kutip ganda (double quoted) akan ditampilkan pada layar anda,echo adalah statement (perintah) built-in bash yang berfungsi menampilkan informasi ke standard output yang defaultnya adalah layar. jika diinginkan mengulangi proses tersebut, anda akan mengetikkan kembali perintah tadi, tapi dengan fasilitas history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang diinginkan apalagi jika selang beberapa waktu mungkin perintah-perintah tadi sudah tertimpa oleh perintah lain karena history mempunyai kapasitas penyimpanan yang ditentukan. untuk itulah sebaiknya perintah-perintah tsb disimpan ke sebuah file yang dapat kita panggil kapanpun diinginkan.coba ikuti langkah - langkah berikut:
- Masuk ke editor anda, apakah memakai vi,pico,emacs,dsb...
- ketikkan perintah berikut
#!/bin/bash echo "Hello, apa khabar" - simpan dengan nama file tes
- ubah permission file tes menggunakan
chmod[fajar@linux$]chmod 755 tes - jalankan
[fajar@linux$]./tes
PATH=$PATH:.
setelah itu script diatas dapat dijalankan dengan cara[fajar@linux$]tes
Hello, apa khabar
tanda #! pada /bin/bash dalam script tes adalah perintah yang diterjemahkan ke kernel linux untuk mengeksekusi path yang disertakan dalam hal ini program bash pada direktory /bin, sebenarnya tanpa mengikutkan baris tersebut anda tetap dapat mengeksekusi script bash, dengan catatan bash adalah shell aktif. atau dengan mengetikkan bash pada prompt shell.[fajar@linux$]bash tes
tentunya cara ini kurang efisien, menyertakan path program bash diawal script kemudian merubah permission file sehingga dapat anda execusi merupakan cara yang paling efisien.Sekarang coba kita membuat script shell yang menampilkan informasi berikut:
- Waktu system
- Info tentang anda
- jumlah pemakai yang sedang login di system
#!/bin/bash
#myinfo
#membersihkan tampilan layar
clear
#menampilkan informasi
echo -n "Waktu system :"; date
echo -n "Anda :"; whoami
echo -n "Banyak pemakai :"; who | wc -l
sebelum dijalankan jangan lupa untuk merubah permission file myinfo sehingga dapat dieksekusi oleh anda[fajar@linux$]chmod 755 myinfo
[fajar@linux$]./myinfo
Waktu system : Sat Nov 25 22:57:15 BORT 2001
Anda : fajar
Banyak pemakai : 2
tentunya layout diatas akan disesuaikan dengan system yang anda gunakan statementecho dengan opsi -n akan membuat posisi kursor untuk tidak berpindah ke baris baru karena secara default statement echo akan mengakhiri proses pencetakan ke standar output dengan karakter baris baru (newline), anda boleh mencoba tanpa menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat digunakan adalah -e (enable), memungkinkan penggunaan backslash karakter atau karakter sekuen seperti pada bahasa C atau perl, misalkan :echo -e "\abunyikan bell"
jika dijalankan akan mengeluarkan bunyi bell, informasi opsi pada statement echo dan backslash karakter selengkapnya dapat dilihat via man di prompt shell.[fajar@linux$]man echo
5. Pemakaian Variabel
Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi program (runtime program) ataupun proses lain yang dilakukan sistem operasi. dalam dokumentasi ini saya membagi variabel menjadi 3 kategori:- Environment Variable
- Positional Parameter
- User Defined Variable
5.1. Environment Variable
atau variabel lingkungan yang digunakan khusus oleh shell atau system linux kita untuk proses kerja system seperti variabelPS1, PS2, HOME, PATH, USER, SHELL,dsb...jika digunakan akan berdampak pada system, misalkan variabel PS1yang digunakan untuk mengeset prompt shell pertama yaitu prompt tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang dimasukkan dianggap belum lengkap oleh shell (defaultnya ">"). anda dapat mengeset PS1 danPS2 seperti berikut.simpan dahulu isi PS1 asli system anda, sehingga nanti dapat dengan mudah dikembalikan
[fajar@linux$]PS1LAMA=$PS1
sekarang masukkan string yang diinginkan pada variabel PS1[fajar@linux$]PS1="Hi ini Promptku!"
Hi ini Promptku!PS2="Lengkapi dong ? "
maka prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda ke prompt semula ketikkan perintah[fajar@linux$]PS1=$PS1LAMA
Jika anda ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa backslash karakter diantaranya adalah:| \a | ASCII bell character (07) |
| \d | date dengan format "Weekday Month Date" (misalnya "Tue May 26") |
| \e | ASCII escape character (033) |
| \H | hostname (namahost) |
| \n | newline (karakter baru) |
| \w | Direktory aktif |
| \t | time dalam 24 jam dengan format HH:MM:SS |
| dll | man bash:-) |
[fajar@linux$]PS1="[\t][\u@\h:\w]\$"
agar prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen) sisipkan pada file .bashrc atau .profile5.2. Positional Parameter
atau parameter posisi yaitu variabel yang digunakan shell untuk menampung argumen yang diberikan terhadap shell baik berupa argumen waktu sebuah file dijalankan atau argumen yang dikirim ke subrutin. variabel yang dimaksud adalah1,2,3,dst..lebih jelasnya lihat contoh script berikut :#!/bin/bash
#argumen1
echo $1 adalah salah satu $2 populer di $3
Hasilnya[fajar@linux$]./argumen1 bash shell linux
bash adalah salah satu shell populer di linux
ada 3 argumen yang disertakan pada script argumen1 yaitu bash, shell, linux,masing2 argumen akan disimpan pada variabel 1,2,3 sesuai posisinya. variabel spesial lain yang dapat digunakan diperlihatkan pada script berikut:#!/bin/bash
#argumen2
clear
echo "Nama script anda : $0";
echo "Banyak argumen : $#";
echo "Argumennya adalah: $*";
Hasilnya:[fajar@linux$]./argumen 1 2 3 empat
Nama script anda : ./argumen
Banyak argumen : 4
Argumennya adalah : 1 2 3 empat
5.3. User Defined Variable
atau variabel yang didefinisikan sendiri oleh pembuat script sesuai dengan kebutuhannya, beberapa hal yang perlu diperhatikan dalam mendefenisikan variabel adalah:- dimulai dengan huruf atau underscore
- hindari pemakaian spesial karakter seperti *,$,#,dll...
- bash bersifat case sensitive, maksudnya membedakan huruf besar dan kecil,
aberbeda denganA,namaberbeda denganNama,NaMa,dsb..
"=", contohnya :myos="linux" #double-quoted
nama='pinguin' #single-quoted
hasil=`ls -l`; #back-quoted
angka=12
kalau anda perhatikan ada 3 tanda kutip yang kita gunakan untuk memberikan nilai string ke suatu variabel, adapun perbedaannya adalah:- dengan kutip ganda (double-quoted), bash mengizinkan kita untuk menyisipkan variabel di dalamnya. contohnya:
#!/bin/bash nama="pinguin" kata="Hi $nama, apa khabarmu" #menyisipkan variabel nama echo $kata;Hasilnya:Hi pinguin, apa khabarmu - dengan kutip tunggal (single-quoted), akan ditampilkan apa adanya. contohnya:
#!/bin/bash nama="pinguin" kata='Hi $nama, apa khabarmu' #menyisipkan variabel nama echo $kata;Hasilnya:Hi $nama, apa khabarmu - dengan kutip terbalik (double-quoted), bash menerjemahkan sebagai perintah yang akan dieksekusi, contohnya:
#!/bin/bash hapus=`clear`; isi=`ls -l`; #hasil dari perintah ls -l disimpan di variabel isi #hapus layar echo $hapus #ls -l echo $isi;Hasilnya: silahkan dicoba sendiri
#!/bin/bash
#varuse
nama="fajar"
OS='linux'
distro="macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll"
pc=1
hasil=`ls -l $0`
clear
echo -e "Hi $nama,\npake $OS\nDistribusi, $distro\nkomputernya, $pc buah"
echo "Hasil ls -l $0 adalah =$hasil"
Hasilnya:[fajar@linux$]./varuse
Hi fajar,
pake linux Distribusi, macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll
komputernya, 1 buah
Hasil ls -l ./varuse adalah -rwxr-xr-x 1 fajar users 299 Nov 21 06:24 ./varuse
untuk operasi matematika ada 3 cara yang dapat anda gunakan, dengan statement builtin let atau expr atau perintah subtitusi seperti contoh berikut:#!/bin/bash
#mat1
a=10
b=5
#memakai let
let jumlah=$a+$b
let kurang=$a-$b
let kali=$a*$b
#memakai expr
bagi=`expr $a / $b`
#memakai perintah subtitusi $((ekspresi))
modul =$(($a%$b)) #sisa pembagian
echo "$a+$b=$jumlah"
echo "$a-$b=$kurang"
echo "$a*$b=$kali"
echo "$a/$b=$bagi"
echo "$a%$b=$mod"
Hasilnya:[fajar@linux$]./mat1
10+5=15
10-5=5
10*5=50
10/5=2
10%5=0
fungsi expr begitu berdaya guna baik untuk operasi matematika ataupun string contohnya:[fajar@linux$]mystr="linux"
[fajar@linux$]expr length $mystr
5
Mungkin anda bertanya - tanya, apakah bisa variabel yang akan digunakan dideklarasikan secara eksplisit dengan tipe data tertentu?, mungkin seperti C atau pascal, untuk hal ini oleh Bash disediakan statement declare dengan opsi -i hanya untuk data integer (bilangan bulat). Contohnya:#!/bin/bash
declare -i angka
angka=100;
echo $angka;
apabila variabel yang dideklarasikan menggunakan declare -i ternyata anda beri nilai string (karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika anda tidak menggunakannya maka dianggap sebagai string.6. Simple I/O
I/O merupakan hal yang mendasar dari kerja komputer karena kapasitas inilah yang membuat komputer begitu berdayaguna. I/O yang dimaksud adalah device yang menangani masukan dan keluaran, baik itu berupa keyboard, floppy, layar monitor,dsb. sebenarnya kita telah menggunakan proses I/O ini pada contoh -contoh diatas seperti statementecho yang menampilkan teks atau informasi ke layar, atau operasi redirect ke ke file. selain echo, bash menyediakan perintah builtin printf untuk mengalihkan keluaran ke output standard, baik ke layar ataupun ke file dengan format tertentu, mirip statement printf kepunyaan bahasa C atau perl. berikut contohnya:
6.1 Output dengan printf
#!/bin/bash
#pr1
url="pemula.linux.or.id";
angka=32;
printf "Hi, Pake printf ala C\n\t\a di bash\n";
printf "My url %s\n %d decimal = %o octal\n" $url $angka $angka;
printf "%d decimal dalam float = %.2f\n" $angka $angka
Hasilnya:[fajar@linux$]./pr1
Hi, Pake printf ala C
di bash
My url pemula.linux.or.id
32 decimal = 40 octal
32 decimal dalam float = 32.00
untuk menggunakan format kontrol sertakan simbol %, bash akan mensubtitusikan format tsb dengan isi variabel yang berada di posisi kanan sesuai dengan urutannya jika lebih dari satu variabel, \n \t \a adalah karakter sekuen lepas newline,tab,dan bell,| Format control | keterangan |
%d | untuk format data integer |
%o | octal |
%f | float atau decimal |
%x | Hexadecimal |
%.2f akan mencetak 2 angka dibelakang koma, defaultnya 6 angka, informasi lebih lanjut dapat dilihat via man printf
6.2 Input dengan read
Setelah echo dan printf untuk proses output telah anda ketahui, sekarang kita menggunakan statement read yang cukup ampuh untuk membaca atau menerima masukan dari input standarsyntax :
read -opsi [nama_variabel...]
berikut contoh scriptnya:#!/bin/bash
#rd1
echo -n "Nama anda :"
read nama;
echo "Hi $nama, apa khabarmu";
echo "Pesan dan kesan :";
read
echo "kata $nama, $REPLY";
Hasilnya:[fajar@linux$]./rd1
Nama anda : pinguin
Hi pinguin, apa khabarmu
Pesan & kesan :
pake linux pasti asyk - asyk aja
kata pinguin, pake linux pasti asyk - asyk aja
jika nama_variabel tidak disertakan, maka data yang diinput akan disimpan di variabelREPLY contoh lain read menggunakan opsi-t(TIMEOUT), -p (PROMPT), -s(SILENT), -n (NCHAR) dan -d(DELIM)#!/bin/bash
read -p "User Name : " user
echo -e "Password 10 karakter,\njika dalam 6 second tidak dimasukkan pengisian password diakhiri"
read -s -n 10 -t 6 pass
echo "kesan anda selama pake linux, _underscore=>selesai"
read -d _ kesan
echo "User = $user"
echo "Password = $pass"
echo "Kesan selama pake linux = $kesan"
Hasilnya: silahkan dicoba sendiri :-)| Opsi | Keterangan |
-p | memungkinkan kita membuat prompt sebagai informasi pengisian |
-s | membuat input yang dimasukkan tidak di echo ke layar (seperti layaknya password di linux) |
-n | menentukan banyak karakter yang diinput |
-d | menentukan karakter pembatas masukan |
man bash6.3. Output dengan konstanta ANSI
6.3.1. Pengaturan Warna
Untuk pewarnaan tampilan dilayar anda dapat menggunakan konstanta ANSI (salah satu badan nasional amerika yang mengurus standarisasi).syntaxnya:
\033[warnam
Dimana:m menandakan setting colorcontohnya:
[fajar@linux$]echo -e "\033[31m HELLO\033[0m"
HELLO
konstanta 31m adalah warna merah dan 0m untuk mengembalikan ke warna normal (none), tentunya konstanta warna ansi ini dapat dimasukkan ke variabel PS1 untuk mengatur tampilan prompt shell anda, contohnya:[fajar@linux$]PS1="\033[34m"
[fajar@linux$]
berikut daftar warna yang dapat anda gunakan:foreground
None 0m
Black 0;30 Dark Gray 1;30
Red 0;31 Light Red 1;31
Green 0;32 Light Green 1;32
Brown 0;33 Yellow 1;33
Blue 0;34 Light Blue 1;34
Purple 0;35 Light Purple 1;35
Cyan 0;36 Light Cyan 1;36
Light Gray 0;37 White 1;37
background
dimulai dengan 40 untuk BLACK,41 RED,dst
lain-lain
4 underscore,5 blink, 7 inverse
tentunya untuk mendapatkan tampilan yang menarik anda dapat menggabungkannya antara foreground dan background[fajar@linux$]echo -e "\033[31;1;33m Bash and ansi color\033[0m"
| Bash and ansi color |
6.3.2 Pengaturan posisi kursor
sedangkan untuk penempatan posisi kursor, dapat digunakan salah satu cara dibawah.- Menentukan posisi baris dan kolom kursor:
\033[baris;kolomH - Pindahkan kursor keatas N baris:
\033[NA - Pindahkan kursor kebawah N baris:
\033[NB - Pindahkan kursor kedepan N kolom:
\033[NC - Pindahkan kursor kebelakang N kolom:
\033[ND
#!/bin/bash
SETMYCOLOR="\033[42;1;37m"
GOTOYX="\033[6;35H"
clear
echo -e "\033[3;20H INI DIBARIS 3, KOLOM 20"
echo -e "\033[44;1;33;5m\033[5;35H HELLO\033[0m";
echo -e "$SETMYCOLOR$GOTOYX ANDA LIHAT INI\033[0m"
0 komentar:
Post a Comment