Bray cuma mau share sedikit aja pengalaman kerja di Operator XL Axiata.

Seperti yang yang kita tahu, perusahaan besar ketika kita apply agak sedikit susah untuk masuk, selain perusahaan tersbut mencari orang2 yang mempunya skill jg akan di lihat dari sisi pengalaman nya. gua bisa masuk ke perusahaan ini termasuk beruntung aja, karena nitip CV dengan teman yang sudah kerja deluan di XL. ketika itu gua dah resign dari perusahaan folec communication di brueni dan balik lagi ke indonesia.

seperti yang gua bilang tadi mungkin sedikit beruntung, lalu gua dipanggil untuk test pysikotes, seperti biasa test ini hanya memerlukan konsentrasi dan logika. menurut gua kalau mau ikut test ini ga usah belajar, yang di perlukan cuma istirahat yang cukup + Sarapan yang cukup pagi nya sebelum test + dan berdoa. karena test disini cuma mau ngukur kemampuan lu untuk berfikir, LOGIKA dan ketahanan lu terhadap tekanan. karena ada test suruh ngitung jumlahkan ke atas yang pake waktu. serta gambar untuk test sikologi lu untuk bekerja. juga bahasa inggris, yah cuma listening aja.

akhirnya setelah test gua tunggu2 kok ga ada pangglilan lagi ya, udah satu minggu, padahal step nya itu test pisikotes terus test interview HRD dan user trus medical checkup lalu kerja deh.saat itu gua berfikir mungkin gua ga lulus, eh setelah 8 hari gua di telp ama HRD nya XL untuk test wawancara, datenglah gua. ternyata wawancara nya dengan HRD dulu belum sama USER, yah pertanyaan2 standar lah, seperti pengalaman kerja, motivasi dan achivment. dengan menggunakan bahasa inggris.

esok nya gua dipanggil lagi untuk wawancara dengan USER, trus wawancara ini ga banyak juga, lebih banyak nanya soal skill dan pengalaman saja. lalu sekitar 3 hari berikut nya gua di suruh utnuk medical test, disini gua berfikir udah tinggal selangkah lagi. dan tidak lama kemudian hasil medical test keluar dan akhirnya gua kerja juga di PT. XL Axiata. Tbk untuk karyawan permanent, cita2 dari dulu pengen kerja di operator tapi permament.

gua kerja disini sebagai engineer, oh ya di xl ada urutan2 untuk level nya kaya jabatan gitu lah, pertama P1 > junior engineer, P2 > Senior enginner, P3 > anaylst, P4 > seinor analyst, P5 Specialist. kl untuk manager itu M. nah dulu gua tempatkan di depatement NOC, di divisi FGPRS. di divisi Fault GPRS ini gua harus shif gitu kerja nya, ada shif 1 jari jam 08 pagi sampe jam 17:30 sore trus shif 2 dari jam 17:30 sampe jam 11:00 malem trus shif 3 dari jam 11:00 malam samape jam 08:00 pagi. untuk jobdesk nya lumayan banyak juga. FGPRS ini adalah befungsi sebagai monitoring, handling compaint dan first layer untuk toubleshoot. fgprs ini adalah bertanggung jawab untuk service data pengguna XL di seluruh indonesia, seperti Blackberry, Internet dll. jadi banyak perangkat yang harus di monitoring seperti SGSN, GGSN, Radius dan router2, jika ada alram harus follow up dan juga handle komplaint dari pelanggan secara teknikal, intinya FGPRS ini memastikan service data XL harus bisa operational 24 jam.

setelah dua tahun gua gabung di FGPRS akhirnya ada tawaran datang untuk pindah divisi, masih di departement NOC juga yaitu TTMSC, disini gua handle untuk Interkoneksi, Roaming dan VoiP. di divisi ini gua di posisi P3. yah lumayan lah untuk melangkah, yang gua handle di divisi ini adalah memastikan operator XL bisa call / terima call operator lain baik dalam negri maupun luar negri, juga data service. sampai gua tulis cerita ini gua masih di posisi ini. yah belum tau sampai kapan, tapi planing gua ke depan gua overseas lagi lah,

ok thanks dah baca.

Syamsul Nasution

Huawei MSC (CSOFTX3000)

Posted: Desember 29, 2012 in MSC, Telekomunikasi

Huawei MSC (CSOFTX3000)

 

4.2. MSC

MSC merupakan tempat yang berfungsi sebagai switching center. MSC berperan dalam proses signaling dan switching. MSC terbagi atas tiga jenis, yaitu

· GMSC (Gateway Mobile Switching Center) berfungsi sebagai gateway

· TMSC (Tandem Mobile Switching Center) berfungsi sebagai penghubung antara VMSC atau penghubung antara VMSC dengan perangkat lain seperti SCP dan HLR

· VMSC (visted Mobile Switching Center) berfungsi menghubungkan antar MS, VMSC ini memiliki VLR yang berisi tentang database MS. Selain itu, VMSC terkoneksi ke BSC

MSC menangani beberapa location area. Ketika mobile subscriber (MS) pindah dari satu location area ke location area lain maka akan dilakukan location update dan disimpan di MSC. Location update dapat terjadi karena pada saat mobile subscribe dinyalakan, periodic update, dan location area update.

4.2.1. CSOFTX3000

CSOFTX3000 adalah sebuah MSCe (Mobile Service Switching Center Emulation) produksi Huawei khusus untuk menangani jaringan CDMA2000. Satu cabinet CSOFTX3000 dibagi menjadi empat bagian. Di mana bagian-bagian tersebut adalah IGWB, BAM, Basic Frame, dan expansion frame. IGWB disini berfungsi sebagai billing center sementara, semua data yang harus dicatat oleh sistem selama pelanggan melakukan panggilan disimpan sementara di dalam IGWB. Data-data tersebut dapat berupa data waktu kapan sambungan terjadi, kapan sambungan berakhir, dan berapa lama sambungan yang dilakukan oleh pelanggan. BAM adalah server dari CSOFTX3000. Di mana kita dapat melakukan konfigurasi dan pengesetan dari sistem CSOFTX3000 ini melalui BAM. Sedangkan Basic frame adalah frame yang berisi board-board utama dari sistem CSOFTX3000 ini. Board-board tersebut antara lain adalah WSMU, WSIU, dan WCKI.

Pada MSC server unit Frame, ada beberapa standar yang harus dipenuhi. Standar itu diantaranya adalah:

Tinggi frame adalah 19 inci dan tingginya adalah 9U

Frame terdiri dari 21 slot, di mana empat slot diantaranya adalah slot untuk power (UPWR)

Terdapat pendeteksi temperatur, di mana hal ini akan terhubung dan mengendalikan fan/kipas

CSOFT memiliki sebuah frame yang disebut basic frame. Pada basic frame terdapat clock interface yang berfungsi untuk sinkronisasi, IP interface dan E1 interface. Posisi basic frame pada kabinet adalah pada posisi frame kedua. Untuk lebih jelasnya, posisi basic frame ditunjukkan dapat dilihat pada Gambar 4.1, yaitu pada bagian yang diberi warna abu-abu.

 

Gambar 4.1 Konfigurasi dari sebuah integrated configuration cabinet

Basic frame ini dapat diekspansi atau ditambah oleh sembilan frame lagi. Penambahan frame ini berfungsi untuk menambah besar kapasitas layanan dari jumlah subricber (pelanggan). Sehingga jumlah pelanggan yang dapat dilayani akan semakin banyak.

Basic frame ini terdiri dari dari dua bagian, yaitu bagian depan dan bagian belakang. Bagian depan terdiri dari beberapa board. Board-board tersebut adalah:

· WCDB, board ini berfungsi board ini berfungsi sebagai penyedia sumber management bagi MGW, seleksi outgoing trunk, alokasi nomor TLDN, dan maintance WVDB

· WIFM, board ini berfungsi sebagai pengirim dan penerima paket IP, memproses pesan dari MAC layer dan mendistribusikan pesan dari IP

· WSMU, board ini berfungsi sebagai system management unit; mengatur board-board yang ada pada frame, mengontol kondisi board depan/front board dan board bagian belakang/back board, me-load dan mengatur program dan data dari sistem

· WMCG, board ini berfungsi menyediakan registrasi gateway, internal link status maintenance, status gateway dan kapabilitas auditing, dan pengaturan dari fungsi gateway

· WALU, board ini berfungsi untuk pengontrol indicator dari board-board lain dengan intstruksi dari WSMU

· UPWR, board ini berfungsi untuk penyedia power bagi board-board pada frame. UPWR bekerja dengan mode two-plus-two backup

Sedangkan pada bagian belakang juga terdiri dari board-board. Board-board tersebut adalah:

· WBFI, board ini berfungsi sebagai penyedia physical interface eksternal untuk WIFM

· WISU, board ini berfungsi sebagai Ethernet interface. Pada board ini terdapat dip switch yang berguna untuk meng-set ID dari frame

· WHSC, board ini berfungsi sebagai pengontrol hot-swap board, menyediakan koneksi Ethernet antara WSMU yang aktif dan WSMU dalam kondisi standby. Board ini bekerja dalam mode 1+1 backup.

· WCKI, board ini berfungsi sebagai penyedia stratum-2 dan stratum-3, standar sinkronisasi clock, untuk sistem dari jaringan. Selain itu, WCKI juga berfungsi sebagai pen-stabil atau standar acuan clock dalam sistem.

· UPWR, board ini berfungsi sebagai penyedia power bagi board-board pada frame

4.2.1.1.Expansion Frame

Expansion frame adalah frame yang berfungsi untuk menambah kapasitas dari subscriber. Frame ini berkoordinasi dengan basic frame untuk melakukan proses pelayanan. Pada bagian board depan expansion frame ini terdapat:

· WCSU, board ini bekerja bersama dengan board WCCU menangani call control dan protocol processing

· WSMU, board ini yang berfungsi sebagai pengontrol utama MSC SERVER UNIT frame dan juga berfungsi untuk mengatur pembagian BUS dan mengatur statusnya. Semua infomasi yang diperoleh WSMU kemudian dikirimkan ke BAM untuk diproses.

· WCCU, board ini berfungsi untuk menjalankan fungsi call control dan protocol processing untuk MTP3, M3UA, TUP, BSAP, MAP dan SIP

· WVDB, board ini berfungsi sebagai VLR yang berfungsi untuk menyimpan data-data dari mobile subscriber.

· WBSG, board ini berfungsi untuk memproses paket IP setelah didistribusikan dari WFM Level 1, mengimplementasikan coding/decoding untuk low layer signaling transmission protokol.

· WALU, board ini berfungsi untuk pengontrol indikator dari board-board lain dengan intstruksi dari WSMU.

· UPWR, board ini berfungsi sebagai penyedia power bagi board-board pada frame.

Untuk bagian belakang board terdapat:

Semua frame-frame dalam sebuah cabinet dihubungkan oleh sebuah LAN switch. Dalam sebuah cabinet terdapat dua buah LAN switch di mana yang satunya merupakan cadangan.

4.2.1.2.Structur Logical pada Sistem

Ada beberapa bagian penting pada Structur Logical, yaitu:

SSM (System Support Module): berfungsi sebagai software dan data loadingdevice managementdan komunikasi antar board

IM (Interface Module): menyediakan beberapa physical interface. Contohnya seperti E1, WEPI, dan IP

SLLPM (Signaling Lower Layer Processing Module): menangani lower layer level protokol

SPM (Service Processing Module): pada SPM terdapat service processing unit (WCCU/WCSU), Central Data Base unit (WCDB), VLR Data Base unit (WVDB) dan Media Gateway Control unit (WMGC).

OMM (Operation & Maintenance Module): berfungsi untuk melaksanakan operasi, perawatan, dan pengaturan peralatan.

4.2.1.3.BUS pada CSOFTX3000 BUS pada WSMU

Share Resource BUS: digunakan oleh WSMU untuk me-load, mengatur,, dan menjaga semua board yang ada di setiap subrack. Borard-board tersebt diantaranya adalah WIFM, WEAM, WBSG, WSGU, WCCU, WCSU, WCDB, dan WVDB.

Ethernet BUS: berfungsi untuk mentransmisikan sinyal dan informasi layanan pada signaling process unit dan service process unit (WCDB, WVDB, WCCU, WCSU, WIFM,WBSG). Jika kita lihat susunannya, letak Ethernet BUS dapat kita posisikan seperti yang terlihat pada Gambar 4.2.

 

Gambar 4.2 Posisi Ethernet Bus

Serial Port BUS: berfungsi untuk menangani back board atau back interface. Jika kita lihat pada sistem, letak serial port BUS adalah ada di antara back board dan WSMU dan kemudian WSMU terhubung dengan WALU. WALU itu sendiri berfungsi untuk mengetahui status dari board-board.

BUS pada WEPI

Pada WEPI terdapat BUS yang disebut dengan BUS H110. BUS ini digunakan sebagai media penghantar pada saat WEPI bekerja sama dengan WCSU untuk mengimplementasikan active/standby switchover.

4.2.1.4.Fungsi dari Beberapa Board

WSMU

WSMU adalah singakatan dari Wireless System Management Unit. Merupakan board yang berfungsi sebagai pengontrol utama MSC SERVER UNIT frame dan juga berfungsi untuk mengatur pembagian BUS dan mengatur statusnya. Semua infomasi yang diperoleh WSMU kemudian dikirimkan ke BAM untuk diproses.

WSIU

Pada WSIU terdapat dip switch yang berfungsi saat kita ingin mengonfigurasikan nomor frame yang ada dalam sebuah cabinet. Hubungan antara WSMU dan WSIU adalah WSMU sebagai pengaturnya dan WSIU berfungsi sebagai interfacenya.

WHSC

WHSC berfungsi sebagai pengontrol hot-swap board, menyediakan koneksi Ethernet antara WSMU yang aktif dan WSMU dalam kondisi standby. Board ini bekerja dalam mode 1+1 backup

WEPI

WEPI berfungsi menyediakan narrowband signaling bagi physical interface WCSU, memproses pesan physical layer MTP1(H.101 Bus), mengirim system clock signal dan menyediakan sinkronisasi clock pada frame. Jika kita lihat susunannya dalam sistem adalah sebagai berikut:

WCKI

WCKI adalah sebuah board yang terletak di back board dan menempati slot 13 atau 15 pada basic frame. WCKI berfungsi untuk menyediakan sinyal clock sinkronisasi standar stratum-2 atau stratum-3 secara stabil dan presisi. WCKI bekerja pada model 1+1 hot backup.

WCDB

WCDB berfungsi board ini berfungsi sebagai penyedia sumber management bagi MGW, seleksi outgoing trunk, alokasi nomor TLDN, dan maintance WVDB

4.2.2. KONFIGURASI CSOFTX3000

Ada beberapa langkah yang harus dilakukan dalam melakukan konfigurasi dari CSOFTX3000. Urutan langkah-langkah tersebut adalah:

1. Konfigurasi Hardware Data

2. Konfigurasi Cabinet

3. Konfigurasi Frame

4. Konfigurasi Board

5. Mengaktifkan CSOFTX3000

6. Konfigurasi Local Office Data Configuration

7. Menghubungkan CSOFTX3000 dan UMG8900 dari Sisi UMG8900

4.2.2.1.Konfigurasi Hardware Data Configuration

Sebelum kita melakukan konfigurasi lebih lanjut, ada beberapa hal yang pada awal sekali kita lakukan. Hal tersebut adalah:

Mesin CSOFTX3000 kita set dalam mode offline dengan tujuan data konfigurasi yang tidak akan langsung masuk ke WSMU

Command: LOF:;

Set status format

Command: SET FMT

SET FMT: STS=OFF;

Parameter: STS: Status; ON/OFF. Apabila kita set status ON maka data konfigurasi berada dalam format yang mampu dimengerti oleh peralatan. Sedangkan apabila kita set status OFF maka kita tidak dapat melakukan format data.

4.2.2.2.Konfigurasi Cabinet

Command : ADD SHF

ADD SHF: SHN=0, LT=”UI_HUAWEI”, ZN=0, RN=0, CN=0;

Parameter:

SHN = Cabinet Number, mengindikasikan nomor dari cabinet/subrack

LT = Location Tittle, mengindikasikan letak dari subrack/cabinet dapat diisi dengan karakter

ZN = Position Number, posisi dari rack/cabinet

RN = Row Number, posisi rack/cabinet berdasarkan baris

CN = Column Number, posisi rack/cabinet berdasarkan kolom

4.2.2.3.Konfigurasi Frame

Command : ADD FRM

ADD FRM: FN=0, SHN=0, PN=2;

Parameter:

· FN = Frame Number, mengindikasikan nomor dari frame

· SHN = Cabinet Number, mengindikasikan nomor dari cabinet/rack tempat frame berada

· PN = Position Number, mengindikasikan posisi subrack/frame pada cabinet

4.2.2.4.Konfigurasi Board

Perintah: ADD BRD

ADD BRD: FN=0, SLN=0, LOC=FRONT, FRBT=WCDB, MN=102, ASS=1

ADD BRD: FN=0, SLN=2, LOC=FRONT, FRBT=WMGC, MN=132, ASS=3;

ADD BRD: FN=0, SLN=4, LOC=FRONT, FRBT=WCCU, MN=22, ASS=5;

ADD BRD: FN=0, SLN=10, LOC=FRONT, FRBT=WIFM, MN=133, ASS=11;

ADD BRD: FN=0, SLN=12, LOC=FRONT, FRBT=WVDB, MN=103, ASS=13;

ADD BRD: FN=0, SLN=6, LOC=FRONT, FRBT=WSMU;

ADD BRD: FN=0, SLN=8, LOC=FRONT, FRBT=WSMU;

ADD BRD: FN=0, SLN=14, LOC=FRONT, FRBT=WBSG, MN=134;

ADD BRD: FN=0, SLN=15, LOC=FRONT, FRBT=WBSG, MN=135;

Parameter:

· SLN = Slot Number, mengindikasikan nomor slot dari board

· LOC = Location, mengindikasikan letak dari board di depan(front board) atau belakang (back board)

· FRBT = Board Type, mengindikasikan tipe dari board, dalam konfigurasi saat ini tipe yang di-set yaitu WCDB, WMGC, WCCU, WIFM, WVDB, WSMU, dan WBSG

· MN = Module Number, mengindikasikan nomor modul dari board

· ASS = Assist Slot Number, mengindikasikan board di-set dengan mode Active/Standby, Load Sharing, atau Independent Work

Konfigurasi Board WCDB:

Perintah : ADD CDBFUNC

ADD CDBFUNC: FUNC=TKAGT, WCDBMN=102;
ADD CDBFUNC: FUNC=VDB, WCDBMN=102;
ADD CDBFUNC: FUNC=TK, WCDBMN=102;
ADD CDBFUNC: FUNC=VCIC, WCDBMN=102;

Dengan mengkonfigurasi board WCDB, kita mengatur 4 fungsi CDB diantaranya, 2 fungsi sebagai VDB agent yang mengatur distribusi data-datasubscriber pada board VDB dan 2 fungsi sebagai Trunk agent yang mengatur jalur antar switching.

Konfigurasi FE Port Infromation:

Perintah: ADD FECFG:

ADD FECFG: MN=133, IP=”172.23.0.5″, MSK=”255.255.255.0″, DGW=”172.23.0.5″, EA=FH;

Parameter:

· IP = IP Address dari MGC

· MSK = Subnet Mask dari MGC

· DGW = Default Gateway, dalam hal ini IP dari CSOFTX3000

· EA = Ethernet Attribute; Half duplex 10 MBps, Half duplex 100 Mbps, Full duplex 10Mbps, Full duplex 100 Mbps atau Auto, mengindikasikan mode dari Ethernet

4.2.2.5.Mengaktifkan CSOFTX3000

Proses ini berfungsi merubah CSOFTX3000 ke mode on sehingga data konfigurasi di atas dapat dikirim ke WSMU

Perintah: LON:;

4.2.2.6.Konfigurasi Local Office Data Configuration

Konfigurasi kode area:

ADD ACODE: AC=K’755, AN=”UI-Huawei”, STATCD=0;

Konfigurasi local MSCID:

ADD LOCMSCID: SID=”6403″, SWNO=1, AREACD=K’755;

Konfigurasi informasi MSC (local office):

ADD IOFC: LOT=LOCMSC, IN=FALSE, IN2=FALSE, NN=TRUE, NN2=TRUE, NPC=”1111″, NNS=SP14, STP=TRUE, MCC=K’460, MNC=K’03, LAC=K’755, LNC=K’86, NATIONPREFIX=K’00, DOMESTIC_PREFIX=K’0, SID=”6403″, SWNO=1, SIN=K’460030933331000, TCAP=ANSI, NONENI=NONENN, ENI=ENN;

Konfigurasi VLR:

ADD VLRCFG:;

Konfigurasi national access code:

ADD NACODE: NAC=K’133;

Konfigurasi TLDN pole (routing):

ADD TLDNCFG: PREFLEN=10, IPPLAN=ALTERSEL, ALLOCPLAN=RANDOM;

Konfigurasi TLDN Prefix (nomor routing):

ADD TLDNSEG: PREFIX=K’8613312345, STSUFF=K’6666, ENDSUFF=K’9999, TLDNNM=”88″;

Konfigurasi table/database untuk LAI:

ADD TLDNALLOCNM: TLDNNM=”88″;

Konfigurasi LAI:

ADD LAITLDN: LAI=”460038989″, TLDNNM=”88″;

4.2.2.7.Menghubungkan CSOFTX3000 dan UMG8900 dari Sisi UMG8900

Konfigurasi MGW:

Perintah: ADD MGW

ADD MGW: MGWNAME=”MGW_UI_1″, TRNST=SCTP, CTRLMN=132, MGWDESC=”MSCe-To-MGW-UI”, DEVNAME=”172.23.0.6:2945″, ENCT=NSUP;

Konfigurasi H248LINK

Perintah: ADD H248LNK

ADD H248LNK: MGWNAME=”MGW_UI_1″, TRNST=SCTP, LNKNAME=”MGW_H248LNK_1″, BSGMN=134, SLOCIP1=”172.23.0.5″, SLOCPORT=2945, SRMTIP1=”172.23.0.6″, SRMTPORT=2945;

ADD H248LNK: MGWNAME=”MGW_UI_1″, TRNST=SCTP, LNKNAME=”MGW_H248LNK_1″, BSGMN=134, SLOCIP1=”172.23.0.5″, SLOCPORT=2946, SRMTIP1=”172.23.0.7″, SRMTPORT=2946;

 

Belajar Signaling SS7

Posted: Desember 29, 2012 in SIGNALING, Telekomunikasi

Berikut ini tulisan belajar signaling SS7 dan SIGTRAN yang saya share dan jelaskan secra global saja, semoga yang sedang belajar signaling bisa memahami, langsung saja.

SS7 adalah protokol signalling yang yang out-of-band yang menyediakan pembangunan hubungan bagi telekomunikasi yang advanced. Out of band artinya, kanal/channel signalling dengan kanal/channel komunikasi terpisah antara satu dengan yang lain. Contoh yang jelas adalah feature yang didukung oleh SS7, termasuk Incoming Caller Identification (Caller ID), roaming, WINS (wireless Intelligent Network) service seperti layanan pra-bayar/pre-paid dan pasca bayar/post-paid. Sedangkan DTMF merupakan contoh In-Band Signalling. Terminologi sederhana dari signalling adalah proses pengiriman controll information antar network elements.

Common Channel Signalling Saat signalling information dari voice atau data communication di kirimkan melalui network yang terpisah dengan voice/data channel nya, sering kali di sebut dengan common channel signalling (CCS). Implementasi pertama di USA tahun 1960. Saat itu di sebut Common Channel Signalling System #6 (CCS6).

Physical SS7 Network Jaringan SS7 terpisah dari network voice yang dia support. Yang terdiri dari beberapa node atau Signalling Point yang yang nantinya akan menyediakan fungsi-fungsi yang spesifik. Pada signalling network, terdiri dari tiga Node utama : Service Switching Point (SSP), Signal Transfer Point (STP) dan Signal Control Point (SCP). Ketiga node-node utama tersebut pada umumnya terhubung point-to-point dengan bit rate 56 kbps. Data dilewatkan melalui jaringan tersbut dengan teknologi packet-switching. Ketiga node tersebut harus mampu create, receive dan merespon SS7 message.

A. Service Switching Point (SSP)

Pada awalnya SSP adalah digital switches yang menyediakan akses voice dan call routing yang sudah ditambahi dengan hardware interface dan software yang berhubungan dengan aplikasi SS7. Pada umumnya SSP merupakan Local Exchange (LE) atau Interexchange circuits switches dan mobile switching centre. Dalam dunia GSM, MSC berperan sebagai SSP di SS7 Network. SSP memiliki dua fungsi utama :

  1. Menghubungkan dengan set-up dan memutuskan hubungan, menggunakan ISUP messaging. Saat SSP harus membangun hubungan (set-up) ke switch lain, SSP harus mampu mem-formulasikan dan mengirim SS7 message dengan informasi pengalamatan yang tepat.

Membuat dan me-launch SS7 message yg telah dipersiapkan ke database external

B. Signal Control Point (SCP)

SCP adalah parameter/kontrol yang dihasilkan oleh interface untuk database aplication atau service control logic. Message/pesan yang dikirimkan dari SSP ke SCP digunakan untuk mendapatkan routing information dan service information. SCP bukanlan sebuah aplikasi data base melainkan menyediakan akses ke database aplication. Contoh, pentranslasian database dari toll-free (800-) didukung oleh SCP. Saat ada panggilan toll-free, switch LE akan menunda proses pemanggilan dan mengirim message ke SCP untuk mendapatkan jaringan/circuitCarrier Identifitaion Code (CIC) yang tepat agar panggilan dapat di route-kan ke switch yang tepat. Tanpa SCP, LE tidak akan tahu nomor 800 tersebut atau kemana dia akan di route kan. Beberapa produsen STP telah mulai menyediakan aplikasi database pada STP nya. Sehingga SCP dapat difungsikan juga sebagai STP. Pada SS7 network, aplikasi ini masih terlihat seperti SCP database dan sama network functions routing.

C. Signal Transfer Point (STP)

Fungsi utama dari STP adalah switch dan address SS7 messages. SS7 message tidaklah berasal atau ditujukan ke STP. Tetapi STP me-relay SS7 message seperti packet switch atau message router ke node SS7 lainnya agar dapat berkomunikasi. Beberapa SSP atau SCP memerlukan akses untuk signalling sebelum terhubung ke sebuah STP.

Fungsi-fungsi utama dari STP :

- Sebagai physical connection ke SS7 network
-Sekuritas melalui proses gateway screening

-Message routing melalui Message Transfer Part (MTP)
-Message addressing melalui Global Title Translation (GTT)

Biasanya STP-STP dioperasikan secara berpasangan sebagai cadangan/redundancy. STP-STP biasanya ter-interkoneksi secara hierarki dimana STP lokal menyediakan akses ke SSP. Kemudian STP lokal terhubung ke sebuah gateway STP, yang mana gateway STP ini menyediakan akses ke jaringan lain atau aplikasi data base.

Protokol SS7 Untuk memahami SS7, diperlukan pemahaman mengenai Open System Interconnection-OSI layer. Berikut lapisan-lapisan dari OSI layer :

Message Transfer Part (MTP) Dalam SS7, tiga layer pertama menjadi Message Transfer Part (MTP).

MTP level satu lebih spesifik ke physical, electrical dan memiliki karakteristik fungsional signalling data links. Beberapa interface pada untuk signalling SS7 adalah DS0A dan V.35.

MTP level dua menjamin transmisi yang reliable dengan menggunakan teknik seperti message sequencing dan frame check sequence seperti Cyclic redundancy Check (CRC). Berikut format dari MTP level dua:

  • Flag (F)
    • indikasi awal dan akhir dari signal unit
  • Cyclic Redundancy Chech (CK)
    • 16 bit checksum yang harus sama antara originating dan terminating
  • Signaling Information Field (SIF)
    • Indikasi informasi info routing dan signaling yg digunakan di layer atasnya
  • Service Information Octet (SIO)
    • indikator service dan versi yang akan di gunakan oleh layer diatas nya
  • Length Indicator (LI)
    • menampilkan banyaknya oktet pada message tersebut
  • Forward Indicator Bit (FIB)
    • Digunakan u/error recovery dan nomor portabel u/ mengindikasikan data base siap di query
  • Forward Sequence Number (FSN)
    • indikator sequence number signal unit
  • Backward Indikator Bit (BIB)
    • Untuk error recovery
  • Backward Sequence Number (BSN)
    • digunakan untuk acknowledge-receipt dari signal unit.

SS7 menggunakan 3 tipe untuk Signaling Unit:

  1. Message Signal Unit; digunakan sebagai jalan semua data informasi termasuk yg berhubungan dengan call controll, network management dan maintenance. Signal Unit (SU) ini mensupport juga information exchange yang diperlukan untuk service/layanan yg diberikan seperti Caller ID
  2. Link Status Signal Unit; menyediakan link status indication, sehingga link dapat di monitor dan system akan tahu kapan link out of service
  3. Fill-In Signal Unit; menampilkan pengecekan error dan akan di transmit kan saat MSU atau LSSU ada.

MTP level tiga menyediakan fungsi sebagai message address Routing dan network Management.

Network element pada ANSI SS7 didasarkan pada pengalamatan yang biasa di sebut point codes. Sebuah point code terdiri dari 9 digit yang terbagi dalam 3 group : XXX-YYY-ZZZ

XXX = Network Identification

YYY = Cluster Member

ZZZ = Member Number

tiap nomor berasal dari 8 digit, jadi range nya dari 000-254. Semua elemen network di SS7 ditandai (dialamati) dengan sebuah POINT CODE.

Untuk point code dari perangkat Huawei, point code-nya berformat hexadesimal, sedangkan Alcatel berformat 4-3-4-3.

Ditiap STP diberikan unique point code untuk keperluan network routing. STP juga menggunakan spesial addressing point code yang di sebut alias point code yang digunakan untuk me-route kan message ke STP berikutnya. Sebuah alias point code di berikan ke STP -STP yang saling adjacent secara langsung dengan tujuan agar kedua STP tersebut saling mengenali.

GT (Global Title) merupakan addressing yang di gunakan untuk pengiriman antar SSP (misal dari MSC ke HLR; originating MSC ke Terminating MSC dll). Ketika sebuah MSC ingin berkomunikasi dengan HLR, maka MSC tersebut akan menggunakan GT dari HLR yang ditujunya. Hubungan dari MSC ke HLR nantinya akan melalui beberapa STP. Oleh STP yang terhubung langsung (paling dekat) dengan MSC, GT HLR yang berasal MSC tadi akan diterimanya dan akan di translasi kan ke point code STP berikut nya. Komunikasi antara MSC dengan STP terdekatnya tadi menggunakan point code masing-masing dimana point code MSC sebagai OPC (Originating Point Code) dan point code STP sebagai DPC (Destination Point Code).

MTP level 3 ini juga memiliki critical network management functions yang terbagi menjadi tiga yaitu:

  • Link Management => menyediakan manajemen local signalling link seperti link activation, deactivation dan restoration.
  • Route Management => provide exchange of signalling route availability between signalling points using predefined procedures, such as transfer prohibited, tranfer restricted , etc.
  • Traffic management => mengatur pengaturan trafik-trafik yang out-of-service.

Nah berikut ini contoh diagram analyzer untuk SS7:

 

 

dan berikut ini contoh implentasi ss7 dalam teknologi GSM, protocol mana saja yang harus menggunakan SS7 :

Kesimpulan dan point penting dari ss7 :

  1. SS7 adalah teknologi signaling yang berfungsi menghubungkan perangkat / node contoh : RNC ke MSC, MSC ke HLR, SGSN ke HLR dan MSC ke MSC
  2. SS7 mempunya pysical koneksi seperti E1 dan untuk 1E1 tersebut bisa dipakai untuk beberapa time slot yang size nya 64kbps, atau kita sebut SLC
  3. SLC di SS7 bisa banyak, setiap gabungan SLC itu kita sebut LINKSET.
  4. protocol di SS7 antara lain MTP1 (ini benar2 pysical nya seperti E1 nya), kalau ini mati ya ke atas nya dah pada tewas semua. trus ada MTP2, (ini berfungsi sebagai error checking dan frame analis, MSU, FISU semua ada disini, MSU itu bray frame signaling yang berisikan OPC dan DPC intinya kebutuhan informasi yang nantinya akan di routingkan), trus ada lagi MTP3 (nah setiap node/perangkat yang menggunakan SS7 pasti punya POINT CODE, PC ini mirip2 IP addresss gitu lah, nah fungsi MTP3 ini adalah meroutingkan kemana paket2 harus di teruskan). lalu ada SCCP (GT / global title ini ada disini bray), trus ada ISUP ini untuk signaling user part dan ada MAP ini biasa nya di pakai signaling ke HLR karena sudah level aplikasi.

 

Lanjut Bray,

SS7 ini udah teknologi lama, seiring berkembang nya teknologi IP maka si ss7 ini mulai di kembangkan lagi, yaitu dengan teknologi SIGTRAN signaling transmisi.

Signaling Transport (SIGTRAN) merupakan standar Internet Engineering Task Force (IETF) untuk mentransmisikan signaling Public-Switched Telephone Network (PSTN) yaitu Signaling System 7 (SS7) melalui jaringan IP

kaya gini lah kira2 protocol nya bray kalau di banding kan :

 

  • Layer User Adaptation (UA) mengenkapsulasi signaling protokol yang berbeda untuk jaringan sirkit untuk ditransmisikan melalui jaringan IP menggunakan SCTP
  • Penggunaan M2PA memungkinkan untuk memaintain topologi original dari jaringan SS7
  • network element contohnya: Signaling Transfer Points (STPs), pointcodes
  • Perubahan yang terjadi : transportasi signaling terjadi over IP, tidak lagi melalui tradisional link 64kbps
  • žMTP2-user Peer-to-peer Adaptation layer (M2PA) merupakan protokol SIGTRAN yang mentransportasikan SS7 MTP signaling messages over IP dengan SCTP.

žMTP2-User Adaptation layer (M2UA) mengirimkan signalling message antara layer MTP3 pada media gateway controller (MGC) dan layer MTP2  pada SGW. Bekerja secara client-server, dimana MGC (IP node) sebagai client dan SGW sebagai  server. Saat migrasi dari jaringan SS7, jaringan IP akan memaintain banyak aplikasi dari jaringan telp tradisional seperti toll free, prepaid, dan roaming. SIGTRAN working group membuat hal ini dimungkinkan dnegan mendefinisikan SUA yang tidak hanya menyediakan jaringan IP dengan kemampuan tsb, tetapi juga mengeliminasi beberapa stack dibandingkan protokol UA yang lain sehingga penggunaan BW akan lebih efisien.
ž3GPP memilih menggunakan M3UA sebagai standar signalling protocol  pada sentral UMTS dibandingkan SUA karena SUA tidak dapat mentransport message ISUP
thanks sehitu aja yah bray semoga buat lo lo yang lagi belajar SS7 punya gambaran lah tentang signaling.
Cheers,
Syamsul Nasution

Belajar Telekomunikasi

Posted: Juni 10, 2012 in Basic Telko

KOMPONEN GSM

 Komponen GSM  

Gambar  Sistem GSM

Arsitektur GSM Terdiri dari: –  MS (Mobile System) –  BSS (Base Station System) –  NSS (Network Switching System) – OSS(Operation and Support System)  MS ( Mobile Station ) Merupakan perangkat komunikasi wireless yang menggunakan prinsip transmisi pada interface radio dan SIM ( Subscriber Identity Modul ) yang berhubungan dengan pelanggan (subscriber). MS terdiri dari: # ME (Mobile Equipment). ME terdiri dari fungsi radio dan interface pemakai dan ke peralatan terminal yang lain. ME mempunyai idenifikasi serial number yang disebut IMEI. # SIM (Subcriber Identity Module) Berisi informasi mengenai user yang dapat digunakan dengan ME.  Yang digunakan untuk acces ke GSM berupa smart card yang dapat mengontrol bermacam fungsi.  Nomor yang terdapat di SIM antara lain IMSI, TMSI, Ki, Algorithm A3 dan A8, memory nomor telepon, PIN. Komunikasi yang terjadi dari MS ke BTS ( Base Transciever Station ) adalah komunikasi secara radio yang melalui gelombang elektromagnetik, dan di transmisikan dari antena MS menuju antenna penerima pada BTS melalui interface udara ( Air Interface ). Air interface channel  untuk GSM dibagi menjadi dua:

- UP Link ( MS ke BTS ) 890 – 915 MHz

-Down Link ( BTS ke MS ) 935 – 960 MHz

BSS ( Base Station System )

BSS terdiri dari:

BTS (Base Transciever Station )

Setiap BTS meng-coverage suatu area tertentu. Berikut adalah geographical BTS:

  • Cell            : Suatu wilayah yang dilayani oleh satu BTS. MS akan membedakan setiap Cell yang ada dengan menggunakan BSIC ( Base Station Identification Code ).
  • Local Area ( LA )  : Gabungan dari beberapa cell. Satu local area juga merupakan daerah dimana pagging message dipancarkan untuk mencari subscriber yang dituju. Dalam satu  LA terdapat lebih dari satu BTS, tergantung dari satu atau lebih BSC dan masih dalam satu MSC/VLR.
  • PLMN  service area ( Public Line Mobile Network ) : Gabungan dari beberapa LA yang menyediakan service telekomunikasi.
  • GSM service area  : Daerah layanan interkoneksi jaringan-jaringan GSM.
  • MSC service area  : Merupakan area geografi dari jaringan GSM yang area coverage-nya dilayani oleh satu MSC. Setiap MS dapat memasuki area ini apabila telah terdaftar pada VLR ( Visitor Location Register )

BTS adalah perangkat radio yang diperlukan untuk melayani satu cell. BTS berisi system antenna, RF Power Amplifier dan Peralatan Signalling digital.  IM3 menggunakan BTS produk dari Ericcson disebut RBS            ( Radio Base Station ) dengan versi system:

  • RBS 200 untuk GSM 900 dan GSM 1800
  • RBS 2000 untuk GSM 900, 1800, 1900.

Tiap-tiap RBS beroperasi saat diberi sepasang frekuensi.  Satu frekuensi untuk perpindahan sinyal ke MS dan satu lagi untuk menerima sinyal dari MS.

Prosesing sinyal pada RBS meliputi:

  1. Equalization                      : Menciptakan sebuah mode pada air interface dan menghitung kemungkinan terbesar pentransmisian data.
  2. Ciphering / Deciphering    : Membantu transmisi meminimalisasi eavesdropping ( penyadapan ).
  3. Relization Diversity          : Untuk memilih sinyal yang terbaik dari 2 buah sinyal yang diterima.
  4. Channel Coding / Decoding: Mengoreksi bit-bit error pada air interface.
  5. Interleaving / Deinterleaving: Memisahkan bit-bit consecutive (berurutan) sehingga dikirim secara in-consecutive ( tak berurutan / acak ).
  6. Modulasi / Demodulasi     : Proses pengambilan dan peletakkan informasi pada radio frekuensi yang membawanya ke receiver ( ex. MS ).
  7. Mengontrol channel radio yang digunakan untuk transmisi air interface.

RBS mempunyai 3 sektor utama. Ketiga sector tersebut adalah sector 1, sector 2, dan sector 3. Agar tidak terjadi interferensi, frekuensi masing-masing sector tidak boleh sama. Untuk IM3 menggunakan RBS2202.

Arsitektur RBS2202:

  • CDU ( The Combine and Distribution Unit):

Meng-kombine antenna dengan TRU. Combine dilakukan dengan tujuan untuk efisiensi antenna, sebab bila tidak dilakukan combine, maka satu TRU akan membutuhkan satu antenna.  Hal itu akan menjadi tidak efisien/pemborosan.

  • TRU ( Transciever Unit )

Menghandel 1 carier yang terdiri dari 8 timeslot dalam 1 TDMA frame.  Untuk radio transmitting, radio receiving, power amplification, dan sinyal prosesing.  Dalam 1 RBS maksimum terdapat 12 TRU. Dalam 1 TRU  terdapat  terdapat 8 sub time slot (kanal) dan 8 sub time slot tersebut tidak semuanya digunakan untuk voice tetapi ada 2 sub timeslot yang digunakan untuk signaling yaitu: MBCCH  dan SDCCH.

  • ECU (Energy Control Unit)

Mengawasi dan mengontrol DC power Equipment ( PSUs) , dan meregulasi kondisi lingkungan di dalam cabinet.

  • PSUs (Power Supply Unit)

Mengubah tegangan AC (220V) menjadi tegangan DC (24V) sebagai sumber tegangan utama.

 

  • DXU ( Distribution Switch Unit )

Menyediakan hubungan antara RBS dan BSC melalui antenna microwave. DXU juga mengkontrol TRU dan CDU, juga menyediakan sinkronisasi bagi RBS.

Antena yang digunakan pada tower RBS adalah antenna microwave dan antenna diversity, serta antenna main.

Multiframming pada BTS

Multiframe ini terdapat pada TRU / TRX yang menyediakan alokasi channel untuk jalur pembicaraan bagi subsciber.

BSC ( Base Station Control )

BSC merupakan penghubung antara sejumlah RBS dan MSC.  Satu atau lebih BSC pada system switching dapat dikontrol oleh satu MSC. BSC mengontrol tiap BTS/RBS untuk transmiting performance dan pelaksanaan handover ke sel lain pada area BSC itu sendiri. Handover adalah kemampuan MS untuk mendapatkan kualitas sinyal yang baik saat MS berpindah dari satu cell ke cell yang lain..

Handover BTS/RBS ada dua jenis:

  • Handover Intra cell     : Handover yang terjadi dalam cell yang sama.
  • Handover Inter cell     : Handover yang terjadi dalam cell yang berbeda.

Adadua metode yang digunakan untuk menghubungkan antara TRC dan BSC dalam BSS Ericson yaitu:

q  BSC/TRC merupakan kombinasi antara BSC dan TRC pada AXE yang  sama.  Sistem ini cocok untuk kapasitas aplikasi medium dan high,  contoh area jaringan urban dan sub urban. Bagian ini dapat menghandle sampai 1020 TRX.15 BSC remote dapat dihandle dari satu BSC/TRC

q  Standalone BSC dan standalone  TRC.

Standalone BSC ( tanpa transcoder) digunakan untuk aplikasi low dan suburban.  BSC ini dapat menghandle sampai 300 TRX. Sedangkan standalone TRC dapat menghandle 16 BSC remote.

Fungsi utama BSC selama panggilan antara lain:

ü  Locating   : Mengevaluasi hubungan radio ke MS dan jika diperlukan, menyarankan handover ke arah yang lain. Keputusan handover ini berdasarkan hasil pengukuran  kualitas sinyal yang diterima oleh MS.

ü  Handover  : Fungsi locating yang menyarankan untuk handover, BSC secara otomatis akan mengambil alih sel mana yang akan di handoverkan dan akan memulai proses handover.  Switching ini dilakukan untuk memberikan kualitas sinyal yang baik ke MS.

ü  Frekuensi hopping          : Pengacakan frekuensi yang dilakukan pada suatu sector dengan tujuan untuk mencegah interferensi akibat frekuensi yang hampir sama dari BTS/RBS lain.

ü  Dinamyc Power Control di MS dan RBS: BSC memperhitungkan output power untuk MS dan BTS/RBS berdasarkan pada pengukuran yang diterima dari uplink dan downlink setiap 480 ms untuk mempertahankan kualitas hubungan yang baik.

Fungsi lain BSC:

  • Radio Network Management  : Berisi data ( cell data ) dan system informasi untuk cell di BSC
  • Radio Base Station Management: Untuk konfigurasi Matching Cell dengan peralatan RBS, yaitu system antara RBS dan BSC harus sama begitu juga untuk pemilihan hardwarenya (satu produk).  RBS Management juga menangani software RBS dan pemeliharaan perangkat RBS.
  • Transcoding  and Rate Adaption : Transcoding merupakan proses konversi informasi dari PCM coder (A/D converter) ke informasi bicara dalam GSM Coder.

Rate Adaption melakukan konversi informasi pada sisi penerima dari MSC/VLR pada kecepatan 64 Kbps menjadi 16 Kbps yang terdiri dari 13Kbps untuk traffic dan 3Kbps untuk informasi signaling.  Jika tanpa Rate Adaption atau penyesuaian kecepatan Link ke BSC akan menjadi empat kali kemampuan kecepatan data.

  • Tranceiver Handling : Menghandle signaling ke radio di RBS.
  • BSC memanage semua fungsi radio GSM dari Ericson GSM system, meliputi:

q  Mengontrol radio Channel

q  Pergerakan / perpindahan MS

q  Mengumpulkan data konfigurasi cell

q  Mengumpulkan data statistic mengenai jumlah panggilan, handover dan traffic per cell.

 

Hardware BSC hampir sama dengan hardware MSC, yang membedakan hanyalah command pada software (APZ). Didalam BSC terdapat beberapa cabinet antara lain:

  1. 1.      ETC5 ( Exchange Terminated Circuit )

Dalam hardware ini terdapat  DDF ( Digital Data Frame ).  DDF pada BSC akan terhubung dengan menggunakan kabel E1 dengan DDF dari transmission kabinet.

2.   GS (Group Switch)

Didalam GS terdapat transcoder.Transcoder dignakan untuk merubah kecepatan pentransmisisan dari 16 kbps menjadi 64 kbps.  GS juga terhubung secara langsung dengan menggunakan kabel RP4 pada CP (Control Processor).  Spesifikasi transcoder yang digunakan oleh IM3 Surabaya adalah TRAR5B.  Dalam satu magazine TRAR5B  terdapat 16 Board.  Setiap satu board terdapat 12 TRX (1 E1).  Satu TRX terdiri dari 2 timeslot dan sama dengan 8 subtimeslot.  Jadi dalam satu board terdapat ( 12 TRX * 2 ts * 16 Board =384 ts) timeslot dan mampu menghandle (384 * 8 = 3076)  kanal pembicaraan.

3.   ET155 (Ekstension Terminal)

ET155 akan tersambung dengan ET155 MSC melalui  kabel fiber optic yang dalam satu corenya terdapat 63 E1. Ada 3 core (yang terhubung pada STM) yang menuju ke MSC. Pada masing-masing board diidentifikasikan dengan sebuah card. Untuk komunikasi antar card pada ET155 digunakan EMB (Extention Module Bus) yang dikontrol oleh EM controller menuju ke RP .  Sedangkan istilah E1 pada ET155 adalah EMB.

 

Hardware Transmission

Pada cabinet transmisi terdapat kabel 2 Mbps yang digunakan untuk membawa informasi dari BTS/RBS ( jika RBS dan Transmisi berada dalam satu lokasi / indoor RBS ). Informasi tersebut akan terkoneksi ke sejumlah komponen yang ada seperti:

  • Antena

Antena ini yang akan menerima maupun mentransmisikann sinyal dari dan ke BTS/RBS.

  • Radio

Perangkat radio akan menerima sinyal berupa informasi dari antenna yang akan diolah dalam cabinet transmisi. Informasi dari radio ini, akan tersambung dengan perangkat lain melalaui kabel.

  • SMU ( SMU 16 X 2 )

Yang mengindikasikan bahwa ada 16 kabel E1 yang tersambung ke SMU. Sedangkan dalam satu SMU itu sendiri terdapat redundant yang digunakan sebagai back up / duplikasi dari SMU yang pertama.

  • MMU ( Modem )

Penghubung antara SMU dengan DDF.

  • DDF ( Data Distribution Frame )

DDF sebagai perantara informasi yang bersifat sementara sebelum di proses oleh BSC lebih lanjut.

 

 

  TRC ( Transcoder )

Digunakan untuk mengekstrak kecepatan transmisi dari 16 kbps menjadi 64 kbps ( dalam setiap sub time slotnya ) , hal ini dilakukan karena MSC/VLR hanya bisa mendeteksi kecepatan 64 kbps.   Fungsi TRC diatas disebut rate adaption ( penyesuaian kecepatan ).  Fungsi lain dari TRC yaitu Transcoding yang merupakan proses konversi dari PCM coder ( analog-to-digital converter ) ke dalam GSM coder. Sehingga dari kedua fungsi tersebut trancoder lebih dikenal dengan TRAU( Transcoding and Rate Adaptation Unit) Satu TRC dapat  menghandle sampai 15 BSC pada konfigurasi standalone.

TRAU

Ts1

Ts2

0

1

2

3

0

1

2

3

16kbps           16kbps

Masing-masing ts (timeslot) terdiri dari 4 subtimeslot dimana satu timeslot nya 64 Kbps ( PCM link ).  Sehingga satu subtimeslot adalah 16 Kbps sebagai 1 kanal pembicaraan (voice channel).Gambar 4.5  Transcoder Unit

4.1.3 NSS (  Network Switching System )

Switching System yang digunakan adalah AXE 21 switch system dan  mempunyai unit-unit fungsional sebagai berikut:

 

  MSC (Mobile Service Switching Center)

MobileServiceSwitchingCentermemiliki fungsi penting dalam switching komunikasi pada seluruh MS pada MSC area.  Seperti setting up, routing, supervising calls ke dan dari MS.

MSC yang digunakan di INDOSAT Surabaya ada enam MSC yaitu 2 MSC Ericsson , 2 Alcatel,  2 Nokia.

Fungsi MSCantara lain:

  1. Membentuk koneksi traffic dan signaling.
  2. Billing             : Pencatatan durasi pembicaraan
  3. Pagging           : Proses pemberian sinyal ke BTS yang mempunyai frekuensi yang sama dengan frekuensi sinyal yang dikeluarkan MSCnya dengan tujuan untuk mencari subscriber yang dicalling.
  4. Handover        : proses ini juga dapat terjadi di MSC.  Proses handover pada MSC disebut dengan  handover inter MSC.
  5. Acces ke data base ke PLMN (VLR,HLR,EIR).
  6. Melaksanakan fungsi security .

MSC berisi Data Transmision Interface (DTI), yang diimplementasikan pada fungsi interworking GSM ( IWF ).  DTI berfungsi untuk menghandle data seperti konversi data rate.

MSC/VLR diimplementasikan pada AXE sebagai berikut:

  • MSS ( Mobile Switching Subsystem )

Menghandle dan mengawasi call set up, pendukung charging diimplementasikan untuk fungsi gateway dan roaming pada GMSC.

  • MMS (MobileMobility and Radio Subsystem )

Menghandle location up date, authentication dan chippering untuk semua akses radio.  Menghandle permintaan handover dan paging.  Menyimpan informasi tentang cell dan BSC.

  • MDS ( Mobile Data Subsystem )

Menyimpan data yang diterima oleh HLR

  • SHA ( Short Message Service Subsystem )

Berisi fungsi Short Message Service (SMS)

 

GMSC (Gateway MSC)

adalah titik pertemuan yang menghubungkan dua atau lebih jaringan (network). Seperti PSTN dan ISDN. GMSC berisi fungsi pencarian informasi lokasi dari HLRnya  subscriber, peroutingan kembali panggilan ke MS berdasarkan informasi lokasi yang ditunjukan dari HLR.

 

 VLR (Visitor Location Register)

VLR akan menyimpan informasi mengenai lokasi MS dalam service area.  Informasi yang disimpan berupa data base sementara untuk subscriber yang roaming dalam area satu  MSC.  Selama MS aktif maka VLR akan menyimpan semua parameter dari MS tersebut yang diperlukan untuk melaksakan fungsi call handling.

Fungsi VLR antara lain:

  1. Call handling
  2. Call setup
  3. Location Registrasi
  4. Authentication
  5. signaling
  6. Data Base Switching System

VLR berfungsi sebagai data base yang berisi informasi seperti lokasi area untuk semua MS yang berlokasi di MSC service area.VLR akan menyimpan data-subsciber baik yang bersifat mandatory atau optional, yaitu:

v    IMSI   (InternationalMobileSubcriber Identity)

v    MSISDN (Mobile Station Internatioanl ISDN number)

v    Supplementary Service

v    Rand /Sres dan Kc

v    MSRN (MobileSubcriber Roaming Number)

v    TMSI   (TemporaryMobileSubcriber Identity)

v    Lokasi area dimana MS terdaftar.

v    MSC address yang menandakan MSC area dimana MS terdaftar

  HLR (Home Location Area)

Data base HLR menyimpan data permanen dan memanage semua subscriber dengan spesifik operator.  HLR menyediakan data yang diperlukan untuk meroutingkan panggilan ke semua MS yang mempunyai alamat di MSC area tersebut, ketika mereka melakukan perpindahan atau roaming ke area lain atau ke jaringan GSM yang lain.  Pada saat SIM card baru diaktifkan maka secara otomatis nomer yang digunakan akan terdaftar di HLRnya operator.

HLR menyediakan current location data yang diperlukan untuk pagging MS saat incoming call.  HLR juga bertanggung jawab untuk menyimpan dan menyediakan authentication (keabsyahan data) dan encryption parameter yang diperlukan MSC.  HLR yang digunakan di INDOSATsurabayaadalah produk dari Alcatel dan Ericsson.

Data permanent yang disimpan di HLR :

  1. IMSI
  2. MSRN
  3. MS category ( IMEI)
  4. Batasan Roaming
  5. Supplementry service seperti call forwading
  6. Authentication Key

Data sementara yang disimpan di HLR:

  1. LMSI (Local MS Identity)
  2. RAND / SRES dan Kc, data yang berhubungan dengan authentication dan ciphering
  3. MSC address
  4. VLR address
  5. Message Waiting Data (digunakan untuk SMS)

 

4.1.3.5.  AuC (Autentication Center)

AuC data base dihubungkan ke HLR, AuC ini mendukung HLR dengan parameter yang authentic dan kunci ciphering dengan cara membangkitkan triplet.  Dengan triplet ini , Ciphering dari pembicaraan, data dan signaling melalui air interface ditampilkan. Keduanya menyediakan fungsi security (kunci autentikasi rahasia Ki subscriber). Triplet terdiri dariRAND, SRES dan Kc.

-                      AuC memproduksiRAND

-                       SRES dibentuk dari RAND,Ki,A3

-                       Kc dibentuk dari Ki,RAND dan A8

Proses Ciphering atau pengkodean:

  1. MSC mengirim pesan dan Kc ke RBS
  2. RBS meneruskan ke MS
  3. MS mengkodekan pesan
  4. MS mengirim pesan yang telah dikodekan ke RBS
  5. RBS mengdekodekan pesan
  6. RBS mengirim pesan yang lengkap ke MSC

 

4.1.3.6. EIR (Equipment Identity Register)

MSC/VLR akan meminta EIR untuk mengecek status MS.  Tiap peralatan GSM  memiliki nomer identitas yang disebut IMEI dalam hardware.

Pada saat MS digunakan untuk mengakses jaringan, peralatan mengirim nomor ini ke jaringan yang akan mengecek nomor tersebut.  Jika peralatan tersebut dilaporkan hilang maka akses ke jaringan tidak dapat dilakukan.  Nomer dari seluruh peralatan yang hilang disimpan dalam EIR.  EIR dihubungkan ke VLR melalui S7 network dan menggunakan MAP signaling.

GWU / DTI (GSM interworking Unit/Data Transmision Interworking)

Menyediakan interface untuk fax dan komunikasi  data.  Fungsi dari DTI yaitu sebagai modem dan penyesuaian fax serta kemampuan untuk menyesuaikan kecepatan.  Sebelum ada DTI fungsi ini dijalankan oleh GIWU.  Melalui DTI pelanggan dapat menggunakan alternative antara jalur bicara maupun data dalam  satu call yang sama.

Fungsi GWU:

- Menghubungkan lingkungan eZONER dengan Internet dan E-mail Servers, seperti untuk:

•Membaca E-mail

•Mendengarkan Voice Mail

- Menyediakan WEB dan WAP access ke eZONER Bersamaan dengan e-mail routing  dan SMS services.

 Additionals Functional Elements

Adabeberapa perangkat pilihan tambahan yang dapat dikonfigurasikan ke Swtching System.  Perangkat tersebut adalah:

-         MessageCenter(MXE)

-          Mobile Intelligent Node (MIN):

-          BillingGate Way(BGW)

-         Service Order Gate Way(SOG)

 OSS (Operation and Support System)

OSS merupakan satu kesatuan fungsi dari jaringan monitor operator dan mengontrol system Network elemen (NE). NE pada jaringan GSM yang menyebar luas dapat disentralisasikan dan dapat diremote control oleh O&M secara serentak dari semua NE. Elemen – elemen jaringan yang dikontrol olehOSSantara lain:

  • MSC ( Mobile Switching Center )
  • BSC ( Base Station Controller )
  • RBS ( Radio Base Station )
  • VLR ( Visitor Location Register )
  • EIR ( Equipment Identity Register )
  • AUC (AutenthicationCenter)
  • MIN ( Mobile Intelligent Network Node )

OSSdapat di monitor melalui 2 level pengaturan jaringan secara terpusat oleh NMC dan OMC.

ü  NMC (NetworkManagementCenter)

Staff  NMC dapat  berkonsentrasi pada system secara menyeluruh.

ü  OMC ( OperationalManagementCenter)

OMC berkonsentrasi pada system secara regional atau sebagian sehingga hanya berkonsentrasi pada permasalahan regional saja.

APLIKASI OSS

Aplikasi Management  Kesalahan

Yaitu mengumumkan alarm yang terhubung pada semua NE untuk mengawasi dan mengambil tindakan pada alarm. Peralatan yang tersedia pada manajemen kesalahan OSS antara lain:

Network Alarm Status Presentation ( Alarm Status Viewer )

Seluruh alarm mulai OSS, AXE nodes, RBS dapat dirutekan pada OSS. OSS hanya akan menerima alarm dari NE, jika alarm dari NE tersebut sesuai dengan standar yang diinginkan oleh OSS. Alarm dapat diperlihatkan diatas peta grafis dari area operasi yang disebut Network Status Presentation( NSP ).

Selanjutnya alarm diperlihatkan pada NE yang dibuat. Simbol yang berbeda digunakan untuk menggambarkan perbedaan kategori alarm.

 

Kategori alarm 

Alarm Severity

When to take action

Critical Action must be taken immediately
Mayor Action must be taken as soon as possible
Minor Action should be taken when there is time, or the situation should be observed
Warning Take correction action during routine maintenance
Indetermine An alarm has been generated for which there is no alarm severity defined in the system

 

 

 

 

 

BTS Management Family

Manajemen famili pada BTS mendukung pengoperasian harian jaringan BTS.  Manajemen dalam bidang ini meliputi:

  • Manajemen konfigurasi Base Station
  • Manajemen Perangkat Base Station
  • Manajemen Alarm Base Station
  • Manajemen Software Base Station

 

IN (intelligent Network)

Digunakan dalam hubungan dengan PLMN.   Menyediakan pelayanan kepada pelanggan,fungsinya termasuk service switching point (SSP),Service Control Point (SCP), atau gabungan antara keduanya (SSCP).Fungsi SSP digunakan  untuk menjelaskan apakah fungsi SCP dibutuhkan atau tidak.  Fungsi SCP adalah pelayanan program dan data IN.  SSP letaknya di MSC, sedangkan SCP bisa berada didalam SSP atau standalone.

Struktur dalam IN:

  1. SSP (Service Switching Point)
  2. IP (Intellegent Peripheral)
  3. SCP (Service Control Point)
  4. SSCP (Service Swithing and Contolr Point)
  5. SDP (Service Data Point)
  6. SMAS (Service Management Aplication System)
  7. E-DB (Eksternal Data Base)
  • SSP  (Service Switching Point)

Swithing network yang  mengidentifikasi panggilan IN, komunikasi dengan SCP dan menghandle komunikasi informasi yang diterima di SCP.  Pada mobile network SSP dapat diintregasikan dengan MSC.

IP (Intelligent Peripheral)

Adalah input output device yang merecord pemberitahuan dan memonitor sinyal DTMF dari subscriber.

SCP (Service Control Point)

Adalah computer yang mengontrol IN yang terdiri dari service program dan data bila SDP tidak digunakan. Adadua macam SCP :

  • SCP-T ( SCP Telecom) Computer berdasarkan prosesor APZ.
  • SCP-G (SCP General) Computer berdasarkan UNIX.
  • SSCP (Service Switching Control Point)

Gabungan fungsi dari SCP dan SSP dalam node yang sama.

  • SDP (Service Data Point)

Menyimpan Data subscriber dalam jumlah yang besar.  Berdasarkan  system operasi UNIX .

  • SMAS (Service Management Aplication System)

Menghandle implementasi dan kreasi dari IN.  Berdasarkan system operasi UNIX.

  • E-DB (Eksternal Data Base)

Data base yang dapat diakses oleh public dan bersifat komersil.  E-DB ini dapat diakses melalui SDP.

 SC (Service Center)

SC menerima, menyimpan dan mengirim kembali short message diantara pengirim dan MS.

 BGW (Billing Gate way)

BGW mengumpulkan informasi untuk billing.  CDR (Call Data Record) dari element jaringan dengan seketika akan di forward ke system yang menggunakan CDR.  Misalnya pada billing pasca bayar.

BGW digunakan sebagai interface billing pada semua element jaringan di Ericsson network.

 

 SOG (Service Order Gateway)

SOG akan menggabungkan fungsi manajemen  pelanggan pada HLR/AuC dan manajemen peralatan pada EIR.

4.2. BSS interface

Ada  empat interface utama yang diterima dan dipancarkan oleh BSS untuk traffic dan signaling informasi.  Pada dasarnya ada dua jalur pembangunan hubungan interface yaitu:

  1. 2 Mbps PCM (E1) interface.  Kanal fisik E1 terbagi menjadi 32 timeslot(ts) masing-masing dengan bit rate 64 Kbps ( konfigurasi umum untuk GSM 900 dan DCS 1800).
  2. 1,5 Mbps PCM (T1) interface.  Kanal fisik T1 terbagi menjadi 24 timeslot (ts) masing-masing dengan bit rate 64 Kbps (Untuk GSM 1900).

Keempat interface diatas antara lain:

  • A Interface            : Menghubungkan jalur informasi MSC/VLR dengan TRC
  • A-ter Interface      : Interface antara TRC dengan BSC-BSC
  • A-bis Interface      : Mengirim informasi antara BSC dan BTS/RBS
  • Air Interface         : Beroperasi antara BTS/RBS dan MS


Air  Interface
4.2.1 A interface

Interface ini menyediakan dua tipe informasi, signaling dan traffic antar MSC dengan BSS.  Jalur bicara di transcoderkan di TRC dan SS7 signaling yang terhubung langsung ke TRC atau pada jalur berbeda ke BSC.

 

 A ter interface

Adalah jalur antara TRC dan BSC.  Pada TRC jalur bicara ditranscodekan dari 64 Kbps menjadi 16 Kbps.  13 Kbps untuk jalur informasi dan 3 Kbps untuk in band signaling information.

 A Bis interface

Bertugas untuk pengiriman traffic dan signaling information antar BSC dengan BTS/RBS.  Protokol transmisi yang digunakan untuk mengirim informasi signaling pada A Bis Interface adalah Link  Access Protocol On The D Channel(LAPD)

 

Air interface ini menggunakan teknik TDMA untuk jalur kirim dan terima dan signaling informasi antara BTS/RBS dan MS.  Teknik TDMA digunakan untuk membagi tiap-tiap pembawa menjadi 8 timeslot.  Besar frekuensi pembawa adalah 200 KHz.


BURST FORMATTING

Informasi ditumpangkan pada satu timeslot pada frame TDMA melalui Air Interface yang biasa disebut Burst (pemecahan).  TRU (yang terdapat dalam RBS) dan MS menjalankan fungsi meletakkan informasi ke dalam bentuk burst sebenarnya.Ada lima tipe berbeda dari Burst, yaitu:

1.  Normal Burst

Digunakan untuk membawa informasi di Traffic Channel  dan Control Channel yaitu BCCH, AGCH, SDCCH, SACCH, dan FACCH.

Burst yang normal mengandung paket 57 bit dari data encrypted atau voice, 2 flag bit, 26 bit trainnig Sequence, dan dua paket tiga bit yang disebut tail bit.  Flag bits   ( Stealling flags) mengindikasikan sinyal FACCH sedang dalam proses.  Training sequence dikenal sebagai contoh bit yang digiunakan oleh equalizer untuk membuat model channel.  Tail bits selalu 0,0,0 dan digunakn untuk membantu equalizer mengindikasi start dan stop points.  Sebuah timeslot mempunyai ruang untuk 156,25 bit, tetapi burst hanya memuat 148 bit.  Sisa 8,25 kosong dan disebut Guard Periode yang digunakan untuk melindugi burst dari overlapping dan yang lainnya.

TS TS TS TS TS TS TS TS

0          1     2        3      4      5      6       7

TB Speech or data 1 Training sequence 1 Speech or data TB GP

3              57                                26                                     57                  3      8.2

Normal Burst

 

  1. 2.                  Frequency Correction Burst

Digunakan untuk membawa data di Frequency Correction Channel (FCCH).

3.   Synchronization burst

Digunakan untuk membawa data pada Synchronization ( SCH ).

TS0 TS1 TS2 TS3 TS4 TS5 TS6 TS7

Encrypted Bits

39

Synchronization sequence

64

Encrypted Bits

39

TB

3

GP

8.25

TB

3

Synchronization Burst

 

 

4.  Acces Burst

Digunakan untuk membawa data di Random Acces Channel (RACH).  Itu memiliki Guard Period yang lebih panjang untuk membenarkan fakta bahwa MS tidak mengenal Timing Advance value untuk transmisi pada akses pertama.  MS jauh bisa jauh dari BTS yang mengindikasi initial Burst akan datang terlambat.


5.  Dummy Burst

Tidak membawa Informasi, dan dikirim dari BTS pada ts yang bukan membawa traffic.  Menyediakan pengisian carrier.  Formatnya sama dengan Normal Burst, kecuali tanpa flag bits.

TS0 TS1 TS2 TS3 TS4 TS5 TS6 TS7


Hubungan Burst dan Frame

Struktur frame TDMA melalui media udara dimulai dengan burst dan dikembangka sampai dengan Hyperframe.  Pengembangan tersebut terjadi sebagai berikut:

  • Frame TDMA terdiri dari 8 timeslot. Tiap timeslot membawa satu single burst.
  • 26 Traffic Channel TDMA Frame berisi sebuah traffic channel multiframe yang digunakan utuk membawa TCH, SACCH, dan FACCH.
  • 51 Control Channel TDMA frame berisi control channel multiframe yang digunakan utuk mebawa BCCH, TCCH, SDCCH, dan SACCH.
  • Sebuah superframe terdiri dari 51traffic channel multioframe atau 26 controlchannel multiframe yang lain.
  • Hyperframe terdiri dari 2048 superframe.

FREKUENSI BAND

GSM 900

GSM 1800

GSM 1900

Up Link

890-9150MHz

1710-1785MHz

1850-1910MHz

Down Link

935-960MHz

1805-1880MHz

1930-1990MHZ

Air Interface Channel

Jalur untuk membawa informasi antara MS dan RBS dikenal dengan nama Physical Channel.  Perbedaan pembawa informasi dalam physical channel diklasifikasikan sebagai logical channel.  Logical Channel dibagi menjadi dua kategori:

    • Control Channel dan
    •  Traffic channel

4.2.4.a). Control Channel

Membawa informasi signaling yang digunakan oleh MS mencari RBS, sinkronisasi, penerimaan informasi digunakan untuk pelaksanaan call setup. Ada3 kategori:

a.1) BCH ( Broadcast Channel )

Ditransmisikan point-to-multipoint ke arah downlink

ü  FCCH ( frequency Corection Channel ): Frekuensi koreksi yang digunakan oleh MS

ü  SCH ( Synchronization Channel ): Mengandung BSIC ( Base Station Identity Code ) dan angka frame TDMA untuk sinkronisasi MS

ü  BCCH ( Broadcast Control Channel ): Untuk menyiarkan informasi umum ke semua MS

a.2) CCCH ( Commmon Control Channel )

Dikirim point-to-point

ü  RACH ( Random access Channel ): Digunakan oleh MS untuk minta akses ke system.  Dikirim melalaui uplink

ü  PCH ( Pagging Channel ): Digunakan untuk pagging di MS.  Dikirim melalui downlink

ü  AGCH ( Access Grant Channel ): Digunakan untuk menandai SDCCH. Dikirim melalui downlink

a.3) DCCH ( Dedicated Control Channel )

Dikirim secara point-to-point melalui uplink dan downlink.

ü  SDCCH ( Stand alone Dedicated Control Channel ): Membawa sinyal informasi signaling selama call setup

ü  SACCH ( Slow Ascociated Control Channel ): Mengirim panggilan control data dan laporan pengukuran

ü  FACCH ( Fast Ascociated Control Channel ): Membaea informasi signaling yang penting

4.2.4.b) Traffic Channel

Traffic ini membawa voice/data. Adatiga tipe yaitu

ü  Full rate: Menangani encoding voice/data.  Informasi TCH dikirim pada bit  rate 33,8 Kbps.  1 kanal untuk 1 orang (MS) dengan bitratenya 13 Kbps pada tiap time slotnya.

ü  Half rate: Dalam 1 kanal dapat digunakan 2 MS. Sebuah MS akan memakai setiap detik ts ketika MS yang lain dalam kondisi idle.  Pemakaian satu time slot untuk dua subscriber ini masing- masing subscriber yang berada dalam satu time slot mempunyai bitrate 6,5 Kbps.

ü  EFR (Enhance Full Rate):Dalam metode ini maka satu timeslot akan diduduki oleh satu subscriber tetapi kecepatan bitratenya lebih cepat dari pada full rate yaitu 14,4 Kbps.

Pada ericson jalur yang digunakan untuk full rate,half rate dan EFR dari TRAR (transcoder) menuju MSC  disendirikan.

4.3. SIGNALING

Suatu pemrosesan sinyal yang terjadi sebelum sinyal informasi dikirim melalui control channel.  Hal ini bertujuan untuk mengurangi gangguan selama pentransmisian sinyal pada Air interface.  Proses signaling menggunakan standart ITU-T yaitu SS No 7. Informasi signaling tersebut ditransferkan di jaringan dalam bentuk paket data, yang disebut MSU (Message Signal Unit).  MSU dikirim melalui Signaling Link (SL) diantara jaringan.  MSU berisi informasi seperti:

-          Informasi Routing, yang mengidentifikasikan node asal, tujuan dan SL    yang digunakan.

-          CIC (Circuit Identification Code), yang mengidentifikasi circuit pembicaraan atau data yang digunakan

-          Error Checking dan koreksi informasi.

SS No 7 Signaling terdiri dari dua tipe yang menghandle  MSU:

-          Signaling point (SP): Menghandle titik asal dan tujuan signaling pada jaringan.

-          Signaling Transfer Point (STP ): Sebagai tempat transitnya SP.

Masing-masing SP dan STP mempunyai alamat jaringan yang terdapat didalamnya MSU, yaitu:

  • OPC (Originating Point Code) untuk mengindikasikan MSU asal.
  • DPC (Destination Point Code) untuk mengindikasi MSU tujuan.

Didalam SP (Signaling Point) terdapat:

  1. 1.      MTP (Message Transfer Part)
  • MTP melayani connectionless transport system yang menyediakn transfer dan control MSU melewati signaling link.  Fungsi tambahan MTP didukung oleh SCCP

MTP dibagi menjadi tiga level utama:

1)      Level 1: berisi signaling data link dimana fisikal circuit ini membawa pesan signaling (64 Kbps) untuk ditransmisikan antar node.

2)      Level 2: berisi signaling link yang berfungsi untuk deteksi dan koreksi kesalahan untuk mendapatkan transmisi yang baik.

3)      Level 3: berisi signaling network yang dibagi dalam dua kategori

  • Signaling Message Handling, juga dikenal dengan traffic handling yang menghandle pengalamatan dan ruting.
  • Signaling network management function, menghandle congesti atau kegagalan di signaling network.

2. UP/AP (User/Application Part)

UP dan AP membangkitkan dan menganalisa signaling message. Perbedaan UP dan AP antara lain:

  • Telephony User Part ( TUP ), digunakan untuk signalling PSTN
  • The ISDN User Part (ISUP) yang digunakan untuk sgnalling ISDN dan PSTN
  • Mobile Application Part (MAP), digunakan untuk signaling mobile
  • Intelligent Network Application Part (INAP), digunakan untuk  signaling IN
  1. 3.      TCAP (Transaction Capabilities Application Part)

Merupakan protocol yang digunakan untuk non circuit related signaling.

Signaling di AXE (Ericson Exchange Equipment) ada dua tipe:

  1. Subcriber Signaling
  2. Inter Exchange Signaling

4.  SCCP ( Signaling Connection and Control Part )

SCCP berfungsi untuk interaksi dengan data base HLR.  SCCP menyediakan pelayanan “ connectionless “ dan “Connection-Oriented”  dan mendukung:

  • Circuit Related Signaling, signaling untuk call set up yang dihubungkan dengan timeslot untuk speech atau data.
  • Non-Circuit Related Signalling, signaling message yang tidak berhubungan dengan timeslot speech.  Contohnya signaling yang digunakan ketika GMSC membutuhkan informasi ke HLR.

Fungsi signaling terutama diimplementasikan pada tiga subsistem:

  • SSS (Subcriber Switching Subsystem)

Digunakan untuk jalur signal untuk pelanggan,seperti: hook off/on, dial tone, DTMF, ringtone.

  • TSS (Trunk and Signaling Subsystem)

Digunakan untuk signaling UP meliputi: TUP (Telephony User Part), ISDN User Part (ISUP), CAS (Channel Assosiated Signaling).  Didalam  CAS terdapat TSS yang berfungsi untuk mengawasi trunks dan menghandle semua signaling

Merupakan titik hubung dari PCM link atau DIP (Digital Path) ke dan dari:

2)      GS (Group Switch)

3)      Jaringan komunikasi

Hardware TSS meliputi:

1)      ETC  (Exchange Terminal Circuit )

Interface hardware diantara PCM link atau DIP dan GS yang beroperasi pada 2,048 Mbps dan 1,544 Mbps.

2)      CSR-D (Code Sended Receive): menghandle signaling multifrekuensi.

3)      ECP (Echo Canceller in Pool)

Fungsi lain yang diimplementasikan dalam software TSS, untuk penanganan dan penganwasan traffic, adalah:

  • SNT (Signaling Network Terminal): mengeblok traffic handling untuk tipe yang berbeda dan berisi pemeliharaan dan pengawasan data untuk DIP, ETC da sambungan GS.
  • DIPST (Digital Path Supervision Path): fungsi administrasi dan pemeliharaan DIP.
  • BT (Bothway Temporary): Mengotrol set up dan terminasi dari trunk call setiap kanal traffic handling atau trunk line diantara system PCM dan ditandai dengan BT number.
  • CCS (Common Channel Signaling Subsystem)

CCS terdiri dari:

    1. Software, misalnya SCCP, TCAP dan MTP
    2. Hardware, meliputi MTP’s Signaling terminal (ST) yang dibutuhkan untuk mengakhiri signaling link antara network nodes.  Satu ST mendukung satu SL yang beroperasi pada 64 Kbps.  Gabungan dari beberapa SL disebut LS (link).

Gambar 4.9 Komponen Hardware MSC

4.3.2. Hardware MSC ( Mobile Switching Center )

MSC adalah bagian yang paling komplek pada system switchingnya. MSC dapat disebut sebagai otak dalam kerja switching, bilamana di MSC mengalami suatu gangguan, otomatis kerja dari seluruh perangkat akan terhenti.

Funsi umum dari MSC adalah:

1)      Call Processing

2)      Charging

3)      Billing

4)      Signaling

5)      Switching

Komponen – komponen yang terdapat di MSC ada beberapa bagian, antara lain:

  • ETC5 (Exchange Terminal Circuit)

ETC5 merupakan lapisan physical dari MSC. Pada ETC5 ini terjadi koneksi fisik(antar kabel) dengan BSC.  Fungsi ETC:

-          Mentransfer 32 x 64 kbps ( 2 Mbps) time slot dari dan ke GS.

-          Mentransfer informasi signaling ke dan dari RP (Regional Prosesor)

-          Mengawasi DIP.

  • APG (Adjunct Procesor Group)

Merupakan lapisan data link dari MSC.  Pada APG terdapat dua node yaitu: node A dan node B (satu node untuk redundancy/duplikasi bila terjadi kerusakan di salah satu node), power (-40.5- -60V), alarm, hardisk untuk menyimpan billing.  APG terhubung ke CP dengan menggunakan kabel IPNX.  Dalm satu card terdapat 4 signaling sehingga dalam satu magazine terdapat 32 signaling.  Software yang digunakan oleh APG adalah windows NT.

  • CP (Control Procesor)

Control Procesor merupakan control terbesar dari seluruh cabinet dalam MSC. CP didesain untuk mengeksekusi fungsi yang kompleks untuk komunikasi dan control Regional Procesor.

Pada system AXE menggunakan 2 CP sekaligus (CP Twin) yaitu CP Node A dan CP Node B.

Kondisi CP :

ü  EX (Executive) : mengontrol RP yang dihubungkan ke kedua CP

ü  SB/wo (standby/working): Sinyal hanya dikirim ke RP tapi tidak dibaca.

ü  HA (Halted): Proses dalam CP dihentikan

ü  SE (Separate)

ü  UP (Update)

 

Perpindahan fungsi Node A dan Node B diatur oleh MAU ( Maintenance Unit).

Perbedaan kondisi Node A dan Node B seperti dalam table:

CP A

CP B

EX SB/WO
EX SB/HA

 

 

 

Tidak ada proses, sebab kesalahannya terlalu besarEXSB/SE

Dipisahkan oleh command yang berbeda ketika software baru loadedEXSB/UP

Update SB dan EX bekerja paralelSB/WOEXSB/HAEXSB/SEEXSB/UPEX

Secara umum fungsi dari CP adalah untuk menggandakan dan sebagai control terbesar dari keseluruhan.  CP juga melaksanakan semua command level serta menghandel data, menyimpan program dalam fungsi AXE.

CP yang umum digunakan pada AXE:

  • APZ 212 11 yang digunakan untuk komunikasi dengan kapasitas rendah
  • APZ 212 20 yang digunakan untuk komunikasi dengan kapasitas tinggi
  • APZ 212 25 yang digunakan untuk komunikasi dengan kapasitas rendah dan medium.

Sebagai contoh APZ 212 20 unit hardwarenya terdiri dari beberapa bagian:

  1. Central Processing Unit

Merupakan prosesor yang sangat berwenang dan kondisi kerja dari masing-masing side CP yaitu:

# Instruction Processing Unit ( IPU ) bertugas untuk melaksanakan program.

# Signal Processing Unit ( SPU ) bertugas sebagai pemroses administrasi system, meliputi penanganan signal dan mempersiapkan eksekusi program selanjutnya.

IPU dan SPU bekerja secara paralel.

  1. Program Store (PS)

Berfungsi menyimpan arsip atau berkas semua program

  1. Data Reference Store (DRS)

Secara fisik terdiri dari satu store tetapi secara logika dibagi menjadi:

  1. Data Store (DS) yang mengandung variasi pusat data

Reference Store (RS) mengandung pengalamatan dan daerah store untuk PS dan DS.

  1. Regional Prosesor Handle

Bertugas menangani signaling dari dan ke Regional Prosesor.


RPS (Regional Processor Subsystem )

RPS terdiri dari:

  • RP ( Regional Processor ): RP berfungsi sebagai bagian dari CP yang bertugas untuk menangani tugas rutin seperti scanning hardware APT dan filter sinyal.
  • RPD ( RP Digital )
  • RPG ( RP with Group Switch interface )

Ketiga prosesor ini terhubung pada CP dengan menggunakan RP Bus.

  • GS (Group Switch)

GS merupakan multiplexer dalam switching GSM Ericcson yang akan memultiplex beberapa persambungan menjadi 1 jalur utama.

            DLMUX(Digital Link Multiplexer) bekerja sebagai multiplexer antar dua  2Mbit digitaling dan TSM.  Satu DLMUX digunakan untuk memultiplex 16 DL2 interface ke satu DL3 interface di GS.

DL3 adalah interface ke GS .

DL3 merupakan serial interface kecepatan tinggi antara DLMUX dan TSM.  Kapasitas DL3 512 x 64 Kbps Channel.

CLM (Clock Module) mendistribusikan sinyal clock ke TSM dan SPM.  Masing-masing CLM terdiridari 1 Clock Board (CLB) dan satu Cable Connection Board (CLB)


Subsriber Switching Subsystem (SSS)
Dalam kabinet GS terdapat beberapa subsystem antara lain:

SSS merupakan interface antara subscriber dengan jaringan  yang akan menuju ke GS.Tipe akses pada GS dapat berupa analog (untuk PSTN) dan digital (untuk ISDN).  GS juga menghandle signal ke subscriber.

  • Group Switching Subsystem (GSS)

GSS mempunyai fungsi untuk:

1. Selecting, connecting dan disconnecting jalur pembicaraan

2. Pemeliharaan kestabilan frekuensi clock

3. Pengawasan hardware

4. Pengawasan digital path. ke GS.

5. Subrate switching

Kapasitas untuk switch dengan rata-rata bitnya lebih rendah dari 64 kbps, SRS berupa modul yang dihubungkan sebagai modul tambahan pada GS sehingga memungkinkan fungsi switching lebih efektif pada subrate level (8 kbps)

Didalam GSS terdapat TSM (Time Switch Module) dan CLT (Clock Pulse Generation and Timing) sebagai core switching.

v  TSM mempunyai fungsi:

# Mengontrol time slot dalam switching

# Pengawasan terhadap time switch,space switch,switching network terminal (SNT) dan DIP (Dipgital Path)

# Testing TSM dan SPM

v  CLT mempunyai fungsi:

# Membangkitkan pulsa dan mendistribusikannya ke dalam   GS.

# Pengunci frekuensi dan phasa masing-masing CLM dan kearah eksternal clock referensi.

  • Extended Switching Subsystemn (ESS)

ESS digunakan untuk koneks dengan subscriber yang lain.  Fungsi utama ESS yaitu:

# Announcement System (ANS)

ANS digunaka untuk mengirim pemberitahuan informasi yang tersimpan kepada pelanggan.  Misalnya: tentang kondisi jaringan dan peggantian nomor, atau dapat digunakan dalam hubungan dengan pelayanan tambahan bagi subscriber.

# Multi Junctor (MJ)

MJ menyediakan koneksi pembicaraan lebih dari dua subscriber dalam waktu yang bersamaan.

# Broadcast (BC)

Digunakan untuk pemberitahuan informasi ke banyak subscriber secara langsung.

  • Traffic Control Subsystem (TCS)

Mengontrol dan mengkoordinasi semua aktifitas utama seperti call set up,supervising dan disconnection.  TCS juga menerima,menyimpan dan menganalisa digit dari ESS,SSS dan  TSS.

Perutean pengontrolan dan pengawasan dari TCS:

  1. Penerimaan digit
  2. Analisa digit
  3. Analisa rute
  4. Analisa kategori
  5. Pemilihan jalur
  6. Pengiriman digit
  7. Call Supervision
  8. Pemutusan panggilan

Koneksi GS

Perangkat berikut yang dikoneksikan ke GS melalui interface software yang disebut SNT (Switching Network Terminal):

  • ETC (Exchange Terminal Circuit)

Digunakan untuk mengkoneksikan PCM Link (32/24 Channel) dari Trunk Network

  • JTC (Junctor Terminal Circuit)

Digunakan untuk sambungan ke LSM (Line Switch Module) pada GS.

  • PCD ( Pulse Code Device)

Adalah A/D converter untuk mengkonversi data analog ke sinyal 2 Mbps ke GS.

  • PCD-D (PCD-Digital)

Untuk koneksi peralatan digital yang bekerja di bawah bit rate 2 Mbps ke GS.

 4.3.3. SINKRONISASI CLOCK

Untuk mengontrol pengoperasian diperlukan sinyal timing.  Clock pada AXE system akan menentukan rata-rata sample ke speech store.  Semua clock dalam tiap node harus disinkronisasikan untuk meyakinkan bahwa transmisi bebas dari kesalahan..  Sinyal clock yang digunakan dapat dibangkitkan oleh:

  1. Local clock dalam node.
  2. Eksternal clock
  3. Clock sinyal informasi dari yand dibawa DIP dari node yang lain.

Jika clock tidak sinkron maka akan terjadi slip yang mengakibatkan hilangnya sinyal informasi, seperti : penurunan kualitas pembicaran, pesan (fax)ada yang hilang, disconnect panggilan selama terjadi handover.

Metode sinkronisasi yang digunakan untuk mendistribusikan clock antara lain:

  • Sinkronisasi Plesiochronous

Sinyal clock dibangkitkan oleh node itu sendiri

  • Sinkronisasi Master atau slave

Satu node akan mengontrol clock pada  semua node

  • Sinkronisasi jaringan mutual single-ended

Sinyal clock yang digunakan adalah nilai rata-rata  frekuensi clock dari beberapa element jaringan.

Sinyal dari BTS/RBS yang menuju ke BSC akan melalui transmission terlebih dahulu.

Dari MS sinyal informasi yang berupa voice, teks, image dikirim ke BTS. Spesialisasi untuk IM3 Surabaya menggunakan produk dari Ericson yaitu RBS2202. Sinyal informasi yang akan dikirim dari subscriber A (asal) ke subscriber B (tujuan ) akan menduduki 1 timeslot dalam satu TRU.

Sinyal informasi yang melewati RBS akan dibedakan,bila informasi yang dikirim berupa voice maka sinyal tersebut akan melewati control channel. Setelah itu voice akan melewati SDCCH kemudian ke TCH sebelum masuk ke CDU. Sinyal informasi selanjutnya ditransmisikan ke udara dan akan diterima oleh antenna RBS yang berada pada sector dimana subscriber itu berada.

Satu RBS mempunyai tiga sector. Ketiga sector tersebut adalah sector 1, sector 2, dan sector 3. Agar tidak terjadi interferensi, frekuensi masing-masing sector tidak boleh sama. Dalam satu PCM (untuk selanjutnya akan disebut dengan E1) maksimal ada 12 TRU.

4.4. SWITCHING DIGITAL

Switching yang digunakan dalam AXE node. Adadua prinsip switching digital:

1)      Time switching

2)      Space switching

3)      Kombinasi dari Time switch dan Space switch.

Time Switching

Switching ini berdasarkan system TDM (Time Division Multiplexing) seperti PCM.  PCM link dapat dibagi dalam waktu oleh speech channel.  Masing-masing channel yang membagi waktu ini disebut time slot dan masing-masing time slot membawa pesan pembicaraan.

Space Switching

Merupakan switch dengan kecepatan tinggi.  Pada space switch, konfigurasi time slotnya tetap tetapi kecepatannya berubah.

 

4.5. GSM NUMBERING IDENTITIES

Untuk menyambung suatu panggilan menuju MS, maka identifikasi kode yang benar harus dilakukan pada area GSM PLMN dengan security yang tinggi. Pada jaringan GSM ada beberapa penomoran yang digunakan untuk mengidentifikasi jaringan dan pelanggan ( subscriber ).

Identifikasi pelanggan sebagai berikut:

  1. 1.      IMSI (International Mobile Subscriber Identity )

IMSI tersimpan di SIM ( Subscriber Identity Modul ), HLR dan VLR.  IMSI adalah kode unik yang dimiliki oleh masing-masing pelanggan agar kode tersebut dikenali pada jaringan GSM.  IMSI juga digunakan untuk signaling pada jaringan PLMN dan semua jaringan yang berhubungan dengan informasi subscriber terhubung pada nya.  IMSI digunakan oleh VLR untuk pengalamatan di HLR sehubungan dengan proses location update, mengakses data base pelanggan di HLR, VLR, dan AuC.  Format penomorannya:

IMSI = MCC + MNC + MSIN

MCC   =MobileCountry Code

( Menandakan negara dimana pelanggan tersebut berasal )

MNC   =MobileNetwork Code

( Menandakan PLMN yang terdapat disuatu negara )

MSIN  =MobileSubscriber Identification Number

( Identifikasi pelanggan secara jelas pada jaringan PLMN, 2 digit pertama pada MSIN menandakan HLR )

Sesuai dengan spesifikasi GSM 900 atau GSM 1900 digit maksimum IMSI adalah 15 digit.

Contoh:

IMSI 6221XXXXXXXXXXXX

62 = MCC

21 = PLMN ( operator IM3 )

  1. 2.      MSISDN (Mobile Station ISDN Number )

Identifikasi ini berhubungan dengan PSTN Number ( Public Switched Telephony Network ). MSISDN digunakan oleh:

-    pemanggil untuk membentuk koneksi ke pelanggan PLMN.

-    MSC/GMSC untuk mencari alamat HLR ketika dilakukan pengecekan VLR dari pelanggan PLMN.

-    Sistem untuk mengakses database pelanggan di HLR.

Formatnya:

MSISDN = CC + NDC + SN

CC = Contry Code

NDC = National Destination Code

SN = Subsciber Number

Contoh:

MSISDN: 62 855 XXXXXXXXXX

62: Country Code

855: National Destination Code ( IM3 )

  1. 3.      TMSI ( Temporary Mobile Subscriber Identity )

Nomor identtitas yang unik dari pelanggan yang tugasnya hampir sama dengan IMSI tapi bersifat sementara, digunakan hanya di satu VLR. TMSI digunakan dalam hubungan dengan LAI ( Location area Identity ) untuk mengakses data pelanggan di database VLR.  TMSI nomor pengganti IMSI saat berada di Air Interface dengan alasan security.

  1. 4.      MSRN ( Mobile Station Roaming Number )

Nomor yang bersifat temporary untuk keperluan routing bagi MS yang sedang roaming di MSC/VLR tertentu.

MSRN ini digunakan untuk membentuk koneksi suara/voice dari originating MSC/GMSC ke MSC/( VMSC ) dan mengalamati data pelanggan di VLR.

  1. 5.      IMEI ( International Mobile Equipment Identity )

Merupakan identitas yang jelas dari perangkat yang digunakan sebagai administrasi perangkat yang tersimpan di EIR.

  1. 6.      Penomoran untuk identifikasi sektor jaringan

LAI ( Location area Identity ) merupakan kode identifikasi area dimana system GSM berada.  LAI ini disimpan sebagai semi permanent data di database VLR.  LAI digunakan untuk pagging dan location updating.

Idle Mode Active

Digunakan untuk paging message guna memastikan komunikasi yang paling jelas/baik dalam satu cell.

Active Mode

Ketika MS di ON kan dan ditautkan ke traffic.

Paging

MSC/VLR mengirim sinyal ke MS bahwa MS mendapat panggilan (incoming call)

Roaming

Perpindahan MS dari satu cell ke yang lain ketika MS di ONkan.

Handover

Kemampuan MS untuk mendapatkan kualitas sinyal yang baik saat MS berpindah dari satu cell ke cell yang lain..

4.7. LOCATION UPDATING

Roaming dari MS, terjadi ketika MS berpindah bebas ke luar cell tetapi masih dalam satu jaringan GSM.  Karena lokasi MS dapat diketahui oleh jaringan, maka sangat memungkinkan bagi MS untuk menerima panggilan saat hal ini terjadi.

Agar informasi dari MS tetap update, MS tersebut harus menginformasikan ke system ketika ia berpindah lokasi.  Lokasi area terdiri dari satu cell atau lebih dimana MS dapat bergerak tanpa memerlukan up date system dilokasinya.  Tetapi ketika MS tersebut telah berpindah ke system GSM lain  maka MS tersebut harus meng update system.  Satu lokasi area dikontrol oleh satu atau lebih BSC tetapi hanya satu MSC. Satu MSc dapat mengontrol lebih dari satu LA (Location Area).  BSC mengirim paging ke RBS dilokasi area MS (tujuan) barada.  Jika MS berpindah cell ke lokasi area berbeda, jaringan harus diberi informasi melalui procedure panggilan location up dating. Adaempat tipe yang berbeda dari location up dating :

  • Normal
  • IMSI detach
  • IMSI attached
  • Periodic registration
  1. 1.      NORMAL LOCATION UP DATING

BTS pada setiap cell secara continue mentransmisikan identitas lokasi area pada control channel (BCCH).  Ketika MS mendeteksi identitas lokasi area yang berbeda dari yang tersimpan di SIM card, maka MS akan langsung melakukan location up date.

Jika MS tidak dikenali di MSC/VLR, maka MS harus meng up date informasi lokasinya di MS/VLR yang baru.

Informasi dari subscriber ini berasal dari HLR.  Prosedur lcaioan up dating dengan langkah-langkah seperti berikut:

1)      MS meminta location up date untuk dikeluarkan di MSC/VLR yang baru.  IMSI digunakan untuk mengidentifikasi MS.  IMEI mengecek lokasi tersebut di jaringan.

2)      MSC/VLR yang baru mengeluarkan nomor IMSI.  IMSI akan dimodifikasi pada MGT (Mobile Global Title) yang digunakan pengalamatan di HLR.

3)      MSC/VLR yang baru meminta informasi pelanggan untuk MS dari HLR.

4)      HLR menyimpan alamat dari MSC/VLR yang baru

5)      HLR mengirim data subscriber ke MSC/VLR yang baru.

6)      HLR juga memberikan pelayanan pada MSC/VLR yang lama untuk meng-cancel semua informasi pelanggan karena MS yang sekarang telah di update oleh MSC/VLR yang baru.

7)      Ketika MSC/VLR yang baru, menerima informasi dari HLR maka MSC/VLR itu akan mengirimkan konfirmasi location up date yang baru ke MS.

Catatan: HLR tidak diinformasikan bila MS berpindah dari satu location area yang satu ke yang lain bila masih berada dalam satu area MSC yang sama.

  1. 2.      IMSI DETACH

Dalam  penyiaran system informasi pada control channel (BCCH), MS menerima informasi tentang fungsi attach/deteach IMSI digunakan atau tidak.  Jika digunakan, MS harus menginformasikan jaringan ketika memasuki status inactive (deteach) .  Prosedurnya sebagai berikut:

1)      Saat power OFF atau ketika SIM Card dilepas, MS meminta  sebuah kanal untuk signaling.

2)      MS menggunakan kanal signaling tersebut untuk mengirim IMSI deteach VLR

3)      Dalam VLR, tanda IMSI deteach diset untuk pelanggan.  Hal ini digunakan untuk menolak incoming call pada MS.

  1. IMSI ATTACH

IMSI Attach adalah komplemen dari IMSI Deteach. Ini digunakan oleh MS untuk menginformasikan jaringan bahwa jaringan saat ini berada dalam status aktif dan masih dalam satu lokasi area.  Jika MS berubah lokasi saat dimatikan, maka lokasi up datenya menggunakan Normal Location Up Date.  Prosedur IMSI Attach sebagai berikut:

1)      MS meminta signaling Channel (BCCH terbaik)

2)      MSC/VLR menerima IMSI Attach dari MS

3)      MSC/VLR mengeset IMSI Attach di VLR.

4)      VLR menandai MS sebagai “attached”

5)      VLR mengirim acknowledgment ke MS

 

  1. 3.      PERIODIC LOCATION UP DATING

Digunakan untuk menghindari paging yang tidak diperlukan oleh MS pada kasus dimana MSC tidak bisa menerima IMSI deteach.  Prosedur dari periodic location up dating:

1)      Jaringan menyiarkan parameter periodic registration.  Parameter yang umum digunakan adalah 0-255 decihours.  Saat parameter diset ke 0 maka periodic registration tidak digunakan.  Jika parameter diset ke 1 maka MS harus diregister setiap 6 menit.

2)      Prosedur ini di control oleh kedua timer yang ada di MS dan MSC

3)      Ketika timer di MS tidak ada maka timer pada MS dan MSC direset untuk mendapatkan tampilan periodic location updating, jika telefon seluler tidak teregister di dalam batasan interval waktu maka fungsi scanning MSC akan mendetek hal tersebut dan MS ditandai “deteached”.

4.8. HANDOVER

Intra BSC Handover.

Proses yang terjadi selama terjadi handover intra BSC sebagai berikut:

1)      Selama panggilan, MS akan mengukur kekuatan dan kualitas sinyal pada TCH dan kekuatan sinyal dari neighboring cell.  MS mengevaluasi dan menilai rata-rata untuk tiap-tiap cell. MS mengirim hasil pengukuran ke BTS setiap dua kali dalam satu detiknya tidak hanya pada cellnya sendiri tetapi juga hasil pengukuran dari BTS neighboring cell.

2)      BTS akn mengirim hasil pengukuran pada TCH tersebut ke BSC.  Di BSC, fungsi pelokasian diaktifkan apabila diperlukan untuk handover ke cell lain.

3)      Pada saat handover dilakukan, BSC akan mengecek apakah channel yang diminta telah terpenuhi oleh cell lain, apabila belum maka BSC akan BTS yang baru untuk mengaktifkan TCH.

4)      BSC akan meminta BTS yang lama untuk mengirim pesan ke MS dengan informasi tentang frekuensi, time slot dan output power untuk di ubah.

5)      MS memilih frekuensi yang baru dan akses handover pada time slot yang sesuai.

6)      Ketika BTS mendeteksi handover, BTS akan mengirimkan informasi fisik berisi “timing advance” ( jarak antara MS ke BTS ) ke MS.  BTS juga menginformasikan ke BSC dengan mengirimkan “HO detection message” sehingga jalur yang baru pada GS tersambung.

7)      MS mengirim “HO complete message”.

8)      Terakhir BTS lama diperintahkan untuk tidak mengaktifkan TCH yang lama.

Inter BSC Handover

Jika MS berpindah area yang daerah baru tersebut di covered dengan BSC yang lain maka handover inter BSC akan terjadi.

1)      Berdasarkan dari hasil pengukuran MS, BSC yang lama akan memutuskan untuk handover ke BSC yang lain.  Dari BSC yang lama akan dikirim permintaan handover tersebut ke MSC disertai dengan identitas cell yang baru.

2)      MSC mengetahui BSC mana yang mengontrol BTS dan mengirim parmintaan handover tersebut ke BSC ini (BSC baru).

3)      BSC yang baru memerintahkan BTS untuk mengaktifkan TCH.

4)      Ketika BTS telah mengaktifkan TCH, BSC yang baru mengirimkan informasi tentang time slot, frekuensi, dan output power ke MSC.

5)      MSC meneruskan informasi ini ke BSC yang lama.

6)      MS diperintahkan untuk pindah ke TCH yang baru.

7)      MS mengirim handover ke TCH yang baru.

8)      Segera setelah itu, BTS mendeteksi handover dan mengirimkan informasi fisik berisi “Timing advance” dan output power ke MS.

9)      BSC yang baru mengkonfirmasikan bahwa BTS telah menerima handover.

10)  Informasi ini diteruskan ke MSC melalui BSC, yang mana telah berpindah jalur didalam GS nya.

11)  MSC menginformasikan BSC yang lama untuk menonaktifkan TCH lama.

12)  TCH yang lama selanjutnya akan dinonaktifkan di BTS.

Inter MSC handover

Selama panggilan MS memungkinkan untuk bergerak diantara beberapa MSC yang berbeda.  Berikut adalah prosedur handover inter MSC:

1)      BSC mengirimkan permintaan handover ke MSC.

2)      MSC harus menanyakan MSC mana yang akan melayani MS untuk proses selanjutnya.

3)      MSC baru akan mengirimkan permintaan handover ke BSC yang baru juga.

4)      BSC baru meminta BTS baru untuk mengaktifkan TCH.

5)      MSC menerima informasi tentang TCH baru dari BSC baru.

6)      MSCS meneruskan informasi ini ke MSC lama.

7)      Jalur pembicaraan di setup oleh MSC baru.

8)      “Handover command message” dikirim ke MS dengan informasi mengenai informasi frekuensi, timeslot yang digunakan di sel baru.

9)      MS mengirim handover ke TCH baru.  Ketika BTS mendeteksi handover maka BTS akan mengirim informasi berisi”Timing Advance” ke MS.

10)  MSC yang baru, diinformasikan bahwa handover telah sukses, dan informasi ini dikirim ke MSC lama.

11)  Jalur yang baru di GS di set up di MSC lama, dan panggilan sudah bisa dilakukan.  TCH yang lama akan dinonaktifkan

 

4.9. PROBLEM RADIO

Dalam komunikasi yang terjadi pada GSM merupakan komunikasi sistem radio.  Sistem radio memanfaatkan gelombang elektromagnetik dalam pentransmisian data pada air interface.  Data yang dilewatkan pada interface diatas tidak selamanya utuh diterima di receiver, akan tetapi akan mengalami kecacatan data.  Begitu juga untuk transmisi sinyal ( proses percakapan ) di air interface akan mengalami beberapa kendala yang mengakibatkan suara (voice) tidak dapat diterima dengan baik.

Kendala dalam pentransmisian sinyal yang terjadi dapat diakibatkan oleh:

  • Pathloss

Penurunan kekuatan sinyal yang terjadi tergantung pada jarak antara transmitter dan receiver. Sehingga MS berada diluar jangkauan BTS.

  • Rayleigh Fading

Gangguan penerimaan sinyal ( sinyal lemah) yang disebabkan karena sinyal yang diterima terdiri beberapa sinyal yang di pantulkan dari obyek terdekat dan tidak berupa sinyal yang diterima secara langsung (direct).

  • Time Dispersion

Kendala transmisi yang terjadi ketika sinyal digital yang sama menjangkau receiver dalam waktu yang berbeda ( terjadi karena ada pantulan ) menyebabkan sinyal menjadi tidak sinkron.

  • Time Alligment

Waktu yang digunakan MS untuk proses pengiriman sinyal yang dipengaruhi oleh jarak dari MS ke BTS

Kendala – kendala yang terjadi diatas dapat di atasi dengan:

  • Speech Coding

Untuk menjaga data agar tetap diterima secara lengkap, maka data harus dijaga kerahasiaannya maupun security-nya.  Untuk itu diperlukan pengkodean data yang dikirim melalui air interface.

  • Interleaving

Bit – bit informasi yang tersusun berurutan dan tersebar diantara blok – blok yang berbeda sebelum pentransmisian, untuk mengatasi masalah yang disebabkan error pada data.  ( Pengacakan data )

  • Frequency Hopping

Mengubah frekuensi carrier untuk mengurangi fading.

  • Antenna Diversity

Suatu teknik yang digunakan untuk mengurangi Rayleigh Fading.  Antena ini menggunakan dua buah antenna receiver (Rx) yang dipasang secara identik satu sama lain dan dipisahkan dalam jarak tertentu. Antena Rx ini dipasang pada Base Station untuk menerima sinyal yang sama, sehingga tidak dipengaruhi oleh fading. Hal ini dikarenakan dipih sinyal yang terbaik dari 2 sinyal yang diterima.  2 cara yang dapat digunakan yaitu:

Space Diversity : Jarak antenna harus diatur se rendah mungkin.  Dalam prakteknya jarak harus diatur beberapa meter.  Untuk GSM 900 dimungkinkan penguatan 3 dB sehinggga digunaka jarak 5 – 6 meter.  Pada GSM 1800 jaraknya bias diperkecil karena panjang gelombangnya juga kecil.

Polarization Diversity: Antena Dual Polarisasi adalah sebuah perangkat antena dengan 2 baris fisik yang sama.  Kedua baris dapat diatur untuk mendapatkan polarisasi yang baik.  Konvigurasi yang umum dipakai adalah baris vertical+ baris horizontal dan baris dengan kemiringan ± 45º.

  • Equalizer:

Proses koreksi kesalahan ketika sinyal di transmisikan melalui air interface.

  • Timing Advance

Sistem meminta MS untuk mengirim data selama dalam waktu perjalanan sinyal dari MS  ke BTS untuk mengurangi Time Alligment.

Dear all,

ini cuma mau cerita aja, ga ada maksud apa-apa. ceritanya bermula ketika saya masih kerja di Folec Communications di Brunei Darrusalam. nah kebetulan aku disini sebagai project Engineer saja. dan perusahaan kami memenagkan tender untuk pengadaan VoiP teknologi untuk perusahaan telecom brunei. dan ternyata hardware, software nya menggunakan product sysmaster. sysmaster ini adalah perusahaan yang bergerak telekomunikasi dan IT Solutions. yang berada di walnut creek California Amerika serikat.

karena productnya dari amerika maka perushaan akan mengirimkan beberapa enginner nya ke sana untuk melakukan training untuk product tersebut. dan entah ada angin apa atau mimpi apa ternyata salah satu engineer yang di suruh berangkat itu saya. wah seneng juga sih, secara belum pernah pergi ke negri adi kuasa itu. dan saat itu gue jadi inget dengan cerita borat. hahahaha…

karena gue orang indonesia maka gua harus mengurus VISA dulu untuk berangkat ke sana. beda sama orang brunei tidak perlu VISA untuk pergi ke amerika (wah enak bgt ya). dan pergilah gue ke dubes amerika yang ada di brunei hanya dengan membawa passport serta surat keterangan dari kantor. sampai disana gue jam 1 siang ternyata untuk jam segitu hanya untuk pengambilan saja. dan gue di sarankan untuk mengisi form online di websitenya dan membuat appointment terlebih dahulu serta meyiapkan semua document pendukung. di antaranya (Paaport, Surat ket dari perusahaan bekerja, surat ket dari perusahaan yang di amerika, slip gaji, rekening tabungan, fhoto dengan ukuran khusus dengan latar belakan putih, dan banytak lagi ampe lupa) damnn…ribet aje neh.

akhirnya pada hari jum’at pagi pergilah gue ke dubesnya amrika yang ada di brunei. deket sama terminal brunei. di bandar. samapi sana gue pagi bgt jam 8. setelah ketemu sama satpamnya baru gue di ijikan masuk. pertama gue harus melakukan registrasi dulu dengan membayar 190 BND 9 (sekitar Rp. 1.300.000) dan dengan catatan kalau VISA gue di tolak maka uang gue ga bisa di refund. setelah membayar gue mengantri dan tiba giliran gue, di tanya lah ma tuh bule dalam bahasa inggris. beberapa pertanyaan nya kaya gini (translate ke bahasa indonesia) :
- mau ngapain kamu ke amerika ?
- pernah ga ke amerika sebelumnya ?
- siapa yang biayain kamu pergi kesana ?
- punya kenalan ga disana ?
- kalau ada pekerjaan disana mau tidak kamu tinggal disana ?
- berapa lama kamu disana ?
- dimana kamu stay ?
- siapa saja yang pergi dengan kamu ?

dan banyak lagi pertanyaan yang aneh-aneh. saat itu gue mikir gue jawab aja apa adanya. kalau mau di kasih tuh VISA kasih kalau tidak ya sudah toh gue ga rugi apa apa. gue bilang sama dia. gue ini engineer dan perusahaan gue beli product dari perusahaan amerika (sysmaster) dan gue kesana untuk training dan gue berangkat sekitar 10 hari lagi. jadi terserah sama lu (bule consularnya) mau kasih gue VISA atau tidak. hahha..baru sekali ini gue teges ma bule dalam hati gue. dan kata dia “I do my best” ya udah akhirnya gue pulang. dan pas udah 7 hari gue di telp untuk ngambil passport gue. dan ternyata passport gue udah di CAP stiker VISA amerika B2 B1 untuk lima tahun. damnn..beruntung gue kali ini. akhirnya pergilah gue ke amerika tepatnya di San-Francisco. saat itu gue dari brunei naik singapore airlines dan transit di singapore – hongkong – san-francisco. lama bgt neh perjalamanan sampai boring gue di pesawat sekitar 24 jam. gelap aja yang gue liat tambah lagi jetleg. dah akhirnya anak kampung kaya gue yang dulunya kalau sekolah ga pake sepatu dan ga di kasih jajan serta harus bawa termos es untuk jualan disekolah. bisa juga menginjakan kaki di amerika. terimakasih ya allah.

This slideshow requires JavaScript.

ini buat temen temen yang mau belajar pemograman unix. berikut ini saya kasih contoh tapi program sangan sederhana.

1. Program Kalkulator Sederhana :

#!/bin/bash
lagi=’y’;
while [ $lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear;
echo ” -= Kalkulator Sederhana =- “;
echo ” -= Menu =- ” ;
echo ” 1. Penjumlahan (+) “;
echo ” 2. Pengurangan (-) “;
echo ” 3. Perkalian (*) “;
echo ” 4. Pembagian (/) “;
echo ” 5. Modulo (%) “;
echo ” 6. Exit “;
read -p ” Operasi yang akan dilakukan [1-5] : ” pil;
if [ $pil -eq 1 ]; then
echo “=Penjumlahan= “;
echo -n “Bilangan pertama : “;
read bil1;
echo -n “Bilangan Kedua : “;
read bil2;
let bil3=$bil1+$bil2;
echo “Hasil penjumlahan : $bil1 + $bil2 = $bil3?;

elif [ $pil -eq 2 ]; then
echo “=Pengurangan= “;
echo -n “Bilangan pertama : “;
read bil1;
echo -n “Bilangan Kedua : “;
read bil2;
let bil3=$bil1-$bil2;
echo “Hasil pengurangan :$bil1 – $bil2 = $bil3? ;

elif [ $pil -eq 3 ]; then
echo “=Perkalian= “;
echo -n “Bilangan pertama : “;
read bil1;
echo -n “Bilangan Kedua : “;
read bil2;
let bil3=$bil1*$bil2;
echo “Hasil perkalian :$bil1 * $bil2 = $bil3?;

elif [ $pil -eq 4 ]; then
echo “=Pembagian= “;
echo -n “Bilangan pertama : “;
read bil1
echo -n “Bilangan Kedua : “;
read bil2
let bil3=$bil1/$bil2;
echo “Hasil pembagian :$bil1 / $bil2 = $bil3?;

elif [ $pil -eq 5 ]; then
echo “=Modulo=”;
echo -n “Bilangan pertama : “;
read bil1;
echo -n “Bilangan kedua : “;
read bil2;
let bil3=$bil1%$bil2;
echo “Hasil pembagian :$bil1 % $bil2 = $bil3?;

elif [ $pil -eq 6 ]; then
echo “Exit…..”;
exit 0;
else
echo “anda salah memasukan pilihan”
fi

echo -n “Hitung lagi (y/t) :”;
read lagi;

nah bisa dilihat program tersebut sangat simple kan, ga banyak variable. dan ada menu untuk program ini. oh ya jangan lupa ya permission CHMOD nya du ubah jadi 744. biar bisa di execute.
Thanks

Dasar UNIX

Posted: Agustus 3, 2010 in Information Technology, UNIX

UNIX

UNIX Command

By : Syamsul Nasution

BAB 1

PENGANTAR UNIX
Oleh: Syamsul Nasution

1.1 MENGENAL UNIX

Dibanding dengan sistem operasi yang lain, mungkin UNIX
bukan yang terbaik. Akan tetapi sebagian besar sistem
operasi non-UNIX itu hanya untuk komputer tertentu. Suatu
aplikasi yang dirancang pada sistem operasi tertentu tidak
dapat dengan mudah dioperasikan pada komputer dengan sistem
operasi yang berbeda.
Ketergantungan terhadap komputer tertentu dirasakan
kurang menguntungkan oleh pihak pemakai. Pada umumnya
pemakai menginginkan suatu sistem yang dapat mengoperasikan
perangkat lunak yang standar pada perangkat keras dari
berbagai vendor yang saling bersaing.
UNIX saat ini tengah memasuki proses penyempurnaan
untuk memenuhi kebutuhan standar itu. Dari pihak vendor baik
di Amerika, Eropa maupun Asia menyadari bahwa UNIX memberi
standar dunia yang memungkinkan pemakai menghindari
ketergantungan terhadap vendor tertentu. Dan standarisasi
sistem operasi berbasis UNIX yang ada saat ini berkembang
untuk mendukung terbentuknya lingkungan komputasi sistem
terbuka (open system computing).

1.2 STRUKTUR DAN KEMAMPUAN UNIX

UNIX adalah sistem operasi komputer. Yang dimaksud
dengan sistem operasi komputer adalah program yang berguna
untuk mengendalikan sistem komputer. Sistem operasi akan
mengalokasikan sumber daya komputer dan penjadualan proses.
Sumber daya dapat berupa :

– waktu CPU
– memory
– disk
– tape
– printer
– terminal
– modem
– piranti lain yang dihubungkan dengan komputer.

Sistem operasi juga merupakan penghubung antara pemakai
dengan perangkat keras dan memberikan cara bagaimana pemakai
melakukan akses pada sumber daya komputer tersebut. Hubungan
antara pemakai, sistem operasi dan perangkat keras
digambarkan pada gambar 1.1 sebagai berikut:

+———————–+
| pemakai |
+———————–+
| sistem operasi |
+———————–+
| perangkat keras |
+———————–+

Gambar 1.1 Sistem Operasi

Pada mulanya UNIX dikembangkan di komputer besar,
namun kini banyak pula terdapat pada komputer sedang bahkan
komputer mikro.
Struktur sistem UNIX terdiri dari beberapa bagian.
Untuk memudahkan dalam menerangkan struktur UNIX, maka
sistem UNIX akan diuraikan menjadi beberapa lapisan.
Lapisan-lapisan tersebut digambarkan sebagai berikut:

+—————————+
| s h e l l Utilitas . | Korn Shell
grep | . +————-+ . |
make | . | Kernel | . |
cp | . | +———+ | . |
… | . | | h/w nama pemakai
+——-|—–|—-|——-|——|-> password
+—–|—-|——-|——|-> no id pemakai
+—-|——-|——|-> no id group
+——-|——|-> informasi pemakai
+——|-> direktori tinggal
+-> program pertama

Gambar 2.1 rekening pemakai

Perhatikan bahwa pada kolom password terdapat
kata Zzwd8ofgcPVIw dimana kata tersebut merupakan password
dari pemakai. Namun apakah itu merupakan password
sesungguhnya ? Bukan ! Password sesungguhnya telah
dikonversi atau di-encrypt. Jadi yang terlihat pada file
rekening tersebut merupakan konversi dari password aslinya.
Password asli tidak dapat diketahui oleh siapapun.
Pada rekening pemakai tati juga terlihat bahwa program
yang pertama kali dieksekusi ketika pemakai masuk ke dalam
sistem UNIX adalah program /bin/sh yaitu program shell.
Seluruh rekening milik pemakai di dalam sistem UNIX
disimpan di dalam sebuah file yang diberi nama /etc/passwd.
Contoh isi sebuah file rekening pemakai adalah sebagai
berikut:

$ cat /etc/passwd
root:hxI/hs24w48Qg:0:0:Super user:/:/bin/csh
sysadm::0:0:System Administration:/usr/sysadm:/bin/sh
shut::0:0:Shutdown Otomatis:/usr/shut:/bin/sh
cron:NOLOGIN:1:1:Cron daemon for periodic tasks:/:
bin::3:3:System file administration:/:
uucp::4:4:Uucp :/usr/spool/uucppublic:/usr/lib/uucp/uucico
asg:NOLOGIN:6:6:Assignable device administration:/:
sysinfo:NOLOGIN:10:10:Access to system information:/:
network:NOLOGIN:12:12:Mail and Network :/usr/spool/micnet:
lp:NOLOGIN:14:3:Print spooler administration:/usr/spool/lp:
dos:NOLOGIN:16:10:Access to Dos devices:/:
chaerind:9zws8okDcPVIw:190:1087:geo:/tmp:/bin/sh
denny:Zzw.8ofgcPVIw:3710:1087:denny yerianto:/usr/mhs/denny:/bin/sh
ucrit:dsfinUcnsf2ck:3711:1087:ucrit :/usr/mhs/ucrit:/bin/csh
jecky:Kawhju.ZQ4GOk:3713:51::/usr/jecky:/bin/ksh
heru::3714:51::/usr/heru:/bin/sh
$

Pada sistem UNIX dikenal dua jenis pemakai yaitu:

a. Pemakai biasa
Pemakai biasa adalah pemakai yang diberi ijin untuk
menggunakan sistem dan beberapa fasilitas lain dalam
UNIX dengan batas-batas perijinan tertentu. Dengan
demikian pemakai biasa tidak dapat secara bebas
keluar masuk direktori lain atau tidak dapat secara
bebas menggunakan file-file di dalam sistem. Ingat,
pemakai biasa hanya boleh menggunakan direktori atau
file yang telah dijinkan saja.

b. Super user
Super user adalah pemakai yang memiliki hak
istimewa di dalam sistem UNIX karena memiliki
kemampuan yang tidak dibatasi oleh perijinan yang
diterapkan pada sistem. Super user dapat keluar
masuk direktori atau menggunakan file secara bebas.
Pada umumnya super user dimiliki oleh administrator
sistem. Administrator sistem adalah pemakai yang
bertanggung jawab untuk mengelola sistem. Nama
pemakai dari rekening super user , di dalam
/etc/passwd biasanya bernama root dengan nomor id
pemakai 0.

2.2 MEMULAI, MENGGUNAKAN DAN MENGAKHIRI UNIX

Jika kita baru pertama kali menggunakan UNIX, langkah
pertama yang dilakukan adalah meminta rekening pemakai
kepada administrator sistem. Jika administrator sistem
menyetujui, maka ia akan membuatkan rekening pemakai baru
bagi kita serta menyediakan home direktori sebagai direktori
tempat kita bekerja.
Jangan lupa pula menanyakan nama pemakai bagi rekening
kita, sebab nama tersebut tidak selalu sesuai dengan nama
kita yang sesungguhnya. Pada umumnya nama pemakai pada
rekening pemakai adalah 8 karakter.
Perlu ditanyakan pula apakah password sudah diberikan
ke dalam rekening tersebut.
Setelah langkah-langkah di atas telah dilakukan, maka
kita siap menggunakan terminal UNIX. Layar terminal kita
terlihat sebagai berikut:

login:

Untuk masuk ke dalam sistem UNIX kita harus melalui
proses login, yang akan memeriksa apakah kita diijinkan
masuk ke dalam sistem. Proses pemeriksaan dilakukan oleh
sistem dengan cara memeriksa nama pemakai dan password yang
kita masukkan ke dalam sistem. Berikut ini akan dicontohkan
cara memasukkan nama pemakai dan password ke dalam sistem,
dimana nama pemakai adalah denny dan passwordnya adalah
yerianto.

login: denny (masukkan nama pemakai)
password: yerianto (yerianto tak tampak dilayar)

Welcome to UNIX System V
for personal computers

Brought to you by
The Santa Cruz Operation

$ (prompt tanda shell siap)

Pengetikan password tidak akan ditampakkan pada layar.
Hal ini bertujuan untuk merahasiakan password yang diketik.
Tanda prompt menandakan jenis shell yang digunakan.
Tanda prompt $ adalah menandakan jenis shell Bourne shell
atau Korn shell. Sedangkan tanda prompt % menandakan jenis
shell C shell.
Kini kita telah berada di dalam sistem UNIX. Tepatnya
di dalam home directory yang telah ditentukan sesuai dengan
yang tercantum pada rekening pemakai. Kita dapat menjalankan
perintah-perintah UNIX yang diijinkan bagi kita.
Marilah kita coba beberapa perintah UNIX. Perintah
pertama yang akan kita coba adalah perintah untuk
menampilkan karakter ke layar terminal. Perintah yang
digunakan adalah perintah echo yang diikuti dengan argumen
berupa karakter yang akan ditampilkan ke layar terminal.
Perhatikan contoh berikut ini:

$ echo selamat datang di dunia UNIX
selamat datang di dunia UNIX
$

Kita juga dapat menampilkan siapa saja pemakai yang
sedang aktif di dalam sistem UNIX sekarang dengan
menggunakan perintah who sebagai berikut:

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
kamin tty06 Oct 23 10:29
suibam tty07 Oct 23 11:01
unyil tty08 Oct 23 11:29
satria tty09 Oct 23 11:30
$

Atau kita juga dapat melihat tanggal dan waktu sekarang
dengan menggunakan perintah date.

$ date
Fri Oct 23 07:28:32 PDT 1992
$

Untuk masuk ke dalam sistem UNIX, kita harus melalui
suatu proses yang disebut dengan proses login seperti
telah diuraikan pada awal sub bab ini. Untuk keluar dari
sistem, kita juga harus melakukan suatu proses yang disebut
dengan proses logout. Ada tiga cara untuk keluar dari sistem
UNIX yaitu:

$ exit
login:

atau

$ ^D (tekan kontrol dan D)
login:

atau

$ logout
login:

Ingat, setiap sebelum meninggalkan terminal, kita harus
melakukan proses logout. Jika tidak maka pemakai lain dapat
menggunakan rekening pemakai milik kita. Pemakai tersebut
dapat bertindak apa saja dengan mengatasnamakan rekening
pemakai kita.

2.3 PASSWORD DAN MASALAH KEAMANANNYA

Terkadang administrator sistem membuatkan rekening
pemakai baru tanpa memberikan password. Akibatnya setelah
kita mengisikan nama pemakai, maka pengisian password tidak
dilakukan dan langsung masuk ke dalam sistem UNIX. Hal ini
dapat dimisalkan sebagai rumah yang tidak terkunci pintunya.
Keadaan ini akan sangat berbahaya bagi kita, karena pemakai
lain dapat masuk dan menggunakan rekening kita. Oleh karena
itu maka sebaiknya rekening tersebut harus segera diberi
password.
Perintah yang digunakan untuk membuat atau mengganti
password adalah perintah passwd. Jika sebelumnya kita tidak
memiliki password, maka cara yang digunakan untuk membuat
password baru adalah sebagai berikut:

$ passwd
Changing password for denny
New password: yerianto (tak tak tampak pada layar)
Re-enter new password: yerianto
$

Jika sebelumnya kita sudah memiliki password, maka cara
yang dapat digunakan untuk mengganti password lama adalah
sebagai berikut:

$ passwd
Changing password for denny
Old password : yerianto
New password : gontaganti
Re-enter new password : gontaganti (konfirmasi)
$

Sebelum kita mengganti password lama, maka kita
diwajibkan untuk memasukkan password lama. Hal ini untuk
memastikan bahwa kita memang berhak mengganti password dari
rekening pemakai tersebut. Perhatikan contoh berikut dimana
pemakai yang akan mengganti password lama tidak diijinkan
mengganti dengan password baru dikarenakan tidak mengetahui
password lamanya.

$ passwd
Changing password for denny
Old password : gantiganti (seharusnya gontaganti !)
sorry.
$

Pada bagian akhir proses penggantian password dilakukan
konfirmasi untuk memastikan tidak ada kesalahan isian
password baru. Jika terjadi kesalahan pada konfirmasi maka
perubahan dibatalkan dan diulang kembali. Jika kesalahan
lebih dari tiga kali maka proses penggantian akan
dibatalkan. Perhatikan contoh berikut ini :

$ passwd
Changing password for denny
Old password : gontaganti
New password : yerianto
Re-enter new password : gontaganti (yerianto ?)
They don’t match; try again.
Re-enter new password: gantiganti (yerianto ?)
They don’t match; try again.
Re-enter new password: jerianto (yerianto ?)
Too many tries; try again later.
$

Pada umumnya panjang minimal karakter yang digunakan
untuk password adalah lima karakter (beberapa UNIX ada yang
mensyaratkan 8 karakter). Jika jumlah karakter password
kurang dari yang ditentukan maka proses penggantian akan
dibatalkan.

$ passwd
Changing password for denny
Old password : gontaganti
New password : chae (minimal 5 karakter)
Too short. Password unchanged.
$

Hal yang penting untuk diperhatikan dalam memelihara
password, yaitu kemungkinan pembongkaran password milik kita
oleh orang lain yang tidak berhak. Banyak cara yang telah
dilakukan oleh para hacker untuk membongkar password
sesorang. Tujuan mereka beraneka ragam, dari sekedar mencari
kepuasan terhadap keberhasilan membongkar hingga upaya yang
disengaja untuk mengacaukan sistem kita.
Berikut ini akan diberikan panduan praktis untuk
melindungi password kita agar tidak mudah dibongkar orang
lain.

a. Password harus mudah diingat oleh kita sendiri
tetapi tidak mudah diingat oleh orang lain.

b. Jangan menggunakan bagian dari nama lengkap, nama
panggilan, nama kekasih, tanggal lahir, inisial,
dan hal lain yang berhubungan dengan diri kita. Atau
jangan pula menggunakan nama tempat, nama gedung,
atau kata-kata yang lazim ada di kamus bahasa .
contoh:

– denny (nama pemakai sendiri)
– yerianto (nama akhir)
– 20011969 (tanggal lahir)
– 7270165 (nomor telepon)
– elexmedia (nama instansi)
– jembatan (kata yang lazim)

Jika masih tetap menginginkan kata-kata tersebut,
seharusnya kata-kata tersebut diacak terlebih
dahulu, misalnya dengan cara membalik urutan huruf
sehingga sepintas lalu agak sulit diterka.

– ynned (nama pemakai sendiri, denny)
– 96911002 (tanggal lahir, 20011969)
– 5610727 (nomor telepon, 7270165)
– aidemxele (nama instansi elexmedia)

Terkadang kata-kata ‘plesetan’ dapat lebih
menyulitkan pembongkaran password.
Contoh:

– bon7ovi (bon jovi, penyanyi rock)
– rock 4U (rock for you)
– man7des (mantu judes)

c. Jika mengalami kesulitan dalam menghafal password,
jangan melakukan pencatatan pada buku, papan tulis
atau tempat lain. Hal ini akan memudahkan orang lain
untuk melihat dan kemudian membongkarnya. Tempat
yang paling aman adalah di dalam otak kita.

d. Gunakan lebih dari enam karakter dan sebaiknya
mencakup karakter-karakter non alfabet.
Contoh:

– s_AR2_c3
– dg71m33ex
– ada blank !
– 7d2u5u9r=
– 1/3disayu

Sebenarnya, password yang paling ideal adalah
gabungan alfabet dan non alfabet karakter dengan
rangkaian yang tak bermakna. Namun sayangnya hal itu
sangat sulit untuk dihafalkan.
Cara berikut ini akan menghasilkan rangkaian
karakter password yang mudah dihafal oleh kita
tetapi cukup sulit dihafal oleh orang lain. Caranya
adalah dengan mengambil karakter awal suatu kalimat
panjang yang mudah diingat. Gabungan karakter awal
tersebut akan membentuk rangkaian karakter password.
Selanjutnya yang perlu kita hafalkan adalah
kalimatnya, bukan rangkaian karakter passwordnya.
Kalimat tersebut bisa sebagai peribahasa, awal lagu
dan lain-lain. Perhatikan contoh berikut ini:

o bka5rrw balon ku ada 5 rupa rupa warnanya
o tagytr tak ada gading yang tak retak
o dksnkk dut keredut si nini kapi kadut
o jlpmrsgh jhon lenon paul mccartney ringo
star george harrison

Perhatian, jika kita lupa password rekening pemakainya,
maka tak ada mekanisme apa pun yang dapat menemukan kembali
password yang terlupakan tersebut.

2.4 FORMAT UMUM PERINTAH UNIX

Shell bertanggung jawab untuk mengeksekusi seluruh
program yang kita panggil dari terminal. Setiap kita
memasukkan sebaris kata-kata dan diakhiri dengan enter ke
dalam shell, shell akan menganalisa kata-kata tersebut dan
menentukan apa yang harus dikerjakan. Format umum yang
diterima oleh shell adalah sebagai berikut:

nama-program argumen-argumen

Baris kata-kata yang diketik ke dalam shell ini disebut
perintah baris. Shell akan memeriksa perintah baris ini dan
menentukan nama program yang dieksekusi dan argumen-argumen
yang dilewatkan kepadanya.
Shell menggunakan karakter khusus untuk menentukan
dimana nama program dimulai dan diakhiri dan dimana nama
masing-masing argumen dimulai dan diakhiri pula. Karakter
yang digunakan untuk menandakan hal tersebut adalah karakter
whitespace yaitu berupa karakter spasi (space), karakter tab
dan karakter newline. Pemunculan karakter tersebut lebih
dari satu kali akan diabaikan oleh shell.

cp file1 file2

Shell akan memeriksa perintah baris tersebut dan
mengambil karakter dari awal baris hingga ditemukan karakter
whitespace sebagai nama program, yaitu cp. Kumpulan karakter
sesudah karakter whitespace tersebut hingga ditemukan
kembali karakter whitespace adalah sebagai argumen pertama,
yaitu file1. Selanjutnya mulai dari sesudah karakter
whitespace kedua hingga ditemukan karakter whitespace
selanjutnya adalah argumen ke dua, yaitu file2. Setelah
analisa perintah baris ini, shell mengetahui bahwa yang akan
dieksekusi adalah perintah cp dengan argumen-argumen ke satu
adalah file1 dan argumen ke dua adalah file2. Hal ini dapat
digambarkan sebagai berikut:

+———-+
+———+ argumen | file1 |
| cp | namafile
| +——————–> namafile
+————————–> namafile

$ ls -alR
|
+————————–> gabungan pilihan

$ grep -v “pasal[1-12]” file1
| | |
| | +——> namafile
| +—————-> ekspresi
+————————–> pilihan

Gambar 2.3 perintah rm, ls dan grep

Untuk melakukan pemanggilan lebih dari satu perintah
dalam satu baris, dapat kita gunakan tanda semicolon ‘;’
sebagai pemisah antar perintah.

$ date ; who; echo selamat datang di UNIX
Fri Oct 23 07:28:32 PDT 1992
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
kamin tty06 Oct 23 07:30
suibam tty07 Oct 23 07:30
unyil tty09 Oct 23 07:30
selamat datang di UNIX
$

2.5 KARAKTER DAN TOMBOL KHUSUS UNIX

Shell akan memberi arti khusus pada beberapa karakter.
Karakter-karakter ini memiliki fungsi khusus, sehingga
pemunculannya akan diartikan khusus pula oleh shell. Berikut
ini adalah tabel dari karakter khusus dan fungsinya.

——————————————————-
Karakter Fungsi
——————————————————-
“…” Mencegah tindakan karakter khusus dalam
untaian karakter yang disertakan, tetapi
memperbolehkan karakter khusus untuk ekspansi
variabel dan perintah bekerja.
$ Menyebabkan substitusi variabel shell
& proses latar belakang
‘…’ Mencegah karakter khusus yang ada dalam
untaian karakter yang disertakan
() Memberi daftar perintah untuk dikerjakan
sebagai proses terpisah
* karakter yang dapat mencocokkan dengan
untaian karakter apa saja
– menunjukkan tanda pilihan dari perintah yang
menyertainya
/ memisahkan bagian dari nama jalurnya
direktorinya
: memisahkan harga untaian karakterpada saat
membuat sebuah variabel shellmenjadi lebih
dari satu untaian karakter
; memisahkan beberapa perintah dalam satu baris
;; delimiter pada perintah case
keluaran standar
? karakter yang dapat mencocokkan dengan
karakter tunggal apa saja
[...] mengelompokkan karakter untuk pencocokkan
\ mencegah karakter khusus yang mengikutinya
{} mengelompokkan daftar perintah
| membentuk pipa antar perintah
——————————————————-
Tabel 2.1 Karakter khusus

Disamping karakter khusus, terdapat pula beberapa
tombol yang memiliki makna tertentu. Berikut ini adalah tabel
dari tombol khusus dan fungsinya:

——————————————————-
Singkatan Arti Tombol
——————————————————-
intr gagalkan operasi Del (Delete)
quit gagalkan dengan core dump ^\ (Ctrl-\)
erase hapus dengan backspace ^H (Backspace)
kill hapus baris ^U (Ctrl-U)
eof bangkitkan end-of-file ^D (Ctrl-D)
eol pilihan end-of-line ^@ (NULL)
swtch job-control switch ^@ (NULL)
——————————————————-

Tabel 2.2 Tombol khusus

Tombol-tombol tersebut dapat kita definisi ulang dengan
menggunakan perintah stty. Misalnya UNIX pada komputer yang
kita gunakan menggunakan tombol del untuk melakukan erase dan
kontrol-C untuk intr, maka kita dapat mengubah lingkungan
kita seperti terlihat pada tabel di atas dengan cara sebagai
berikut:

$ stty intr “^?” erase “^H”
$

Untuk melihat tombol yang telah terdefinisi di dalam
lingkungan kita, dapat digunakan cara sebagai berikut:

$ stty -a
speed 9600 baud; line = 0; intr = DEL; quit = ^\; erase = ^H;
kill = ^U; eof = ^D; eol = ^@; swtch = ^@ -parenb -parodd cs8
-cstopb hupcl cread -clocal -loblk -ctsflow -rtsflow -ignbrk
brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc
ixon ixany -ixoff isig icanon -xcase echo echoe echok -echonl
-noflsh opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel
cr0 nl0 tab3 bs0 vt0 ff0
$

2.6 PERTOLONGAN TENTANG PERINTAH

Jika kita mengalami kesulitan dalam mengoperasikan
UNIX, ada sumber daya informasi yang dapat kita gunakan
yaitu buku manual UNIX. Di dalam buku tersebut terdapat
penjelasan yang rinci tentang berbagai hal termasuk
pertolongan tentang perintah-perintah yang kita kurang
mengerti.
Beberapa UNIX menyediakan fasilitas pertolongan
langsung di dalam sistem terhadap perintah yang tidak kita
kenal, yaitu menggunakan perintah man dengan diikuti nama
perintah yang ingin diketahui.

man perintah

Setelah pemanggilan perintah tersebut di atas, maka
akan ditampilkan manual dari perintah yang ditanyakan.
Manual perintah ditampilkan dalam bentuk yang telah ditata
menggunakan text formatter. Manual tersebut berisikan
informasi tentang:

a. Nama (name)
Nama perintah atau program dan keterangan singkat.

b. Tata kalimat (syntax)
Menguraikan tentang tata cara menggunakan perintah
UNIX. Keterangan yang diberi kurung siku atau ‘[]‘
adalah pilihan atau option. Pada umumnya pilihan
didahului tanda minus.

Contoh:

translate [-f rules] [-d] file [output-file]

Perintah ini dapat digunakan sebagai berikut:

translate source
translate -f myrules source
translate -d source
translate source destination
translate -f myrules -d source destination

c. Deskripsi (description)
Menguraikan aksi dari perintah tersebut, termasuk di
dalamnya adalah penjelasan dari masing-masing
pilihan dan parameternya.

d. Lihat juga (see also)
Acuan ke perintah lain.

e. File-file
Merupakan daftar file yang menjalankan perintah.
File-file ini mungkin sebagai subyek dari perintah.

f. Catatan (Notes)
Komentar-komentar mengenai keterbatasan atau bahaya-
bahaya dari penggunaan perintah ini.

g. Kesalahan (Bugs)
Berisi daftar kesalahan yang telah diketahui di
dalam program.

Beberapa UNIX menggunakan perintah help untuk
menampilkan pertolongan. Program help lebih cepat dari pada
man dalam menampilkan pertolongan karena help tidak
menggunakan text formatter. Pada umumnya help menampilkan
tata kalimat perintah atau program dan sebaris penjelasan
tentang pilihan.

$ help more

more:

MORE – View File by Screenful or by Line

$ more [options] [files]
Options:
+ /pat start two lines beforeline containing pat
-c redraw page on line at a time
-d prompt after Screenfull
-f count by newlines instead of screen lines
-l treat formfeed (^L) as ordinary character
-n window size (default set with stty)
+n start viewing file at line n
-r display control character as ^C
-s reduce multiple blank lines to one
-u suppress terminal underlining or enhancing
-w prompt before exiting (any key terminates)
? or h show summary of more commands
$

BAB 3

FILE DAN DIREKTORI
Oleh: Syamsul Nasution

Bab ini akan menjelaskan tentang konsep file dan
direktori serta bagaimana menggunakannya di dalam sistem
UNIX. Pembahasan akan mencakup mengenai:

– pengertian file dan direktori
– aturan penamaan file dan direktori
– menggunakan perintah dasar dengan pwd, ls, cd
– melihat isi file dengan cat, pg
– menentukan jenis file
– membuat dan menghapus direktori
– menggunakan perintah file dengan cp, mv dan rm
– substitusi nama file
– perijinan dan proteksi

3.1 PENGERTIAN FILE DAN DIREKTORI

Sistem file pada sistem UNIX dapat dikelompokkan
menjadi 3 jenis yaitu:

a. File biasa
adalah file yang umumnya kita gunakan untuk
menyimpan data, seperti program atau dokumentasi.

b. File khusus
tidak seperti halnya kebanyakan sistem operasi
lainnya, misalnya DOS, UNIX memperlakukan semua
piranti atau peralatan yang terhubung ke dalamnya
sebagai file. Piranti-piranti tersebut oleh UNIX
dikelompokkan menjadi dua, yaitu:

o piranti blok
piranti blok akan menyalurkan datat dalam blok
512 byte, misalnya disk.

o piranti karakter
piranti karakter menyalurkan data satu karakter
setiap saat, misalnya terminal.

Piranti-piranti ini semua biasanya diletakkan di
dalam sebuah direktori khusus, yaitu direktori /dev.

c. Direktori
adalah file yang berisi kumpulan file. Kumpulan file
dapat berupa file biasa atau file khusus, bahkan
dapat pula berisi direktori sehingga memungkinkan
direktori berisi direktori. Sebagai hasilnya, UNIX
memiliki sistem direktori yang berbentuk sebuah
pohon atau tree.

/
|
..+—-+—-+—-…—-+—-…
| | | |
bin dev etc … usr
|
..+———-+—-+—-+—-…
| | |
bin mhs staf
… | |
… +—-+—-+ +—-+—- …
| | | | |
denny … … heru dono
. . .
. . .
. . .

Gambar 3.1 Sistem direktori pohon

Penamaan direktori ditandai dengan sebuah ‘/’.
Direktori utama untuk seluruh sistem disebut
direktori root atau direktori akar dan ditulis
sebagai ‘/’. Direktori root memiliki direktori lain
sebagai anggota. Beberapa diantaranya adalah
direktori bin, direktori dev, direktori etc, dan
direktori usr. Karena mereka merupakan anggota
direktori root, namanya ditulis sebagai /bin , /dev,
/etc dan /usr.
Direktori /usr dapat memiliki direktori lain,
misalnya direktori staf dan mhs. Nama direktori
dituliskan /usr/staf dan /usr/mhs. Nama jalur dari
root hingga ke direktori tertentu disebut complete
path name atau nama lengkap jalur. Perhatikan bahwa
direktori /usr/bin dan /bin berbeda. Mereka mungkin
memiliki nama akhir yang sama tetapi nama jalur
lengkapnya berbeda.

Panjang nama file dan direktori dapat lebih dari empat
belas karakter, yang terdiri karakter apa saja. Namun
demikian, beberapa karakter telah memiliki arti khusus bagi
shell, sehingga penggunaan karakter tersebut pada nama file
dan direktori sebaiknya dihindari (perhatikan tabel karakter
khusus pada bab sebelumnya). Berikut ini contoh-contoh dari
nama file yang benar:

– coba
– COBA
– 1992
– prog1.c
– prog2.c
– mhs_S1
– old-prog
– old_prog

Berikut ini adalah contoh nama-nama file yang sebaiknya
dihindari.

– >cobaaku
– coba|aku
– sia?a
– [repot]
– pau LAYAR TERMINAL
. ——–+ /
. . |/
. |\ .
——–+ \ .
KEYBOARD masukan 0 > .
——–+ / .
. |/ .
. . |\
. ——–+ \
. kesalahan 2> LAYAR TERMINAL
. ——–+ /
. . |/
…………

Gambar 4.1 Proses masukan dan keluaran

Kebanyakan program yang tersedia dalam UNIX mengambil
masukan dari masukan standar dan menuliskan keluaran ke
keluaran standar. Program seperti ini biasa disebut filter
Program yang menggunakan nama file sebagai
salah satu parameter dari perintahnya, sesungguhnya mengubah
masukan standarnya dari keyboard ke file, sehingga file
menjadi masukan bagi program. Sebagai contoh, misalnya kita
memiliki sebuah file bernama peserta yang berisi nama-nama.
File tersebut akan diurutkan berdasarkan nama dengan urut
kecil ke besar, maka cara yang dilakukan adalah sebagai
berikut:

$ sort peserta
arif budiman
bagus pribadi
denny yerianto
fanny angela
ferry sihombing
irmawati
$

Perintah sort mengasumsikan bahwa kita ingin mengurut
isi file peserta. Jika perintah sort dilakukan tanpa
memberikan nama file yang akan diurut sebagai argumen, maka
program mengharapkan masukan dari masukan standar yaitu
keyboard. Untuk itu maka kita dapat memasukkan nama-nama
yang akan diurut satu persatu sebagai masukan melalui
keyboard. Untuk mengakhiri masukan, ketikkan karakter end-
of-file, yaitu Kontrol-D pada awal baris, selanjutnya
perintah sort akan segera mengurut masukan.

$ sort
denny yerianto
fanny angela (masukan via keyboard)
bagus pribadi
arif budiman
irmawati
ferry sihombing
^D (akhiri masukan)
arif budiman (mulai proses urut)
bagus pribadi
denny yerianto
fanny angela
ferry sihombing
irmawati
$

Karena nama file tidak disebutkan pada perintah sort di
atas maka masukan standar perintah tersebut diambil dari
keyboard. Detil perintah sort akan dijelaskan pada bab
selanjutnya.

4.1.1 Pengalihan Keluaran

Dalam sistem UNIX, secara normal keluaran dari sebuah
perintah dikirim ke keluaran standar, yaitu layar terminal.
Namun keluaran tersebut secara mudah dapat dialihkan ke file
atau program lain. Kemampuan inilah yang disebut sebagai
pengalihan keluaran atau output redirection.
Jika karakter ‘>’ diikuti nama file ditambahkan pada
akhir perintah UNIX yang menampilkan keluaran ke keluaran
standar, maka keluaran dari perintah tersebut akan dialihkan
ke file yang disebutkan dan tidak ditampilkan ke layar
terminal. Perhatikan ilustrasi berikut ini:

…………
. . |\
. ——–+ \
. keluaran 1 > FILE
. ——–+ /
. . |/
. |\ .
——–+ \ .
KEYBOARD masukan 0 > .
——–+ / .
. |/ .
. . |\
. ——–+ \
. kesalahan 2> LAYAR TERMINAL
. ——–+ /
. . |/
…………

Gambar 4.2 Proses pengalihan keluaran

Baris perintah berikut ini akan menyebabkan keluaran
perintah who dialihkan dari layar terminal ke file.

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$ who > peserta
$

Pada perintah who kedua tidak terlihat keluaran pada
layar terminal. Hal ini disebabkan keluarannya telah
dialihkan ke file peserta. Kita dapat memeriksa isi file
peserta dengan perintah cat sebagai berikut:

$ cat peserta
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$

Contoh lain dari pengalihan keluaran adalah penyimpanan
tanggal dan waktu ke dalam file waktu sebagai berikut:

$ date
Fri Oct 23 07:28:32 PDT 1992
$ date > waktu
$ cat waktu
Fri Oct 23 07:28:32 PDT 1992
$

Perintah echo menuliskan keluaran ke keluaran standar,
sehingga dapat dialihkan sebagai berikut:

$ echo baris satu > berkas
$ cat berkas
baris satu
$

Jika keluaran sebuah perintah dialihkan ke sebuah file
yang sebelumnya telah berisi data, maka data sebelumnya akan
hilang dan diganti dengan data yang baru. Perhatikan contoh
berikut ini.

$ echo baris satu > berkas
$ cat berkas
baris satu
$ echo baris dua > berkas
$ cat berkas
baris dua
$
Isi dari file berkas (baris satu) hilang tertimpa data
baru ketika perintah echo kedua dieksekusi.
Jika diinginkan data sebelumnya tidak hilang dan data
baru ditambahkan di bawah data lama, maka gunakanlah
karakter ‘>>’ sebagai pengganti karakter ‘>’.

$ echo baris satu > berkas
$ cat berkas
baris satu
$ echo baris dua >> berkas (append)
$ cat berkas
baris satu (tidak hilang !)
baris dua
$

4.1.2 Perintah cat dan Hubungannya dengan Proses

Berbeda dengan uraian mengenai perintah cat pada bab
sebelumnya, kali ini akan diuraikan kemampuan perintah cat
dan hubungannya dengan proses.
Seperti pada sebagaian besar perintah lainnya pada
UNIX, default masukan dan keluaran perintah cat adalah
masukan standar dan keluaran standar. Artinya jika tidak ada
nama file yang dikirim sebagai parameter dari perintah cat,
maka masukan diambil dari keyboard terminal.

$ cat
baris satu
baris satu
baris dua
baris dua
baris tiga
baris tiga
^D
$

Perintah cat diatas menerima masukan dari masukan
standar, yaitu keyboard terminal dan langsung ditampilkan
melalui keluaran standar, yaitu layar terminal.
Agar masukan yang kita ketik dapat disimpan di dalam
file, maka keluaran dari perintah cat harus dialihkan ke
file tertentu.

$ cat > sampah
baris satu
baris dua
baris tiga
^D
$ cat sampah
baris satu
baris dua
baris tiga
$

Dengan menggunakan karakter pengalihan ‘>>’, kita dapat
menambahkan isi suatu file ke file lainnya.

$ cat berkas1
berkas1 baris 1
berkas1 baris 2
$ cat berkas2
berkas2 baris 3
berkas2 baris 4
berkas2 baris 5
$ cat berkas2 >> berkas1
$ cat berkas1
berkas1 baris 1
berkas1 baris 2
berkas2 baris 3
berkas2 baris 4
berkas2 baris 5
$

Jumlah file yang akan ditambahkan ke dalam suatu file
dapat lebih dari satu dan akan disusun berurutan.

$ cat berkas1
berkas1 baris 1
berkas1 baris 2
$ cat berkas2
berkas2 baris 3
berkas2 baris 4
berkas2 baris 5
$ cat berkas3
berkas3 baris 6
berkas3 baris 7
berkas3 baris 8
$ cat berkas2 berkas3 >> berkas1
$ cat berkas1
berkas1 baris 1
berkas1 baris 2
berkas2 baris 3
berkas2 baris 4
berkas2 baris 5
berkas3 baris 6
berkas3 baris 7
berkas3 baris 8
$

Penyusunan file yang dilarang pada perintah cat adalah
sebagai berikut:

cat file1 file2 > file2

karena proses yang terjadi tidak akan berjalan dengan
baik dan sulit diprediksi hasilnya. Untuk mengerjakan proses
di atas terpaksa harus digunakan file sementara.

$ cat file1 file2 > temp
$ mv temp file2
$

4.1.3 Pengalihan Masukan

Jika keluaran dari sebuah perintah dapat dialihkan,
maka masukan dari sebuah perintah pun dapat dialihkan,
misalnya mengalihkan masukan dari keyboard terminal menjadi
masukan dari file. Untuk mengalihkan masukan ke dalam sebuah
perintah dapat digunakan karakter ‘ LAYAR TERMINAL
. ——–+ /
.
——–+ / .
. |/ .
. . |\
. ——–+ \
. kesalahan 2> LAYAR TERMINAL
. ——–+ /
. . |/
…………

Gambar 4.3 Proses pengalihan masukan

Sebagai contoh, untuk menghitung jumlah baris di dalam
file peserta digunakan perintah wc -l sebagai berikut:

$ wc -l peserta
6 peserta
$

Atau kita juga dapat menghitung jumlah baris file
dengan mengalihkan masukan dari perintah wc.

$ wc -l < peserta
6
$

Perhatikan bahwa ada perbedaan keluaran yang dihasilkan
dari dua bentuk pemanggilan perintah wc di atas. Pada
perintah wc pertama nama file disertakan pada keluaran,
sedangkan pada perintah wc kedua nama file tidak disertakan
pada keluaran. Perbedaan ini disebabkan karena pada perintah
wc pertama, wc mengenal nama file yang dibaca. Pada perintah
wc kedua, wc hanya mengenal bahwa ia mengambil data dari
masukan standar dimana masukan standar menerima pengalihan
dari file.
Beberapa perintah UNIX tidak memiliki parameter yang
berupa nama file yang berisi data yang akan diolah. Masukan
hanya diterima melalui masukan standar atau melalui
pengalihan masukan. Sebagai contoh, perintah untuk melakukan
translasi karakter, yaitu perintah tr.

$ tr '[a-z]' '[A-Z]' (masukan standar)
chaerinda
CHAERINDA
denny yerianto
DENNY YERIANTO
^D
$ cat peserta
arif budiman
bagus pribadi
denny yerianto
fanny angela
ferry sihombing
irmawati
$ tr '[a-z]' '[A-Z]' < peserta (hanya via pengalihan)
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$

4.1.4 Pengalihan Masukan dan Keluaran

Sering terjadi bahwa kita tidak sekedar mengalihkan
masukan saja atau mengalihkan keluaran saja. Namun
mengalihkan masukan dan keluaran bersama-sama. Untuk
jelasnya marilah kita lihat kasus berikut ini.

$ cat peserta
arif budiman
bagus pribadi
denny yerianto
fanny angela
ferry sihombing
irmawati
$ tr '[a-z]' '[A-Z]' < peserta (hanya via pengalihan)
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$

$ cat peserta
arif budiman
bagus pribadi
denny yerianto
fanny angela
ferry sihombing
irmawati
$

Hasil perintah tr tidak tersimpan di dalam file peserta
dan file aslinya tidak berubah sama sekali. Untuk
mendapatkan hasil dari perintah tr maka kita harus melakukan
pengalihan masukan dan keluar bersama-sama.

$ tr '[a-z]' '[A-Z]' uppercase
$ cat uppercase
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$

Jika diinginkan file aslinya berubah, kita perlu
melakukan:

$ mv uppercase peserta
$ cat peserta
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$

4.1.5 Pengalihan Keluaran Kesalahan Standar

Ada beberapa keluaran program yang ditampilkan di layar
terminal tetapi tidak dapat dialih dengan menggunakan cara-
cara di atas. Keluaran tersebut adalah keluaran kesalahan
standar.

$ cat peserta takada > gabung
cat: cannot open takada (file takada tidak ada)
$ cat gabung
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$

Perhatikan bahwa pesan kesalahan cat: cannot open
takada tidak terekam di dalam file gabung. Permasalahannya
kini adalah bagaimana agar pesan kesalahan tersebut terekam
di dalam file gabung dan tidak ditampilkan di layar
terminal. Untuk keperluan tersebut, maka kita perlu
mengalihkan keluaran kesalahan standar. Perhatikan contoh
ilustrasi pengalihan sebagai berikut:

…………
. . |\
. ————-+ \
. keluaran 1 > FILE
. ————-+ /
. . ^ |/
. |\ . / \
——–+ \ . /_2_\
KEYBOARD masukan 0 > . | |
——–+ / . | |
. |/ . | |
. . | |
. ———+ |
. kesalahan |
. ———–+
. . 2&1
…………

Gambar 4.4 Proses pengalihan keluaran kesalahan standar

Pada proses pengalihan keluaran kesalahan standar harus
memperhatikan deskriptor file. Perhatikan tabel berikut ini.

——————————————————
Nomor Deskriptor file Fungsi
——————————————————
0 Masukan standar
1 Keluaran standar
2 Keluaran kesalahan standar
——————————————————

Tabel 4.1. Deskriptor file

Untuk mengalihkan keluaran kesalahan standar ke dalam
sebuah file digunakan deskriptor file 2 dengan notasi
sebagai berikut

2> namafile

Perhatikan bahwa konstruksi penulisan tidak mengijinkan
penggunaan spasi diantara angka 2 dan karakter ‘>’.
Berikut ini contoh dimana pesan kesalahan dialihkan ke dalam
sebuah file.

$ cat peserta takada 2> salah
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
$ cat salah
cat: cannot open takada (file takada tidak ada)
$

Untuk menggabungkan keluaran standar atau keluaran
kesalahan ke file yang mengikuti digunakan notasi berikut:

perintah >&
Berikut ini contoh untuk menggabungkan keluaran
kesalahan standar (2) ke keluaran standar (1).

$ cat peserta takada > output 2>&1
$ cat salah
ARIF BUDIMAN
BAGUS PRIBADI
DENNY YERIANTO
FANNY ANGELA
FERRY SIHOMBING
IRMAWATI
cat: cannot open takada (kesalahan tergabung)
$

4.2 PEMIPAAN

Pada contoh-contoh diatas bila kita ingin menggunakan
keluaran dari suatu program menjadi masukan dari program
lain, maka kita harus menggunakan file sementara, untuk
aliran data. Berkas sementara tersebut akan dihapus jika
telah selesai digunakan.

$ who > pemakai
$ wc -l LAYAR
| . ——–+ / TERMINAL
………… . . |/
. . |\ . |\ .
. ——–+ \———+ \ .
. keluaran 1 >masukan 0 > .
. ——–+ /———+ / .
KEY . . |/ . |/ .
BOARD. |\ . . . |\
——–+ \ . . ——–+ \
masukan 0 > . . kesalahan 2> LAYAR
——–+ / . . ——–+ / TERMINAL
. |/ . . . |/
. . . . |\
. —————–. .-+ \
. kesalahan . . 2 > LAYAR
. —————–. .-+ / TERMINAL
. . . . |/
………… …………

Gambar 4.5 Proses pemipaan

Contoh di atas dapat diubah dengan menggunakan pipa
sebagai berikut:

$ who | wc -l
5
$

Program yang membaca masukan dari masukan standar dapat
di alihkan masukannya dari program lain dengan menggunakan
pipa. Konvensi ini berlaku untuk hampir semua program
standar dalam sistem UNIX.
Pemipaan dapat dilakukan secara berurutan untuk lebih
dari dua program. Program akan berjalan sesuai urutan dalam
pipa.

$ who | sort | wc -l
5
$

Sistem UNIX hanya memproses pemipaan bagi keluaran
standar dari suatu program dan tidak memproses pemipaan bagi
keluaran kesalahan standar sehingga kesalahan suatu program
pada saat melakukan pemipaan tetap ditampilkan.

$ ls file1 file2 file3 file4 | wc -l > test
file2 not found
$ cat test
3
$

Dengan sedikit trik kita dapat mengatasi hal ini, yaitu
dengan pengalihan kesalahan standar ke keluaran standar
sebagai berikut:

$ ls file1 file2 file3 file4 2>&1 | wc -l > test
$ cat test
file2 not found
3
$

Sistem UNIX juga menyediakan fasilitas untuk
mencabangkan keluaran dari hasil eksekusi program, yaitu
dengan menggunakan perintah tee. Hal ini dapat
diilustrasikan sebagai berikut:

FILE
^
/ \
………… /_1_\
. . | | |\
. ——–+ +–+ \
. keluaran 1 > LAYAR TERMINAL
. ————-+ /
. . |/
. |\ .
——–+ \ .
KEYBOARD masukan 0 > .
——–+ / .
. |/ .
. . |\
. ——–+ \
. kesalahan 2> LAYAR TERMINAL
. ——–+ /
. . |/
…………

Gambar 4.6 Proses tee

Perhatikan contoh berikut ini:

$ who | tee pemakai | wc -l
5
$ cat pemakai
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$

Dengan perintah tee, hasil keluaran dari perintah who
yang diterima melalui pipa, dicabang dua (T) ke layar
terminal dan file.

4.3 PROSES LATAR DEPAN DAN LATAR BELAKANG

UNIX merupakan sebuah sistem multitasking dan
multiuser. Multitasking berarti lebih dari satu program yang
dapat berjalan pada waktu yang bersamaan. Sedangkan
multiuser berarti bahwa lebih dari satu pemakai yang dapat
login dan menjalankan program pada waktu yang bersamaan.
Terdapat sekurangnya satu proses atau program yang berjalan
pada sistem UNIX untuk setiap pemakai yang login.
Konsep pemikiran yang mendasari pemikiran multitasking
dan multiuser adalah dikarenakan komputer sangat cepat
sehingga dapat menjalankan sebuah proses untuk sesaat,
beralih ke proses lain dan menjalankan untuk sesaat serta
kemudian beralih kembali ke proses semula. Dengan demikian
seolah-olah keduanya berjalan pada waktu yang bersamaan.
UNIX menentukan program yang berjalan dan mengatur peralihan
bolak-balik antar mereka.
Setiap proses yang dijalankan oleh UNIX memiliki
sebuah prioritas tertentu. Jika terdapat beberapa proses
yang siap untuk dijalankan, maka UNIX akan menjalankan
proses yang memiliki prioritas tertinggi.
Ada dua jenis proses yang terjadi di dalam sistem UNIX,
yaitu proses yang berhubungan langsung dengan terminal
pemakai disebut proses latar depan (foreground processes)
dan proses yang berjalan yang tidak berhubungan dengan
terminal pemakai disebut proses latar belakang (background
processes).
Kita dapat mendefinisikan sebuah proses atau program
sebagai proses latar belakang dengan meletakkan karakter ‘&’
pada akhir perintah. Dengan demikian kita dapat menjalankan
program lain tanpa harus menunggu program atau proses latar
belakang selesai.

$ ls -l /etc | sort > isi &
115 (nomor id proses)
$ date (proses pertama belum selesai)
Fri Oct 23 07:28:32 PDT 1992
$

Proses latar belakang dijalankan bila proses yang
berhubungan dengan terminal sedang menunggu. Pada umumnya
program yang berjalan dengan waktu cukup lama akan
dilaksanakan dengan prioritas rendah di latar belakang.
Untuk melihat status proses yang dijalankan oleh sistem
kita gunakan perintah ps sebagai berikut:

$ ps
PID TTY TIME CMD
35 01 0:02 sh
77 01 0:00 ps
$
Status proses secara lengkap dapat dilihat dengan
menggunakan pilihan -l pada perintah ps sebagai berikut:

$ ps -l
F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME CMD
1 S 101 89 1 3 30 20 5512 12 50602 02 0:02 sh
1 R 101 183 89 52 53 20 6021 22 02 0:02 ps l
$

Penjelasan kode status perintah ps -l:
F proses flag
01 core
02 proses pertukaran dari sistem
04 proses terkunci dalam RAM
10 proses sedang ditukar
20 proses sedang dicari
S keaadan proses
O Non eksisten
S tidur
W menunggu
R berjalan
I intermediate
Z diakhiri
UID id pemakai dari pemilik proses
PID id proses
PPID PID dari proses ayah
C penggunaan prosesor untuk penjadwalan
PRI prioritas proses (0 s/d 120)
NI digunakan dalam komputasi prioritas
ADDR Alamat memori dari proses bila dalam memori
Alamat disket dari proses bila tidak di dalam
memori
SZ ukuran image proses memori dalam 512 byte blok
WCHAN kejadian dengan proses sedang tidur atau menunggu
TTY terminal yang mengendalikan proses
TIME waktu kumulatif pengerjaan
CMD Perintah dan argumennya

4.4 MENGHENTIKAN PROSES DENGAN PERINTAH kill

Untuk menghentikan sebuah proses yang dijalankan di
latar belakang dapat digunakan perintah kill. Untuk
melakukan penghentian proses tersebut kita perlu mengetahui
nomor id proses atau PID dari proses yang bersangkutan.

kill PID

Nomor id proses dapat dilihat dari keluaran balik
dari sistem ketika perintah dilaksanakan dengan proses latar
belakang.

$ troff doc &
56 (nomor id proses)
$
atau dapat dilihat dengan menggunakan perintah ps.

$ troff doc &
56 (nomor id proses)
$ ps
PID TTY TIME CMD
35 01 0:05 sh
56 01 0:02 troff doc (proses troff !)
77 01 0:01 ps
$

Perhatikan contoh untuk menghentikan proses berikut
ini:

$ troff doc &
56 (nomor id proses)
$ ps
PID TTY TIME CMD
35 01 0:05 sh
56 01 0:02 troff doc (hapus !)
77 01 0:01 ps
$ kill 56
$ ps
PID TTY TIME CMD
35 01 0:09 sh
99 01 0:01 ps
$

Perintah kill bekerja dengan mengirimkan sebuah sinyal
pada proses. Perintah kill dapat mengirim bermacam-macam
sinyal sesuai dengan kebutuhannya. Proses yang bekerja hanya
berhenti jika sinyal yang dikirim sesuai. Nilai default
dari sinyal untuk perintah kill adalah 15, yaitu sinyal
terminasi.
Beberapa proses dapat dihentikan dengan menggunakan
sinyal 15 namun proses tersebut masih tetap berjalan dan
tidak mengakhirinya. Bila hal ini terjadi, gunakanlah sinyal
9 untuk mengakhiri proses tersebut.

$ kill -9 115
$

4.5 MENJADUALKAN PROSES DENGAN PERINTAH at

Terkadang kita menginginkan suatu proses dilakukan pada
waktu yang kita jadualkan. Untuk maksud tersebut dapat kita
gunakan perintah at yang diikuti dengan jadual waktu
pelaksanaan perintah dan perintah-perintah yang
dijadualkan. Selanjutnya sistem akan memberikan respon
dengan menampilkan nomor id penjadualan dan waktu
pelaksanaan proses. Nomor id penjadualan ini berfungsi untuk
membatalkan proses yang telah dijadualkan.

$ at 1200
echo waktunya makan siang !
^D
726428280.a Thu Jan 7 12:00:00 1993
$

Perintah ini akan mengeksekusi perintah echo pada pukul
12.00. Keluaran dari perintah echo tersebut akan dikirim
secara otomatis kepada kita melalui electronic mail.
(Penggunaan electronic mail akan dijelaskan pada bab
selanjutnya).
Jika perintah yang dieksekusi tidak menghasilkan
keluaran atau jika keluaran dari perintah yang dieksekusi di
arahkan ke file, maka tidak ada pesan yang kita terima dari
electronic mail, kecuali jika perintah yang dieksekusi
mengalami kesalahan.

$ at 1600
ls -al > listfile
^D
726428280.a Thu Jan 7 16:00:00 1993
$

Kita juga dapat menjadualkan beberapa perintah
sekaligus sebagai berikut:

$ at 1600
ls -al /tmp/*
rm /tmp/*
ls -al /usr/tmp/*
rm /usr/tmp/*
^D
726428280.a Thu Jan 7 16:00:00 1993
$

Format jadual waktu yang digunakan perintah at
bermacam-macam. Kita dapat menggunakan format waktu 24 jam,
misalnya:

– pukul 8.30 pagi dinyatakan 0830
– pukul 1.45 siang dinyatakan 1345
– pukul 8 malam dinyatakan 20

Atau kita juga dapat menggunakan tanda am dan pm pada
jadual waktu sebagai berikut:

– pukul 8.30 pagi dinyatakan 8:30am
– pukul 1.45 siang dinyatakan 1:45pm
– pukul 8 malam dinyatakan 8pm

Pukul 12 siang dan malam dibedakan dengan noon dan
midnight sebagai berikut:

– pukul 12.00 siang dinyatakan 12noon
– pukul 12.00 malam dinyatakan 12midnight

Kita dapat juga menjadualkan berdasarkan menit
(minutes), jam (hours), hari (days), minggu (weeks), bulan
(months) dan tahun (years).

– at 4am Fri + 1 week
– at now + 1 year
– at now + 1 hour
– at 4 jun 20
– at 12midnight jul 4, 1993
– at 7:30pm today

Untuk melihat daftar proses yang telah dijadualkan dan
belum dilaksanakan, dapat digunakan perintah at dengan
pilihan -l sebagai berikut:

$ at -l
726428280.a Thu Jan 7 09:38:00 1993
726428281.a Mon Jan 11 09:38:01 1993
726428292.a Fri Jan 8 10:00:04 1993
726428302.a Thu Jan 7 10:08:12 1993
726428309.a Thu Jan 7 10:17:07 1993
$

Sayangnya yang ditampilkan hanyalah nomor id
penjadualan dan waktu pelaksanaannya saja. Kita tidak dapat
mengetahui proses apa yang akan dilaksanakan.
Untuk membatalkan proses yang telah kita jadualkan
dapat digunakan perintah at dengan pilihan -r.

$ at -l (lihat ..)
726428280.a Thu Jan 7 09:38:00 1993
726428281.a Mon Jan 11 09:38:01 1993
726428292.a Fri Jan 8 10:00:04 1993
726428302.a Thu Jan 7 10:08:12 1993
726428309.a Thu Jan 7 10:17:07 1993
$ at -r 726428292.a 726428302.a (batalkan ..)
$ at -l (lihat ..)
726428280.a Thu Jan 7 09:38:00 1993
726428281.a Mon Jan 11 09:38:01 1993
726428309.a Thu Jan 7 10:17:07 1993
$

BAB 5

U T I L I T A S

Oleh: Syamsul Nasution

Sistem UNIX memiliki tidak kurang dari 200 buah program
yang dapat digunakan sebagai utilitas. Program-program
tersebut sebagian besar berbentuk filter, sehingga dapat
digabungkan dengan program lainnya dengan menggunakan pipa
untuk melaksanakan tugas-tugas tertentu.
Pada bab ini akan diuraikan sejumlah utilitas-utilitas
yang bermanfaat bagi tugas-tugas sehari-hari. Pembahasan
akan mencakup utilitas-utilitas:

– mencetak
– mengurut data
– mengeditan teks tanpa editor
– mencari untaian karakter
– membandingkan file
– mencari file
– menghitung bilangan

5.1 MENCETAK

5.1.1 Perintah lp

Perintah yang digunakan untuk melakukan pencetakan
adalah lp, yang diikuti nama file yang akan dicetak. Nama
file dapat lebih dari satu file. Perhatikan contoh berikut
ini.

$ lp file1 file2 file3 file4
request id is printer-174 (4 files)
$

Respon sistem dari perintah tersebut adalah informasi
yang berisi nomor id pencetakan dan jumlah file yang
dicetak. Nomor id pencetakan berguna untuk pembatalan
pencetakan.
Jika nama file tidak dicantumkan maka masukan perintah
lp diambil dari masukan standar. Sering pula masukan dikirim
melalui pemipaan.

$ ls -al | lp
request id is printer-175
$

Jika diinginkan mencetak copy file lebih dari satu
dapat digunakan pilihan -n dengan diikuti jumlah copynya
sebagai berikut:

$ lp -n3 file1
request id is printer-176 (1 file)
$

Jika pilihan -m dicantumkan, maka setelah proses
pencetakan dilaksanakan, sistem akan mengirim pesan kepada
kita melalui electronic mail.
Jika pilihan -w yang dicantumkan, maka setelah proses
pencetakan dilaksanakan, sistem akan mengirim pesan kepada
layar terminal kita. Jika saat itu kita sudah tidak aktif
atau keluar sistem, maka sistem akan mengirim melalui
electronic mail.
Untuk melihat file-file yang sedang diantrikan untuk
proses pencetakan dapat digunakan perintah lpstat sebagai
berikut:

$ lpstat
printer-174 denny 12345 Jan 6 10:12
printer-175 denny 723 Jan 6 11:47
printer-176 denny 136 Jan 8 10:37
printer-177 denny 221 Jan 8 10:39
printer-178 denny 4535 Jan 8 10:39
$

Selanjutnya jika kita ingin membatalkan proses
pencetakan yang akan dan atau sedang dilakukan, maka kita
dapat menggunakan perintah cancel yang diikuti nomor id
pencetakan.

$ cancel 176
request “printer-176″ cancelled
$ lpstat
printer-174 denny 12345 Jan 6 10:12
printer-175 denny 723 Jan 6 11:47
printer-177 denny 221 Jan 8 10:39
printer-178 denny 4535 Jan 8 10:39
$

5.1.2 Perintah pr

Perintah pr digunakan untuk memperbaiki perwajahan
atau format teks yang akan dicetak ke printer. Biasanya
perintah ini dirangkaikan dengan perintah lp dengan
menggunakan pemipaan sebagai berikut:

$ pr file1 | lp
request id is printer-177 (1 file)
$

Keluaran dari perintah pr akan dipisahkan per halaman
dengan default jarak atas dan bawah adalah 5 baris. Bagian
kepala kertas yang dicetak berisi tanggal pencetakan, nama
file, dan halaman sebagai berikut:

$ pr peserta

Jan 6 11:45 1993 peserta Page 1

Maryann Clark 101
Sally Smith 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Henry Morgan 112
Hank Parker 114
Charlie Smith 122
Bill Williams 100

.
.
.

$

Panjang dan lebar default dari perintah pr ini adalah
66 baris ke bawah dan 72 karakter ke samping atau ukuran
kertas 8,5 inci x 11 inci. Jika diinginkan kita dapat
mengubahnya dengan menggunakan perintah pr dengan pilihan -l
misalnya untuk ukuran kertas A4, yaitu panjangnya 72 baris
adalah sebagai berikut:

$ pr -l72 peserta | lp
request id is printer-178 (1 file)
$

Kita dapat juga menampilkan keterangan untuk
menggantikan nama file yang dicetak dengan menggunakan
pilihan -h.

$ pr -h tes peserta | lp
request id is printer-179 (1 file)
$

Jika keterangan lebih dari satu kata maka keterangan
tersebut harus diletakkan di dalam karakter kutip ganda
sebagai berikut:

$ pr -h “Daftar Peserta Tes UNIX”

Jan 6 11:45 1993 Peserta Tes Page 1

Maryann Clark 101
Sally Smith 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Henry Morgan 112
Hank Parker 114
Charlie Smith 122
Bill Williams 100

.
.
.

$

Disamping itu kita dapat juga membuat keluaran dalam
bentuk kolom. Sebelumnya tentukan lebar halaman dengan
menggunakan pilihan -w.

$ cat peserta
Maryann Clark 101
Sally Smith 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Henry Morgan 112
Hank Parker 114
Charlie Smith 122
Bill Williams 100
$ pr -2 -w65 peserta

Jan 6 11:54 1993 peserta Page 1

Maryann Clark 101 Sylvia Dawson 110
Sally Smith 123 Henry Morgan 112
Sally White 123 Hank Parker 114
Jane Bailey 121 Charlie Smith 122
Jack Austin 120 Bill Williams 100
Steve Daniels 111
$

Jika kita memberi lebar yang terlalu kecil akibatnya
terjadi tumpang tindih sebagai berikut:

$ pr -2 -w40 peserta

Jan 6 11:54 1993 peserta Page 1

Maryann Clark Sylvia Dawson
Sally Smith Henry Morgan
Sally White Hank Parker
Jane Bailey Charlie Smith
Jack Austin Bill Williams
Steve Daniels
$
5.2 MENGURUT DATA

Perintah yang dapat digunakan untuk melakukan
pengurutan data adalah perintah sort. Secara default
pengurutan dilakukan dari kecil ke besar. Perhatikan contoh
berikut ini.

$ cat nama
denny
chaerinda
irmawati
chaerinda
$ sort nama
chaerinda
chaerinda
denny
irmawati
$

Untuk melakukan hal yang sebaliknya, yaitu pengurutan
dari besar ke kecil digunakan pilihan -r.

$ sort nama
irmawati
denny
chaerinda
chaerinda
$

Untuk menghilangkan duplikasi di atas, kita dapat
gunakan pilihan -u.

$ sort -u nama
chaerinda (duplikasi tiada !)
denny
irmawati
$

Perhatikan contoh berikut dimana data yang digunakan
adalah jenis data numerik:

$ cat dataxy
5 27
2 12
3 33
-5 11
14 -9
0 1
33 22
$ sort dataxy
-5 11
0 1
14 -9
2 12
3 33
33 22
5 27
$

Ternyata hasil pengurutannya tidak benar untuk jenis
data numerik, karena secara default, sort hanya melakukan
pengurutan terhadap data non-numerik berdasarkan ASCII.
Khusus data numerik, lakukan pengurutan dengan pilihan -n.

$ sort -n dataxy
-5 11
0 1
2 12
3 33
5 27
14 -9
33 22
$

sort juga dapat mengurutkan berdasarkan field tertentu.
Cara yang digunakan adalah dengan melewatkan (skip) field
yang tidak dianggap penting. Jika contoh data di atas adalah
data x dan y, maka jika kita ingin mengurutkan berdasarkan
y, yang harus kita lakukan adalah melewatkan field pertama
(field x), sehingga dapat dinyatakan sebagai berikut:

$ sort +1n dataxy (sort berdasarkan y)
14 -9
0 1
-5 11
2 12
33 22
5 27
3 33
$

Standar pemisah field adalah spasi atau tab. Namun
demikian pemisah field tersebut dapat kita ubah yaitu dengan
menggunakan pilihan -t. Misalkan kita akan mengurutkan file
password pemakai yaitu file /etc/passwd berdasarkan nomor
id-nya.

$ cat /etc/passwd
root:hxI/hs24w48Qg:0:0:Super user:/:/bin/csh
bin:Dsk4SKksadknd:3:3:bin:/bin:/bin/sh
denny:Kawhju.ZQ4GOk:1:100:mahasiswa:/usr/denny:/bin/sh
chae:9zw/8ok/cPVIw:2:100:mahasiswa:/usr/chae:/bin/sh
.
.
.
$

$ sort +2n -t: /etc/passwd
root:hxI/hs24w48Qg:0:0:Super user:/:/bin/csh
denny:Kawhju.ZQ4GOk:1:100:mahasiswa:/usr/denny:/bin/sh
chae:9zw/8ok/cPVIw:2:100:mahasiswa:/usr/chae:/bin/sh
bin:Dsk4SKksadknd:3:3:bin:/bin:/bin/sh
.
.
.
$

5.3 MENGEDITAN TEKS TANPA EDITOR

5.3.1 Perintah cut

Secara umum perintah cut akan mengambil karakter
tertentu dari setiap baris data yang diberikan, sesuai
dengan pilihan (option) yang diberikan. Format umumnya
adalah:

cut -ckar file

dimana kar adalah jangkauan dari karakter yang akan
kita ambil dari setiap baris yang diberikan. Jangkauan
memiliki ekspresi tersendiri seperti pada contoh berikut:

$ cat data (data untuk percobaan)
selamat mencoba
1234567890 bilangan
$ cut -c5 data (ambil karakter ke lima)
m
5
$ cut -c5- data (ambil karakter ke lima dst)
mat mencoba
567890 bilangan
$ cat data | cut -c2,7 (ambil karakter ke 2 dan 7)
et
27
$ cat data | cut -c2-7 (ambil karakter ke 2 s/d 7)
lamat
34567
$

Disamping bekerja berdasarkan karakter, perintah cut
dapat bekerja berdasarkan field, yaitu menggunakan pilihan
-f. Pemisah field standar adalah blank. Untuk mengubah
pemisah field standar dapat kita gunakan pilihan -d.

$ cat /etc/passwd
root:hxI/hs24w48Qg:0:0:Super user:/:/bin/sh
bin:Dsk4SKksadknd:3:3:bin:/bin:/bin/sh
denny:Kawhju.ZQ4GOk:1:100:mahasiswa:/usr/denny:/bin/sh
chae:9zw/8ok/cPVIw:2:100:mahasiswa:/usr/chae:/bin/sh
.
.
$ cut -d: -f1 /etc/passwd (ambil field ke 1)
root
bin
denny
chae
.
.
.
$ cut -d: -f1,6 /etc/passwd (ambil field ke 1 dan 6)
root:/
bin:/bin
denny:/usr/denny
chae:/usr/chae
.
.
.
$

Perintah cut tidak mengubah data aslinya. Jika
dinginkan perubahan, maka harus dilakukan dengan menggunakan
pengalihan keluaran (output redirection).

5.3.2 Perintah paste

Perintah paste adalah kebalikan dari perintah cut,
yaitu perintah untuk mengabungkan dua file secara
berdampingan. Secara umum formatnya adalah:

paste file

dimana file adalah dapat lebih dari satu file yang akan
digabungkan.

$ cat nama
denny
chaerinda
irmawati
$ cat alamat
jakarta 8290503
brebes 5598455
medan 7895477
$ paste nama alamat
denny jakarta 8290503
chaerinda brebes 5598455
irmawati medan 7895477
$

Perlu diperhatikan bahwa pemisah antar masukan, dalam
hal ini kedua file tersebut, adalah sebuah tab. Untuk
mengubah pemisah antar masukan sesuai dengan yang kita
inginkan, dapat digunakan pilihan -d.

$ paste -d’+’ nama alamat
denny+jakarta 8290503
chaerinda+brebes 5598455
irmawati+medan 7895477
$

5.3.3 Perintah tr

Perintah tr adalah utilitas yang dapat digunakan untuk
mentranslasikan karakter dari standar masukan. Secara umum
formatnya adalah:

tr pola1 pola2

dimana pola1 dan pola2 adalah satu atau lebih karakter
tunggal. Karakter dari pola1 akan ditranslate ke pola2 yang
sesuai.

$ cat contoh
saya sedang belajar pemrograman shell
pada sistim operasi unix
semoga cepat lancar dan mahir
$ cat contoh | tr e X (ganti e dengan X)
saya sXdang bXlajar pXmrograman shXll
pada sistim opXrasi unix
semoga cXpat lancar dan mahir
$ tr ‘[a-z] ‘[A-Z]‘ < contoh (ubah huruf kecil)
SAYA SEDANG BELAJAR PEMROGRAMAN SHELL
PADA SISTIM OPERASI UNIX
SEMOGA CEPAT LANCAR DAN MAHIR
$

Perintah tr juga dapat digunakan untuk menghapus
karakter tunggal dari untaian masukan.

$ tr -d ' ' < contoh (hapus ' ')
sayasedangbelajarpemrogramanshell
padasistimoperasiunix
semogacepatlancardanmahir
terimakasih
$ cat contoh2
a1,a2,a3
b1,b2,b3
$ tr -d '[0-9]' +———+
dk ——> | | ——-> d9
dQ ——> | d. | ——-> dk
d ——> | | ——-> dQ
1234 ——> +———+

Gambar 5.1 Penggunaan ekspresi reguler titik: d.

Atau kita dapat pula menggunakan ekspresi reguler titik
sebagai berikut:

devy ——> +———+
denny ——> | | ——-> denny
Sudarty ——> | d…y | ——-> Sudarty
DennY ——> | | ——-> d234ydf
d234ydf ——> +———+

Gambar 5.2 Penggunaan ekspresi reguler titik: d…y

5.4.1.2 Ekspresi Reguler ‘^’

Ekspresi reguler ‘^’ digunakan untuk menyatakan
pencocokan dilakukan pada awal baris. Contoh

Sistem terbuka didukung oleh UNIX
UNIX adalah sistem operasi
yang ada pada sejumlah jenis mesin
Hanya UNIX yang bisa begini

Jika kita ingin mendapatkan kata UNIX pada awal baris,
maka dapat kita gunakan ekspresi reguler ‘^’, yaitu:

^UNIX

Dengan demikian operasi ini akan menemukan pola yang
dicari di dalam kalimat UNIX adalah sistem operasi.

5.4.1.3 Ekspresi Reguler ‘$’

Ekspresi reguler ‘$’ digunakan untuk mencari pola pada
akhir dari tiap baris.
Berdasarkan contoh pada sub bab sebelumnya, jika kita
ingin mendapatkan kata UNIX pada akhir baris, maka dapat
kita gunakan ekspresi reguler ‘$’ dengan cara sebagai
berikut:

UNIX$

Dengan demikian operasi ini akan menemukan pola yang
dicari yaitu di dalam kalimat Sistem terbuka didukung oleh
UNIX.
Untuk menemukan pola baris kosong, dapat kita gunakan
gabungan ekspresi reguler ‘^’ dan ‘$’ sebagai berikut:

^$

5.4.1.4 Ekspresi Reguler [...] dan [^...]

Ekspresi reguler [karakter] digunakan untuk mencocokkan
pola dengan karakter sesuai dengan jangkauan yang
dicantumkan di dalam kurung siku tersebut, misalnya:

——————————————————
Eks. Reguler Arti
——————————————————
[tT] cocok terhadap “t”besar atau kecil
[a-z] cocok hanya huruf kecil
[a-zA-Z] cocok untuk semua huruf besar dan kecil
[0-9] cocok untuk bilangan 0 s/d 9
1[0-9] cocok untuk bilangan 10 s/d 19
——————————————————

Tabel 5.1 Ekpresi reguler [...]

Untuk menyatakan jangkauan yang sebaliknya, digunakan
tanda ‘^’ di dalam kurung siku, contoh:

——————————————————
Eks. Reguler Arti
——————————————————
[^0-9] cocok bagi non numerik
[^a-zA-Z] cocok bagi non huruf/abjad
——————————————————

Tabel 5.2 Ekspresi reguler [^...]

5.4.2 Perintah grep

Perintah grep digunakan untuk mencari pola karakter
dalam satu atau lebih file. Format umumnya adalah:

grep pola file1 file2 ….

Setiap baris yang mengandung pola karakter akan
ditampilkan pada standar keluaran. Jika digunakan lebih dari
satu file, maka setiap baris akan ditampilkan informasi file
yang mengandung pola karakter tersebut.

$ cat bab1
* PENGANTAR *
shell merupakan program terpenting bagi pemakai UNIX
karena semua keinginan dan perintah dari pemakai
akan diterjemahkan oleh shell kepada komputer
$ grep shell bab1
shell merupakan program terpenting bagi pemakai UNIX
akan diterjemahkan oleh shell kepada komputer
$

Keluaran dari perintah grep di atas adalah dua buah
baris yang mengandung kata shell. Jika pola karakter yang
dicari tidak ada, maka grep tidak akan menampilkan apa-apa.

$ grep cinta bab1
$

Untuk mengetahui lokasi baris dari karakter yang
ditemukan dapat kita gunakan pilihan -n.

$ grep -n shell bab1
2:shell merupakan program terpenting bagi pemakai UNIX
4:akan diterjemahkan oleh shell kepada komputer
$

Disamping itu, grep dapat pula digunakan untuk mencari
pola karakter pada sejumlah file dalam suatu direktori.

$ ls
bab1
bab2
bab3
bab4
$ grep shell *
bab1:shell merupakan program terpenting bagi pemakai UNIX
bab1:akan diterjemahkan oleh shell kepada komputer
bab3:shell ini disebut Bourne shell
$

Terkadang kita hanya ingin melihat nama-nama file yang
mengandung kata yang kita cari. Untuk itu maka kita dapat
gunakan pilihan -l.

$ grep -l shell *
bab1
bab3
$
Perhatikan contoh berikut:

grep * bab1

tidak akan bekerja dengan baik karena shell akan
terlebih dahulu mensubstitusikan tanda asterisk (*) dengan
file yang ada pada direktori current dan dilanjutkan dengan
pencarian pada file-file.
Untuk menggunakan pola karakter *, kita dapat gunakan
tanda kutip tunggal sebagai berikut:

$ grep ‘*’ bab1
* PENGANTAR *
$

Salah satu kehandalan dari grep adalah pola karakter
dapat diberikan dalam bentuk ekspresi reguler, sehingga
pencarian dapat dilakukan dengan luwes.

———————————————————-
perintah
———————————————————-
grep ‘[A-Z]‘ file tampilkan baris yang berisi
huruf besar
grep ‘[0-9]‘ file tampilkan baris yang berisi
angka
grep ‘[A-Z]…[0-9]‘ file tampilkan baris yang berisi
5 karakter dengan diawali
huruf besar dan diakhiri angka
———————————————————-

Tabel 5.3 Perintah grep

Disamping mencari baris yang berisi pola karakter yang
sesuai, grep dapat pula mencari baris yang tidak mengandung
pola karakter, yaitu dengan menggunakan pilihan -v.

$ grep -v shell bab1 (cari yang tidak berisi shell)
* PENGANTAR *
karena semua keinginan dan perintah dari pemakai
$ grep -v ‘*’ bab1
shell merupakan program terpenting bagi pemakai UNIX
karena semua keinginan dan perintah dari pemakai
akan diterjemahkan oleh shell kepada komputer
$

5.4.3 Perintah fgrep

Perintah fgrep serupa dengan perintah grep. Perintah
fgrep sering diartikan sebagai fast grep atau fixed grep
karena proses perintah ini lebih cepat dibandingkan grep dan
hanya menangani untaian karakter yang pasti sebagai pola
yang dicari.

$ fgrep shell bab1
shell merupakan program terpenting bagi pemakai UNIX
akan diterjemahkan oleh shell kepada komputer
$

Penting diingat bahwa perintah fgrep tidak dapat
memproses ekspresi reguler.

$ fgrep “^shell” bab1
$

Perintah fgrep tidak mengartikan karakter ‘^’ sebagai
ekspresi reguler, yang berarti awal dari baris untaian
karakter, melainkan semata hanya karakter ‘^’ saja.

5.4.4 Perintah egrep

Perintah egrep serupa dengan perintah grep. Perintah
egrep sering diartikan sebagai extended grep, karena
perintah ini merupakan perluasan dari perintah grep.
Pada egrep seluruh ekspresi reguler yang ada dapat
dipergunakannya.

$ grep ‘Sally (White|Smith)’ peserta
$

Perintah grep gagal menggunakan ekspresi reguler di
atas. Perhatikan bahwa egrep mampu menggunakan eksekpresi
reguler tersebut.

$ egrep ‘Sally (White|Smith)’ peserta
Sally White
Sally Smith
$

Tapi awas, jangan disamakan dengan perintah berikut:

$ egrep ‘Sally White|Smith’ peserta
Sally White
Sally Smith
Henry Smith
$

Karena pada cara kedua ini berarti carilah yang sesuai
dengan pola Sally White atau Smith. Padahal pada egrep
pertama dimaksudkan mencari Sally White atau Sally Smith.

5.5 MEMBANDINGKAN FILE

5.5.1 Perintah uniq

Perintah uniq digunakan untuk membandingkan antar baris
data yang berurutan di dalam sebuah file. Perintah uniq
akan mendeteksi adanya duplikasi baris data yang terjadi
pada sebuah file, dengan catatan bahwa duplikasi tersebut
harus berurutan.

$ cat band
Queen
Beatles
Sepultura
Slank
Toto
Europe
Beatles
$

Kita lihat bahwa Beatles muncul dua kali dalam file
band. Dengan perintah uniq, kita dapat menghilangkan
duplikasi yang terjadi.

$ uniq band
Queen
Beatles
Sepultura
Slank
Toto
Europe
Beatles
$

Proses uniq di atas tidak berhasil menghilangkan
duplikasi yang terjadi, mengapa ? Hal ini disebabkan bahwa
baris data yang duplikasi (Beatles) tidak berurutan. Untuk
itu maka kita perlu melakukan proses pengurutan terlebih
dahulu.

$ sort band
Beatles
Beatles
Europe
Queen
Sepultura
Slank
Toto
$ sort band | uniq
Beatles (data yang duplikasi hilang)
Europe
Queen
Sepultura
Slank
Toto
$

Perintah uniq dapat juga hanya menampilkan data yang
terduplikasi saja, yaitu dengan menggunakan pilihan -d.

$ sort band | uniq -d (tampilkan yang terduplikasi)
Beatles
$

Dengan pilihan -c kita dapat melihat banyaknya
pemunculan masing-masing baris data dalam file tersebut.

$ sort band | uniq -c
2 Beatles
1 Europe
1 Queen
1 Sepultura
1 Slank
1 Toto
$

5.5.2 Perintah diff

Perintah diff dipergunakan untuk membandingkan isi dua
buah file teks. Secara umum formatnya adalah:

diff filelama filebaru

dimana filelama adalah file asli. filebaru adalah file
yang telah diperbaharui.
Sebelum dijelaskan mengenai perintah diff, perhatikan
contoh data yang akan digunakan pada pembahasan kali ini.

$ cat peserta.old
Maryann Clark 101
Sally Smith 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Henry Morgan 112
Hank Parker 114
Charlie Smith 122
Bill Williams 100
$ cat peserta.new
Maryann Clark 101
Sally White 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Hank Parker 114
Charlie Smith 122
Bill Williams 100
James Walker 112
$

Kedua file tersebut serupa tapi tak sama. Untuk
mencari perbedaan-perbedaan pada kedua file tersebut
dapat kita gunakan perintah diff sebagai berikut:

$ diff peserta.old peserta.new
2c2
Sally White 123
7d6
James Walker 112
$

Keluaran dari perintah diff di atas memperlihatkan
bahwa terdapat 3 buah perbedaan diantara keduanya, yaitu:

o Baris kedua dari file lama telah diubah tetapi tetap
pada baris dua (ditunjukkan dengan 2c2). Versi lama
ditandai dengan karakter ”. Garis ‘—’ digunakan untuk
membandingkan perubahan sekaligus memisahkan baris
atas sebagai versi lama dan baris bawah sebagai versi
baru.

o Baris ketujuh dari file lama dihapus (ditunjukkan
dengan 7d6).

o Baris kesepuluh ditambahkan data baru tetapi tetap
pada baris kesepuluh (ditunjukkan dengan 10a10),
karena sebelumnya telah terjadi penghapusan sebaris
data.

Jika kita menyebutkan file lama dan file barunya
terbalik, maka hasilnya akan berbeda.

$ diff peserta.new peserta.old
2c2
Sally Smith 123
6a7
> Henry Morgan 112
10d10
ubah
$ ed – peserta.old > ubah (simpan di peserta.ubah)
$ echo q >> ubah
$ cat ubah
10a
James Walker 112
.
7d
2c
Sally White 123
.
w peserta.ubah
q
$ ed peserta.old < ubah
315
$ diff peserta.ubah peserta.new
$ (tidak ada perbedaan !)

Pada contoh di atas, hasil pembaharuan file lama
dikirim ke file peserta.ubah. Jika w tidak diikuti nama file
maka perubahan dilakukan pada file itu sendiri.
Para pembuat program di UNIX sering menggunakan
utilitas ini sebagai fasilitas untuk merevisi program.

5.5.3 Perintah sdiff

Perintah sdiff serupa dengan perintah diff, hanya saja
perbedaan ditampilkan berdampingan. Karena berdampingan maka
akan membutuhkan lebar layar yang secukupnya (default 130
kolom). Untuk mengatur lebar layar digunakan pilihan -w.

$ sdiff -w 65 peserta.old peserta.new
Maryann Clark 101 Maryann Clark 101
Sally Smith 123 | Sally White 123
Jane Bailey 121 Jane Bailey 121
Jack Austin 120 Jack Austin 120
Steve Daniels 111 Steve Daniels 111
Sylvia Dawson 110 Sylvia Dawson 110
Henry Morgan 112 James Walker 112
$

Seperti pada perintah diff, perbedaan antara sisi yang
berisi file lama dan file baru digunakan karakter ‘|’, ”.
Dengan pilihan -l, hanya baris pada sisi kanan yang
berbeda yang akan ditampilkan. Sementara itu sis kiri tetap
ditampilkan seluruhnya.

$ sdiff -w 65 -l peserta.old peserta.new
Maryann Clark 101
Sally Smith 123 | Sally White 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Henry Morgan 112 James Walker 112
$

Jika diinginkan, dapat juga hanya baris-baris yang
berbeda pada keduanya saja yang ditampilkan.

$ sdiff -w 65 -s peserta.old peserta.new
2c2
Sally Smith 123 | Sally White 123
7d6
Henry Morgan 112 James Walker 112
$

Dengan pilihan -o yang diikuti nama file baru, kita
dapat memasukkan baris kiri atau kanan yang berbeda ke dalam
file baru tersebut. Untuk itu sistem akan memberikan prompt
khusus %. Pada prompt tersebut kita diijinkan untuk memilih
sisi kiri (l) atau sisi kanan (r) yang akan dimasukkan ke
dalam file baru.

$ sdiff -w 65 -s -o old_new peserta.old peserta.new
2c2
Sally Smith 123 | Sally White 123
% l
7d6
Henry Morgan 112 James Walker 112
% r
$

maka hasilnya adalah sebagai berikut:

$ cat old_new
Maryann Clark 101
Sally Smith 123
Jane Bailey 121
Jack Austin 120
Steve Daniels 111
Sylvia Dawson 110
Hank Parker 114
Charlie Smith 122
Bill Williams 100
James Walker 112
$

5.5.4 Perintah cmp

Berbeda dengan perintah perintah pembanding file
sebelumnya yang berorientasi pada file teks, perintah cmp
akan membandingkan dua buah file secara byte per byte.
Laporan yang diberikan berupa byte dan nomor barisnya,
tempat ditemukan perbedaan yang pertama antar file tersebut.

$ cmp peserta.old peserta.new
peserta.old peserta.new differ: char 26, line 2
$

Jika kedua file tersebut sama, maka perintah cmp tidak
akan mengeluarkan informasi apa-apa.

$ cp peserta.old /tmp
$ cp peserta.old /tmp/peserta.old2
$ cmp /tmp/peserta.old /tmp/peserta.old2
$

Dengan demikian terlihat bahwa perintah cmp kurang
cocok untuk membandingkan file teks. Jika kita hanya ingin
mengetahui apakah file yang kita bandingkan berbeda, maka
perintah cmp sangat cocok untuk digunakan, karena dapat
menghasilkan informasi tentang perbedaan dengan cepat.

5.6 MENCARI FILE

Sering terjadi kasus dimana kita menemukan sebuah file
yang diketahui namanya tetapi tidak diketahui letaknya di
dalam sistem direktori. Untuk mencari secara manual akan
menghabiskan waktu yang cukup lama. Utilitas yang menangani
masalah ini adalah perintah find.
Perintah find akan mencari file melalui setiap jalur
direktori, dengan dimulai dari direktori yang telah
ditentukan hingga ke sub-sub direktorinya.
Perintah find berikut ini akan menampilkan semua file
yang bernama core berikut lokasinya dalam sistem direktori
yang telah ditentukan. Pencarian dimulai dari direktori /tmp
dan dilanjutkan dengan direktori /usr/mhs/denny. Pilihan -
name yang diikuti nama file adalah menunjukkan nama file
yang akan dicari. Pilihan -print akan mencetak nama file
dengan nama jalur lengkapnya ke layar.

$ find /tmp /usr/mhs/denny -name core -print
/tmp/denny/core
/usr/mhs/denny/program/core
/usr/mhs/denny/doc/core
$

Jika kita tidak mengetahui secara pasti nama-nama file
yang kita cari, kita dapat menggunakan karakter wildcard
sebagai berikut:

$ find /usr/mhs/denny -name “*.old” -print
/usr/mhs/denny/tatix.old
/usr/mhs/denny/program/prog1.old
/usr/mhs/denny/program/prog2.old
/usr/mhs/denny/tmp/bacaaku.old
/usr/mhs/denny/tmp/passwd.old
/usr/mhs/denny/tmp/sistem.old
$

Kita dapat juga menentukan file yang kita cari
berdasarkan waktu akses terakhir, yaitu dengan menggunakan
pilihan -atime. Misalnya file-file yang memiliki waktu akses
terakhir lebih dari 14 hari.

$ find /usr/mhs/denny -name “*.old” -atime +14 -print
/usr/mhs/denny/tatix.old
/usr/mhs/denny/program/prog1.old
/usr/mhs/denny/tmp/sistem.old
$

Karakter ‘+’ yang mendahului angka 14 menyatakan lebih
dari 14 hari. Jika diinginkan kurang dari 14 hari maka
digunakan karakter ‘-’.

$ find /usr/mhs/denny -name “*.old” -atime -14 -print
/usr/mhs/denny/program/prog2.old
/usr/mhs/denny/tmp/bacaaku.old
/usr/mhs/denny/tmp/passwd.old
$

Logika OR dan AND berlaku juga pada untaian pilihan
pada perintah find, yaitu -a untuk AND dan -o untuk OR. Jika
logika tidak disebutkan, secara implisit dikatakan
menggunakan AND.

$ find /usr/mhs/denny \( -name core -o name “*.old” \) -print
/usr/mhs/denny/tatix.old
/usr/mhs/denny/doc/core
/usr/mhs/denny/program/core
/usr/mhs/denny/program/prog1.old
/usr/mhs/denny/program/prog2.old
/usr/mhs/denny/tmp/bacaaku.old
/usr/mhs/denny/tmp/passwd.old
/usr/mhs/denny/tmp/sistem.old
$

Disamping sekedar mencetak nama file yang kita cari ke
layar terminal , perintah find dapat pula melakukan sesuatu
terhadap file tersebut, yaitu dengan menggunakan pilihan -
exec. Contoh kita akan menghapus file *.old pada direktori
/tmp yang waktu akses terakhirnya 10 hari yang lalu.

$ find /tmp -name “*.old” -a atime +10 -exec rm {} \;
$

Karakter ‘{}’ akan disubstitusikan oleh perintah find
dengan nama file yang memenuhi kondisi yang telah ditentukan
pada pilihan. Perintah yang dieksekusi harus diakhiri dengan
sebuah semicolon ‘\;’.
Jika diinginkan konfirmasi sebelum eksekusi
dilaksanakan terhadap file yang memenuhi kondisi, maka
digunakan pilihan -ok sebagai berikut:

$ find /tmp -name “*.old” -a atime +10 -ok rm {} \;
? y
? n
?
$

Jika diketikkan selain karakter y maka eksekusi akan
dibatalkan.

5.7 MENGHITUNG BILANGAN

UNIX memiliki perintah yang dapat berfungsi sebagai
kalkulator sederhana yang cukup ampuh dalam melakukan
penghitungan bilangan, yaitu perintah bc. Cara penggunaannya
adalah sebagai berikut:

$ bc
9 + 8
16
2 + 3 – 1
4
^D (akhir operasi penghitungan)
$

Perintah bc ini mengenal operasi-operasi sebagai
berikut:

* perkalian
/ pembagian
^ pangkat
+ penjumlahan
– pengurangan

Perkalian dan pembagian dikerjakan terlebih dahulu
sebelum penjumlahan dan pengurangan. Untuk mengubah urutan
pengerjaan digunakan karakter ‘( … )’.

$ bc
12.25 * 2
24.50
2^6
64
2 + 5 * 3
30
(2 + 5) * 3
21
18 / 6
3
9 / 2
4 (kemana 0.5 ?)
^D
$

Operasi di atas tidak menghasilkan pecahan, akibatnya
operasi pembagian 9 oleh 2 dibulatkan ke bawah. Jika
diinginkan, kita dapat menentukan beberapa desimal
dibelakang koma dengan menggunakan scale sebagai berikut:

$ bc
scale=3
9 / 2
4.500
1 / 8
0.125
^D
$

Untuk menyimpan hasil perhitungan sementara, kita dapat
menyimpan ke dalam memori yang diidentifikasikan dengan
huruf a-z saja. Kita dapat menggunakan nilai yang tersimpan
di dalamnya pada rangkaian ekspresi sebagai berikut:

$ bc
a=2 + 5 * 10
a
100
a * 2
200
^D
$

Karena perintah bc merupakan filter, maka kita dapat
mengirim file berisi perhitungan untuk diselesaikan sebagai
berikut:

$ cat hitung
300 * 2
6 / 2 + ( 4 – 2) * 7
1 * 2 * 3 * 4
1000 – 5000
$ cat hitung | bc
600
17
24
-4000
$

BAB 6

EDITOR TEKS
Oleh : Syamsul Nasution

Setiap sistem operasi membutuhkan editor teks untuk
mengedit shell, program dan teks lainnya. Ada beberapa jenis
editor teks pada UNIX, antara lain:

– editor berorientasi baris, misalnya ed dan ex
– editor berorientasi layar, misalnya vi dan emacs
– editor berorientasi stream, misalnya sed

Pada bab ini lebih mengkhususkan pembahasan mengenai
editor teks vi. Namun demikian pada akhir bab ini akan
disinggung mengenai penggunaan editor baris ex (khususnya
pemanfaatan di dalam vi) dan editor stream sed. Pembahasan
akan mencakup mengenai:

– mulai menggunakan vi
– mengatur gerakan kursor dan gerakan layar
– memasukkan teks
– menghapus dan mengganti teks
– mencari teks
– memindahkan teks
– menggunakan editor baris ex pada editor teks vi
– menggunakan editor stream sed

6.1 MULAI MENGGUNAKAN vi

Editor standar yang berorientasi layar yang dimiliki
oleh UNIX adalah vi. Editor vi memiliki dua mode, yaitu:

o Mode perintah
Kebanyakan perintah yang diberikan pada vi berupa
untaian karakter yang sangat pendek, biasanya hanya
berupa satu karakter, seperti a, i, o, c. Perintah
ini tidak akan tampak pada layar terminal ketika
diketik, hanya akan terlihat hasilnya. Kita tidak
perlu mengetikan ENTER setelah memasukkan perintah-
perintah tersebut.
Untuk lebih meningkatkan kehebatan vi dalam mengolah
teks, editor ini didukung pula oleh editor ex di
dalamnya, sehingga kita dapat memanipulasi data
dengan perintah-perintah yang dimiliki oleh ex.
Perintah-perintah pada ex senantiasa didahului oleh
karakter titik dua yang akan tampak pada dasar layar
ketika diketikkan. Berbeda dengan pengetikan
perintah-perintah pada vi, ENTER harus diketikkan
setiap selesai mengetik perintah-perintah ex.

o Mode pemasukan teks
Jika pada mode perintah diketikkan perintah untuk
memasukan teks misalnya sisip (insert) atau tambah
(append),maka kita akan berada pada mode pemasukan
teks dimana semua yang kita ketik akan ditampilkan di
layar terminal dan akan menjadi bagian teks yang kita
edit. Pengetikan ESC akan mengakhiri mode pemasukan
teks dan kembali ke mode perintah.

Untuk mulai menggunakan vi, gunakan perintah sebagai
berikut:

$ vi coba

dimana coba adalah nama file. Perintah tersebut akan
menghasilkan layar seperti ini:

-
~
~
~
~
~
~
~
~
“coba” [New File]

Gambar 6.1 Layar vi

Pada bagian atas akan terlihat sebuah kursor yang
menunjukkan lokasi awal pengetikkan. Pada bagian bawah akan
terlihat baris status vi atau pesan kesalahan.
Mode awal ketika kita masuk ke dalam editor vi adalah
mode perintah. Untuk mulai memasukkan teks perlu dilakukan
sebuah perintah memasukan teks dengan mengetikkan:

i

Sekarang kita telah berada di dalam mode pemasukan dan
semua yang diketikan akan tampil pada layar terminal.
Masukkan teks berikut ini dan akhiri setiap baris dengan
mengetikkan ENTER.

satu
dua
tiga
empat
lima

Tekanlah ESC untuk mengakhiri mode pemasukan teks,
dengan demikian kita kembali ke mode perintah.
Selanjutnya jika kita ingin keluar dari vi dengan
sebelumnya menyimpan seluruh teks ke dalam file maka dapat
digunakan perintah-perintah berikut:

ZZ

Atau menggunakan perintah dari ex sebagai berikut:
:wq

atau

:x

Jika kita ingin keluar dari vi dan tidak ingin
menyimpan file yang kita edit, maka dapat digunakan perintah
ex sebagai berikut:

:q!

Awas jangan lupa mengetikkan ENTER pada perintah-
perintah ex.

6.2 MENGATUR GERAKAN KURSOR DAN GERAKAN LAYAR

Pada dasarnya gerakan kursor dapat dilakukan dengan
tombol panah tetapi kadang-kadang sukar dilakukan karena
posisi tombol pada keyboard terlalu jauh atau mungkin
set up terminalnya kurang mendukung. Untuk mengatasi hal ini
kita dapat digunakan h, j, k dan l yang dapat berfungsi
sebagai tombol panah sebagai berikut:

^
/ \
/_k_\
/| | | |\
/ +–+ +–+ \

\ +–+ +–+ /
\| _| |_ |/
\ j /
\ /
v

Gambar 6.2 Gerakan kursor 1 karakter

Disamping pergerakan kursor dalam penambahan satu
karakter, kita dapat menggerakkan ke obyek teks tertentu.

—————————————
Obyek teks Karakter
—————————————
Kata berikutnya w
Akhir baris sekarang $
Kalimat sebelumnya (
Kalimat berikutnya )
Paragraf sebelumnya {
Paragraf berikutnya }
Bagian sebelumnya [[
Bagian berikutnya ]]
—————————————

Tabel 6.1 Obyek teks

Untuk memperjelas maksud di atas, dengan menggunakan
cara yang telah diajarkan pada sub bab sebelumnya, marilah
kita membuat file coba2 yang berisi teks berikut:

Kelompok musik legendaris The Beatles terdiri dari Jhon
Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kelompok ini telah membubarkan diri dan tidak ingin
disatukan kembali. Upaya penyatuan ini semakin tidak
mungkin dengan meninggalnya Jhon lenon akibat
pembunuhan didepan apartemennya.

Dalam mode perintah, gerakkan kursor ke spasi diantara
‘Kelompok’ dan ‘musik’ pada baris pertama. Sekarang cobalah
perintah:

3w

Kursor akan bergerak 3 kata ke kanan dan berhenti di
awal kata tersebut, yaitu pada huruf ‘T’ dari kata ‘The’.
Sekarang ketiklah :

}

Kursor akan bergerak ke awal paragraf selanjutnya,
yaitu baris kosong antar paragraf. Selanjutnya ketiklah:

1(

Kursor akan bergerak ke awal dari satu kalimat sebelum
sekarang, yaitu ‘K’ dari kata ‘Kelompok’ pada baris pertama
dalam paragraf pertama. Kemudian ketiklah:

$

kursor akan bergerak ke akhir baris dari baris pertama.
Disamping pergerakan kursor berdasarkan obyek teks
tertentu, kita dapat pula menggerakkan kursor berdasarkan
posisi absolut layar terminal. Perintah-perintah tersebut
dapat didahului oleh bilangan penentu lokasi.

—————————————————–
Perintah Bergerak ke
—————————————————–
H Karakter pertama pada baris pertama layar
M Karakter pertama pada baris tengah layar
L Karakter pertama pada baris terbawah layar
—————————————————–

Tabel 6.2 Gerakan kursor absolut layar

Disamping menggerakkan kursor disekeliling layar termi-
nal, kita dapat pula menggerakkan teks pada layar. Untuk itu
maka kita anggap bahwa layar adalah jendela yang digunakan
untuk melihat file teks. Kita dapat menggerakkan jendela
disekitar file untuk melihat bagian lainnya. Terdapat tiga
cara untuk menggerakkan jendela pada layar yaitu:

o roll
Perintah roll akan menggerakkan layar setiap kali
sebanyak satu baris, ke atas atau ke bawah. Untuk
menggerakkan roll ke atas satu baris dalam file
digunakan perintah ^Y. Penampakan pada layar adalah
bergerak turun. Untuk menggerakkan roll ke atas satu
baris dalam file digunakan perintah ^E. Penampakan
pada layar adalah bergerak naik.

o scroll
Perintah scroll akan menggerakkan jendela layar
sebanyak setengah jendela dan meninggalkan beberapa
dari teks sebelumnya pada layar untuk kesinambungan.
Untuk mengerakkan scroll ke atas digunakan perintah
^U sedangkan ke bawah ^D. Kedua perintah ini boleh
didahului sebuah bilangan yang menyatakan jumlah
baris yang bergerak bila dilakukan scrolling. vi
kemudian akan mengingat jumlah tersebut dan akan
digunakan untuk scrolling berikutnya.

o page
Perintah page akan menggerakkan layar sebanyak satu
ukuran jendela. Perintahnya untuk page maju adalah ^F
dan page mundur adalah ^B. Kedua perintah ini boleh
didahului sebuah bilangan yang menyatakan jumlah
perintah maju atau mundur diulang. Misalnya 3^F akan
membawa kita tiga halaman lebih maju dalam file.

Untuk lebih mendalaminya Anda harus mencoba perintah-
perintah tersebut sendiri. Tanpa mencoba maka perintah-
perintah tersebut akan terlihat sangat merepotkan.

6.3 MENGEDIT TEKS

Yang dimaksud mengedit teks disini adalah upaya
menambah, menghapus dan mengganti teks. Untuk melakukan hal
tersebut digunakan beberapa perintah pada mode perintah.
Pada sub bab sebelumnya telah diberikan cara untuk
memasukkan teks ke dalam file kosong dengan perintah ‘i’.
Perintah ‘i’ digunakan untuk menyisipkan teks. Untuk
lebih jelas mari kita buka kembali file coba.

satu
dua
tiga
empat
lima

Pada mode perintah, gerakkan kursor hingga berada pada
huruf ‘t’ pada kata satu. Kemudian ketikkan:

i

Kini kita berada pada mode pemasukan. Ketikkan teks
berikut:

11111

Tekan ESC untuk mengakhiri proses penyisipan dan
kembali ke mode perintah. Sekarang layar akan tampak seperti
dibawah ini:

sa11111tu
dua
tiga
empat
lima

Perintah ‘i’ akan menyisipkan teks sebelum karakter di
bawah kursor.
Sekarang gerakkan kursor ke huruf ‘a’ dari kata
‘tiga’. Kita dapat menyisipkan teks pada awal baris dari
baris sekarang tanpa harus menggerakkan kursor ke awal baris
dari baris sekarang, tetapi cukup dengan menggunakan
perintah ‘I’.

I

kemudian ketikkan:

AWAL

Tekan ESC untuk mengakhiri proses penyisipan teks di
awal baris dari baris sekarang dan kembali ke mode perintah.
Sekarang layar akan tampak seperti dibawah ini:

sa11111tu
dua
AWALtiga
empat
lima
Kita dapat pula menyisipkan teks sesudah karakter
dibawah kursor dengan menggunakan perintah ‘a’. Misalkan
kita ingin menambahkan teks diakhir baris, yaitu sesudah
kata ‘sa11111tu’, maka kita harus menggerakkan kursor ke
huruf ‘u’ dan mengetikan perintah:

a

Kemudian ketikkan:

AKHIR

Tekan ESC untuk mengakhiri proses penambahan teks dan
kembali ke mode perintah. Sekarang layar akan tampak seperti
dibawah ini:

sa11111tuAKHIR
dua
AWALtiga
empat
lima

Dengan perintah ‘i’ kita tak dapat menambahkan kata
‘AKHIR’ pada kata ‘sa11111tu’, karena perintah ‘i’
menyisipkan pada teks sebelum karakter dibawah kursor.
Sekarang gerakkan kursor ke huruf ‘t’ dari kata
‘tiga’. Jika kita ingin menambahkan teks pada akhir baris
dari baris sekarang, dapat dilakukan tanpa harus
menggerakkan kursor ke akhir baris dari baris sekarang,
tetapi cukup dengan menggunakan perintah ‘A’.

A

kemudian ketikkan:

33333

Tekan ESC untuk mengakhiri proses penambahan teks di
akhir baris dari baris sekarang dan kembali ke mode
perintah. Sekarang layar akan tampak seperti dibawah ini:

sa11111tuAKHIR
dua
tiga33333
empat
lima

Terkadang kita ingin menyisipkan teks baru dibawah
atau diatas baris teks sekarang. Untuk itu gunakan perintah
‘o’ untuk menyisipkan teks baru dibawah baris teks sekarang
dan perintah ‘O’ untuk menyisipkan teks baru di atas baris
sekarang. Misalkan kini kita berada pada huruf ‘p’ dari kata
‘empat’, ketikkan:

o
Kemudian ketikkan:

DI BAWAH EMPAT

Tekan ESC untuk mengakhiri proses penyisipan teks di
bawah baris sekarang dan kembali ke mode perintah. Sekarang
layar akan tampak seperti dibawah ini:

sa11111tuAKHIR
dua
tiga33333
empat
DI BAWAH EMPAT
lima

Untuk mengubah teks yang telah dimasukkan dapat
digunakan beberapa cara. Perintah ‘r’ akan mengubah per satu
karakter. Jika ingin diganti lebih dari satu karakter maka
dapat digunakan perintah ‘R’. Setelah mengetikkan ‘R’, maka
apa saja yang diketikkan hingga ESC akan mengubah teks yang
dilewatinya. Misalnya kita ingin mengubah ‘BAWAH’ menjadi
‘bawah’, maka kita harus menggerakkan kursor ke huruf ‘B’
dan mengetik:

R

kemudian ketikkan:

bawah

Tekan ESC untuk mengakhiri proses pengubahan teks dan
kembali ke mode perintah. Sekarang layar akan tampak seperti
dibawah ini:

sa11111tuAKHIR
dua
tiga33333
empat
DI bawah EMPAT
lima

Perintah ‘R’ akan menimpa atau overwrite karakter yang
dilewati. Jika diinginkan pengubahan pada beberapa karakter
dengan karakter lain yang lebih panjang tanpa menimpa
karakter yang tidak berhubungan, maka dapat digunakan
perintah substitusi dengan ‘s’. Misalkan kita ingin
mengganti ‘tu’ pada kata ‘sa11111tuAKHIR’ dengan ‘one’ maka
kita harus menggerakkan kursor ke huruf ‘t’ dan ketikkan:

2s

diikuti dengan:

one

Tekan ESC untuk mengakhiri proses substitusi teks dan
kembali ke mode perintah. Sekarang layar akan tampak seperti
dibawah ini:

sa11111oneAKHIR
dua
tiga33333
empat
DI bawah EMPAT
lima

Untuk menghapus teks ada beberapa cara. Perintah ‘x’
akan menghapus satu karakter tepat dibawah kursor. Misalnya
kita akan menghapus ‘d’ dari kata ‘dua’, maka kita harus
menggerakkan kursor ke huruf ‘d’ dan mengetikkan:

x

Sekarang layar akan tampak seperti dibawah ini:

sa11111oneAKHIR
ua
tiga33333
empat
DI bawah EMPAT
lima

Perintah ‘x’ dapat didahului oleh bilangan. Misalkan
sekarang kursor berada pada huruf ‘a’ pada kata ‘tiga33333′.

6x

Sekarang layar akan tampak seperti dibawah ini:

sa11111oneAKHIR
ua
tig
empat
DI bawah EMPAT
lima

Perintah ‘X’ bekerja seperti ‘x’, tetapi menghapus
karakter yang berada disebelah kiri kursor.
Cara penghapusan teks lainnya adalah dengan menggunakan
perintah ‘d’, cara ini akan menghapus berdasarkan obyek teks
yang telah ditentukan. Perintah ‘d’ yang diikuti spesifikasi
obyek akan menghapus karakter yang terdapat pada posisi
kursor sekarang sampai dengan obyek yang disebutkan.
Misalnya kita berada diantara ‘DI’ dan ‘bawah EMPAT’,
kemudian akan menghapus 2 kata berikutnya sesudah ‘DI’ maka
akan digunakan perintah ’2dw’.

2dw

Sekarang layar akan tampak seperti ini:

sa11111oneAKHIR
ua
tig
empat
DI
lima

Perintah ‘dd’ akan menghapus baris sekarang. Misalnya
sekarang kursor berada pada ‘DI’, kemudian kita ketikkan:

dd

Sekarang layar akan tampak seperti ini:

sa11111oneAKHIR
ua
tig
empat
lima

Perintah ‘D’ akan menghapus semua karakter di sebelah
kanan kursor termasuk karakter di bawah kursor.
Jika suatu saat secara tak disengaja kita melakukan
perintah dan ingin dibatalkan maka kita dapat membatalkan
dengan menggunakan fasilitas undo dengan perintah ‘u’.
Perintah ‘u’ akan membetulkan perubahan terakhir yang dibuat
pada teks. Perintah ‘U’ akan memperbaiki baris sekarang
kembali ke keadaan semula sebelum diadakan perubahan.
Berarti ‘u’ hanya mengembalikan perubahan terakhir,
sedangkan ‘U’ memperbaiki baris ke keadaan sebelumnya tanpa
mempedulikan perubahan yang telah dibuat.

6.4 MENCARI TEKS

Untuk mencari teks dapat digunakan beberapa cara antara
lain:

– pencarian baris tertentu
– pencarian satu karakter
– pencarian untaian karakter

Jika baris dari karakter atau untaian karakter telah
diketahui, maka kita dapat dengan segera ke baris tersebut
tanpa harus menggerakkan kursor. Misalnya kita ingin berada
pada baris ke 200 dari file yang kita edit, maka dengan
mudah kita dapat menggunakan perintah G sebagai berikut:

200G

atau dengan perintah ex:

:200

Untuk pencarian satu karakter pada suatu baris tertentu
dapat dilakukan dengan perintah ‘f’ dan ‘F’. Perintah ‘f’
mencari ke depan dan perintah ‘F’ mencari ke belakang dalam
baris yang sama untuk satu karakter yang ditentukan.
Perintah-perintah ini akan menempatkan kursor tepat pada
karakter yang ditemukan.
Cara lain adalah dengan menggunakan perintah ‘t’ dan
‘T’. Kedua perintah ini menyerupai perintah ‘f’ dan ‘F’,
kecuali penempatan kursor pada karakter yang ditemukan.
Perintah ‘t’ akan menempatkan kursor pada sisi kiri karakter
yang ditemukan dan perintah ‘T’ pada sisi kanan karakter
yang ditemukan. Jika kita ingin mencari karakter ‘z’ maka
diketikkan:

tz

kursor akan berakhir disisi kiri ‘k’ pertama. Demikian
untuk perintah-perintah pencarian satu karakter lainnya.
Pada umumnya kita melakukan pencarian berupa untaian
karakter. Untuk melakukan hal ini ketiklah ‘/’ dengan
diikuti untaian karakter yang dicari dengan diikuti ENTER.

/

kursor akan bergerak ke baris terbawah dari layar.
Kemudian ketiklah untaian karakter yang kita cari diikuti
ENTER. Pencarian dilakukan secara maju dan kursor akan
diletakkan pada awal dari untaian karakter yang dicari jika
untaian karakter tersebut diketemukan.
Jika diinginkan kita dapat pula mencari untaian
karakter secara mundur, yatiu dengan mengetikkan:

?

kursor akan bergerak ke baris terbawah dari layar.
Kemudian ketiklah untaian karakter yang kita cari diikuti
ENTER. Pencarian dilakukan secara mundur dari bawah ke atas
dan kursor akan diletakkan pada awal dari untaian karakter
yang dicari jika untaian karakter tersebut diketemukan.
Jika kita ingin mencari untaian karakter berikutnya
(jika ada) baik maju ataupun mundur, maka ketikkan:

n

Kursor akan mencari pada baris selanjutnya.
Jika kita menggunakan perintah pencarian di atas
terhadap untaian karakter ‘anda’, maka perintah tersebut
akan mengabaikan untaian karakter ‘Anda’ sebagai karakter
yang dicari. Agar vi mengenal, maka kita harus memasang set
up berikut:

:set ignorecase

yang akan mengabaikan perbedaan huruf besar dan kecil.
Untuk mengembalikan ke kondisi semula, ketikkan:

:set noic

6.5 MEMINDAHKAN TEKS

Seperti pada pengolah kata lainnya, vi juga memiliki
fasilitas untuk melakukan blok teks dan mengcopy atau
memindahkan teks ke lokasi lain di dalam file. Proses
pemindahan atau pengcopyan teks adalah pertama-tama teks
dipindah atau dicopy ke dalam buffer, kemudian isi dari
buffer tersebut dicopy ke lokasi yang diinginkan. Setiap
kali kita menghapus teks, teks tersebut disimpan di dalam
buffer. Untuk jelasnya perhatikan contoh berikut dengan
menggunakan teks sebelumnya.

Kelompok musik legendaris The Beatles terdiri dari Jhon
Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kelompok ini telah membubarkan diri dan tidak ingin
disatukan kembali. Upaya penyatuan ini semakin tidak
mungkin dengan meninggalnya Jhon lenon akibat
pembunuhan didepan apartemennya.

Letakkan kursor pada baris pertama teks dan hapuslah
baris tersebut dengan mengetikkan:

dd

sehingga menghasilkan:

Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kelompok ini telah membubarkan diri dan tidak ingin
disatukan kembali. Upaya penyatuan ini semakin tidak
mungkin dengan meninggalnya Jhon lenon akibat
pembunuhan didepan apartemennya.

Baris petama dari teks diatas telah dihapus dengan
sebelumnya disimpan di dalam buffer. Untuk mengembalikan
baris tersebut, kita harus mengcopy isi buffer ke baris
pertama teks dengan perintah ‘p’ atau ‘P’. Perintah ‘P’ akan
mengcopy isi buffer yang berisi baris yang dihapus dan
meletakkannya di atas baris tempat kursor berada sekarang,
sedangkan perintah ‘p’ akan meletakkan di bawah baris tempat
kursor berada sekarang.
Sekarang gerakkan kursor ke baris pertama teks dan
ketikkan:

P

sehingga menghasilkan:

Kelompok musik legendaris The Beatles terdiri dari Jhon
Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kelompok ini telah membubarkan diri dan tidak ingin
disatukan kembali. Upaya penyatuan ini semakin tidak
mungkin dengan meninggalnya Jhon lenon akibat
pembunuhan didepan apartemennya.

Kita dapat pula meletakkan teks ke dalam buffer tanpa
harus menghapusnya, yaitu dengan perintah ‘Y’. Dengan
kombinasi bilangan dan perintah ini, kita dapat mengcopy
beberapa baris. Misalkan kita berada pada baris pertama teks
dan mengetikkan:

2Y

akan mengcopy 2 baris dari baris kursor sekarang ke
dalam buffer. Kemudian gerak kursor ke akhir baris dan
ketikkan:

p

sehingga menghasilkan:

Kelompok musik legendaris The Beatles terdiri dari Jhon
Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kelompok ini telah membubarkan diri dan tidak ingin
disatukan kembali. Upaya penyatuan ini semakin tidak
mungkin dengan meninggalnya Jhon lenon akibat
pembunuhan didepan apartemennya.
Kelompok musik legendaris The Beatles terdiri dari Jhon
Lenon, Paul McCartney, Ringo Star dan George Harrison.

Kita dapat meletakkan obyek teks lain dalam sebuah
buffer dengan menggunakan perinta ‘y’. Ikuti perintah ‘y’
dengan spesifikasi obyek teksnya. Misalnya kita ingin
meletakkan 5 kata ke dalam buffer maka diketikkan:

y5w

atau jika diinginkan meletakkan paragraf pertama dari
teks diatas, maka gerakkan ke awal baris dan ketikkan:

y{

Kita dapat pula menyimpan ke lebih dari satu buffer.
Untuk membedakan antara satu buffer dengan buffer lainnya,
maka setiap buffer harus diberi nama dengan sebuah huruf a
s/d z. Disamping itu, harap diperhatikan bahwa setiap
dilakukan perintah pengiriman atau pemanggilan isi dari
buffer harus di dahului karakter kutip ganda. Perhatikan
contoh-contoh berikut:

——————————————————-
KIRIM PANGGIL OPERASI
——————————————————-
“aY “ap atau “aP baris sekarang pada buffer a
“b4Y “bp atau “bP 4 baris pada buffer b
“cy5w “cp atau “cP 5 kata pada buffer c
——————————————————-

Tabel 6.3 Operasi dengan buffer

Tanpa buffer yang ditentukan namanya, teks akan
disimpan pada buffer tak bernama yang biasa digunakan
bersama.
Di dalam pengolah kata profesional seperti Wordstar
dikenal operasi blok, misalnya ^KB dan ^KK yang dilanjutkan
dengan ^KC untuk pengcopyan blok atau ^KV untuk pemindahan
blok. Pada vi, operasi seperti ini dapat dilakukan dengan
perintah ‘m’ diikuti huruf kecil sebagai tanda (mark).
Misalnya kita akan memblok teks, maka yang harus dilakukan
adalah mengetikkan:

mb

pada awal teks yang akan diblok, dimana b adalah nama
tanda untuk proses blok teks. Kemudian gerakkan kursor ke
akhir blok teks. Posisi kursor sekarang adalah akhir blok
teks. Langkah selanjutnya adalah memasukkan ke dalam buffer
sebagai berikut:

y`b

Perintah ini akan mengcopy teks yang berada dalam blok
teks tanda b ke dalam buffer. Jika operasi yang diinginkan
adalah memindahkan blok maka digunakan perintah:

d`b

Perintah ini akan menghapus teks yang berada dalam blok
teks tanda b dengan sebelumnya mengcopy blok teks tersebut
ke dalam buffer. Jika digunakan kutip tunggal (‘), maka
operasi dilakukan dari awal baris dan tidak tepat pada tanda
yang diberikan. Selanjutnya kita dapat meletakkan isi dari
buffer ke dalam teks dengan perintah ‘p’ atau ‘P’.

6.6 MENGGUNAKAN ex DI DALAM vi

Secara keseluruhan sebenarnya vi telah cukup ampuh
dalam mengelola teks. Namun demikian untuk lebih
meningkatkan kemampuan dan kemudahan vi dilengkapi dengan
editor baris ex. Berikut ini beberapa kemampuan ex yang
banyak digunakan di dalam vi :
o Walaupun ada beberapa cara untuk keluar dari vi,
namun pemakaian operasi ex tulis (w) dan keluar (q)
mungkin yang paling banyak digunakan karena sangat
mudah digunakan. Perintah yang biasa digunakan untuk
menulis teks yang sedang kita edit ke file lain
adalah perintah tulis milik ex, yaitu w namafile.

o Membaca teks dari file lain dengan memasukkan ke
buffer menggunakan perintah baca milik ex yaitu r
namafile

o Memasang atau membatalkan set up editor vi dilakukan
melalui operasi set ex.

o Menjalankan perintah-perintah UNIX melalui editor vi
dilakukan melalui ex.

o Mengubah teks secara global.

dan banyak kemampuan lainnya yang akan meningkatkan
performansi vi. Pada sub bab ini akan dibahas beberapa
kemampuan ex yang banyak digunakan. Format umum perintah-
perintah ex adalah:

[pilihan jangkauan] perintah [pilihan jangkauan]

jangkauan menyatakan baris yang akan dioperasi oleh
perintah ex. Jika jangkauan tidak disebutkan maka operasi
dilakukan terhadap baris sekarang. Jangkauan ada 3 bentuk,
yaitu:

o Nomor baris tunggal
menunjukkan baris hanya baris tunggal saja yang
dikenakan perintah yang diberikan.
Contoh:

:3d (hapus baris ke tiga)
:d (hapus baris sekarang)

o Pasangan bilangan yang dipisahkan oleh koma
menunjukkan baris jangkauan baris yang dikenakan
perintah yang diberikan. Jangkauan dapat berupa nomor
bilangan, tanda (mark) atau ekspresi reguler.
Contoh:

:3,10d (hapus dari baris 3 s/d 10)
:2,$d (hapus dari baris 2 s/d akhir baris)
:.,.+5d (hapus baris sekarang s/d 5 baris berikut)
:’a,’b (hapus dari baris tanda ‘a s/d tanda ‘b)

o Indikator global yang diikuti ekpresi reguler
menunjukkan aksi global pada baris yang sesuai dengan
ekpresi regulernya.
Contoh:

:g/UNIX/d (hapus semua baris yang berisi UNIX)
:g/BSD/s/BSD/bsd/g (ubah semua BSD menjadi bsd)

6.6.1 Mencari dan Mengganti Teks

Pemanfaatan ex banyak digunakan untuk melakukan
perintah-perintah global yang akan mempengaruhi semua teks
di dalam file, misalnya mengubah semua kata ‘Unix’ menjadi
‘UNIX’, menghapus semua baris yang mengandung kata ‘BSD’ dan
lain-lain. Format umum perintah ini adalah:

s/target/pengganti/[pilihan jangkauan]

dimana target adalah kata yang akan diganti dan
pengganti adalah kata yang akan menggantikannya. Misalkan
kita memiliki file yang berisi:

Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

Sekarang file tersebut sedang kita edit dengan editor
vi. Gerakkan kursor ke awal baris dandan ketikkan:

:s/Unix/UNIX (ganti Unix ke UNIX di temuan pertama)

maka akan menghasilkan:

Dari UNIX oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

Perhatikan bahwa yang diubah hanyalah kata ‘Unix’ pada
temuan pertama di baris pertama. Masih pada baris pertama,
lakukan perintah di atas dengan memberikan pilihan ‘g’
sebagai berikut:

:s/Unix/UNIX/g (ganti Unix ke UNIX di seluruh temuan)

maka akan menghasilkan:

Dari UNIX oleh UNIX dan untuk UNIX
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

Semua kata ‘Unix’ diganti menjadi ‘UNIX’ pada baris
pertama (baris sekarang) dan tidak hanya temuan pertama
saja. Selanjutnya agar operasi dilakukan pada jangkauan
tertentu, kita harus menetapkan jangkauan sebagai berikut:

:2,3s/Unix/UNIX/g (ganti pada baris 2 s/d 3)

maka akan menghasilkan

Dari UNIX oleh UNIX dan untuk UNIX
Hanya UNIX yang dapat diterima kalangan non UNIX
Karena UNIX adalah UNIX

Untuk operasi dengan jangkauan semua baris teks dapat
dilakukan dengan perintah berikut:

:g/UNIX/s/UNIX/Unix/g (ganti pada semua baris)

maka akan menghasilkan:

Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

pernyataan g/UNIX/s/UNIX/Unix/g dapat disederhanakan
menjadi

:g/UNIX/s//Unix/g

dimana target yang kosong (null) dari perintah
substitusi diartikan sebagai sama dengan ekspresi reguler
sebelumnya, yaitu g/UNIX/. Perintah ini dapat pula
dinyatakan dengan perintah berikut:

:1,$s/UNIX/Unix/g

6.6.2 Operasi blok

Operasi blok dapat dilakukan dengan mudah dengan
menggunakan format seperti ini:

jangkauan blok perintah tujuan

dimana jangkauan blok merupakan jangkauan dari teks
yang akan dikenakan perintah. Perintah dapat berupa operasi
copy (co), pemindahan (mo), tulis (w) atau baca (r). Hasil
operasi akan diletakkan ke tujuan. Perhatikan file berikut:

Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

Gerakkan kursor ke baris ke tiga dan ketikkan perintah
pengcopyan berikut:

:1,2 co .

yang akan mengcopy baris ke 1 s/d 2 ke baris sekarang,
sehingga menghasilkan:

Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Karena Unix adalah Unix

Untuk memindahkan baris ke 1 s/d 3 ke baris 5 dilakukan
perintah berikut:

:1,3 mo 5

yang akan memindahkan baris ke 1 s/d 3 ke baris 5,
sehingga menghasilkan:

Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Karena Unix adalah Unix

Untuk menuliskan blok teks tertentu ke file dapat
dilakukan perintah berikut:

:3,5 w coba3

sehingga jika kita keluar dari vi dan melihat isi file
coba3, file tersebut berisi:

$ cat coba3
Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Karena Unix adalah Unix
$

Jika file tujuan telah ada dan kita tidak ingin menimpa
melainkan menambahkan pada akhir baris, maka dapat digunakan
perintah berikut ini:

:3,5 w >> coba3

sehingga jika kita keluar dari vi dan melihat isi file
coba3, file tersebut berisi:

$ cat coba3
Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Karena Unix adalah Unix
Hanya Unix yang dapat diterima kalangan non Unix
Dari Unix oleh Unix dan untuk Unix
Karena Unix adalah Unix
$

Sedangkan untuk membaca atau mengambil isi file lain ke
dalam teks yang sedang kita edit dapat digunakan perintah
berikut:

:2 r coba3

yang akan membaca file coba3 dan diletakkan ke baris 2
dari teks yang sedang kita edit.

6.6.3 Interaksi dengan Shell

Ketika kita bekerja dengan vi, kita dapat pula
menjalankan perintah UNIX lainnya. Caranya adalah sebagai
berikut:

:! namaprogram

Misalnya ketika kita menggunakan vi, kita dapat
pula melihat isi direktori dengan mengetikkan perintah:

:! ls -al

atau jika kita sedang mengedit teks dan membutuhkan
perhitungan, kita dapat menjalankan program kalkulator (bc)
tanpa harus keluar dari vi:

:!bc

setelah melakukan penghitungan dan diakhiri dengan ^D
maka vi akan memberikan pesan:

[Press return to continue]

Jika operasi ini masih dirasakan mengganggu, kita dapat
keluar dari vi tanpa kita ‘benar-benar’ keluar, yaitu dengan
mengetikkan:

:sh

Kita akan mendapatkan prompt shell dan dapat langsung
beraktifitas seperti biasanya. Untuk kembali ke vi cukup
diketikkan:

^D

atau

exit

Hal lain yang cukup penting dalam interaksi shell di
dalam vi dengan menggunakan ex adalah perintah:

: [posisi baris ] r ! perintah

yang akan menampilkan hasil operasi perintah ke dalam
teks yang sedang kita edit. Untuk lebih jelas, perhatikan
teks berikut yang dimisalkan sedang kita edit:

satu dua tiga
empat lima enam
tujuh delapan sembilan
sepuluh sebelas dan seterusnya

Jika kita akan memberikan tanggal dan waktu pada baris
pertama dari teks yang sedang kita edit, maka dapat
diketikkan:

:1 r! date

maka akan menghasilkan:

Fri Oct 23 07:28:32 PDT 1992
satu dua tiga
empat lima enam
tujuh delapan sembilan
sepuluh sebelas dan seterusnya

Interaksi vi dan shell lain yang tidak kalah pentingnya
adalah:

:jangkauan ! perintah

yang akan memproses baris teks yang kita edit pada
jangkauan sesuai dengan perintah yang telah ditentukan.
Misalnya kita akan mengurutkan teks yang sedang kita edit
maka ketikkan:

:2,4 ! sort

maka akan menghasilkan:

Fri Oct 23 07:28:32 PDT 1992
empat lima enam
satu dua tiga
sepuluh sebelas dan seterusnya
tujuh delapan sembilan

6.6.4 Membuat Perintah Sendiri

Ada dua cara untuk membuat perintah sendiri pada editor
vi yaitu:

o Perintah pada mode perintah
Teknik ini sering disebut macro. Untuk membuatnya
digunakan perintah map dengan format sebagai berikut:

:map kunci perintah

Untuk mendefinisikan perintah baru ‘g’ yang akan
membawa kursor ke baris pertama, maka ketiklah:

:map g 1G

Maka setelah proses pendefinisian ini, setiap kita
mengetikkan ‘g’, kursor akan dibawa ke baris pertama.
Kita dapat pula membuat perintah yang lebih komplek,
misalnya membuat perintah M yang akan memasukkan
kata ‘!AWAL’ pada awal baris dan ‘!AKHIR’ pada akhir
baris pada baris sekarang.

:map M I!AWAL^[A!AKHIR^[

dimana penekanan ESC pada vi akan dinyatakan sebagai
^[. Jadi, jika kita memiliki kalimat:

Karena Unix adalah Unix

kemudian ketikkan perintah:

M

maka akan menghasilkan

!AWALKarena Unix adalah Unix!AKHIR

Selanjutnya untuk membatalkan pembuatan perintah yang
telah diciptakan digunakan perintah:

:unmap kunci

o Perintah pada mode pemasukkan teks
Ketika kita mengetik teks, sering terdapat kata yang
cukup panjang dan berulang-ulang. Dengan perintah
abbr, kita dapat menyimpan untaian karakter tersebut
ke dalam sebuah kunci tertentu. Perintah seperti ini
di dalam Wordstar disebut sebagai shorthand. Format
yang digunakan adalah:

:abbr key teks

Misalnya kata 'sistem operasi UNIX' akan disimpan di
dalam kunci 'U', maka ketik perintah berikut pada
mode perintah:

:abbr U sistem operasi UNIX

Sehingga jika kita mengetikkan 'U' diikuti spasi di
dalam mode pemasukkan teks, maka kunci 'U' akan
diganti dengan dengan untaian karakter 'sistem
operasi UNIX'.

6.6.5 Lingkungan vi

Editor vi memiliki sejumlah flag dan variabel
lingkungan yang mendefinisikan lingkungan pengeditan. Kita
dapat mensetnya dengan menggunakan perintah:

:set lingkungan

Untuk melihat set up apa saja yang bisa diguanakan
dapat dilihat dengan menggunakan perintah berikut ini di
dalam mode perintah dalam vi.

:set all
noautoindent nonumber noshowmode
autoprint open noslowopen
noautowrite optimize tabstop=8
nobeautify paragraphs=IPLPPPQPP LIpplpipbp taglength=0
directory=/tmp noprompt tags=tags /usr/lib/tags
noedcompatible noreadonly term=dumb
noerrorbells noredraw noterse
hardtabs=8 remap timeout
noignorecase report=5 ttytype=dumb
nolisp scroll=4 warn
nolist sections=NHSHH HUnhsh window=8
magic shell=/bin/csh wrapscan
mesg shiftwidth=8 wrapmargin=0
nonovice noshowmatch nowriteany
[Press return to continue]

Pada sub bab ini pembahasan mengenai set up hanya
dibatasi pada beberapa set up yang sangat penting dan sering
digunakan saja.
Secara horisontal, panjang teks standar pada vi adalah
80 karakter. Kita dapat mengubah panjang teks tersebut
dengan menggunakan:

:set wrapmargin=10

atau

:set wm=10

yang akan mengubah panjang teks standar menjadi 70
karakter, yaitu 80 dikurang 10 karakter.
Set up lain yang banyak dipakai adalah set up penomoran
baris di sisi kiri.

:set number

atau

:set nu

Penomoran ini tidak termasuk di dalam teks melainkan
hanya ditampilkan di layar editor vi saja. Untuk
mengembalikan pada kondisi tanpa penomoran digunakan:

:set nonumber

atau

set nonu

Bagi pemula yang menggunakan vi, mungkin akan lebih
mudah jika kondisi mode sekarang ditampilkan.

:set showmode

Sehingga akan ditampilkan pesan input mode bagi mode
pemsukkan teks. Untuk mengembalikan ke kondisi semula:

:set noshowmode

Set up penting lainnya adalah untuk mengabaikan
perbedaan huruf besar dan kecil dalam pencarian, misalnya
kata ‘Unix’ dan ‘UNIX’.

:set ignorecase

untuk mengembalikan ke kondisi dimana huruf besar dan
kecil berbeda:

:set noignorecase

atau

:set noic

Masih banyak set up lain yang dapat Anda coba sesuai
dengan kebutuhan Anda.
Kita dapat merekam lingkungan vi kita sendiri, yang
terdiri dari set up yang telah terpasang dan perintah-
perintah buatan sendiri ke dalam file .exrc.

$ cat .exrc
set showmode
set wm=10
map g 1G
map M I!AWAL^[A!AKHIR^[
abbr U sistem operasi UNIX
abbr T utilitas-utilitas sistem
$

Ketika editor vi dipanggil, vi akan mencari file .exrc
di home directory kita. Jika ditemukan, maka file tersebut
akan dijalankan sebagai script dari perintah-perintah ex
sebelum pengeditan dimulai. Dengan demikian setiap kali kita
menggunakan editor vi, lingkungan yang sesuai milik kita
otomatis telah terpasang.

6.7 EDITOR TEKS TAK INTERAKTIF DENGAN sed

Perintah sed adalah editor teks tak-interaktif dan
merupakan turunan dari ed. Data dialirkan perbaris dari
masukan standar atau file ke sed kemudian dilakukan operasi
perintah ed pada setiap baris tersebut dan hasilnya ditulis
ke standar keluaran, itu sebabnya disebut editor
berorientasi stream . Format umum dari perintah sed adalah:

sed [alamat[,alamat]] operasi [file .... ]

dimana alamat adalah baris yang cocok, yang merupakan
obyek operasi sed. Alamat dapat merupakan nomor baris atau
pola. Contoh penulisan perintah sed:

sed 1,10d input_file
| | |
| | |________ file
| |___________ operasi
|______________ alamat berupa nomor baris

sed /mylove/d input_file > output_file
| | | | |
| | | | |___ file keluaran
| | | |_______ pengalihan keluaran
| | |_____________ file masukan
| |____________________ operasi
|_________________________ alamat berupa pola

Gambar 6.3 Penulisan perintah sed lengkap

Operasi yang dapat dilakukan oleh sed adalah beragam.
Beberapa operasi yang bermanfaat dan sering digunakan antara
lain seperti terlihat pada tabel 6.4.

———————————————————
perintah operasi
———————————————————
a tambahkan baris ke output
d hapus baris dan baca baris berikutnya
i sisipkan tesk berikut sebelum baris berikut
p tampilkan baris output
q akhiri sed
r baca file dan salin ke standar output
s substitusi
w tulis ke file
= cetak nomor baris sekarang
!op lakukan perintah op pada baris tak terpilih
———————————————————

Tabel 6.4 Operasi sed

Untuk lebih memahami bagaimana keampuhan sed dalam
memanipulasi teks, maka akan diuraikan lebih mendalam
mengenai operasi-operasi di atas.

$ cat percobaan
denny jakarta 1969
irmawati medan 1967
chaerinda jakarta 1968
pahotma medan 1968
chaidir jakarta 1967
$

Untuk melakukan substitusi terhadap suatu kata dapat
dilakukan sebagai berikut:

$ sed ’1,3 s/jakarta/bandung/’ percobaan
denny bandung 1969
irmawati medan 1967
chaerinda bandung 1968
pahotma medan 1968
chaidir jakarta 1967
$

Proses di atas adalah melakukan penggantian kata
jakarta menjadi bandung mulai dari baris ke 1 sampai dengan
baris ke 3 saja. Baris berikutnya diabaikan dan langsung
ditampilkan ke layar.
Jika kita mengingankan perubahan kata jakarta menjadi
bandung mulai dari awal hingga akhir baris maka jangkauan
alamat dapat diubah sebagai berikut:

$ sed ’1,$ s/jakarta/bandung/’ percobaan
denny bandung 1969
irmawati medan 1967
chaerinda bandung 1968
pahotma medan 1968
chaidir bandung 1967
$ cat percobaan
denny jakarta 1969
irmawati medan 1967
chaerinda jakarta 1968
pahotma medan 1968
chaidir jakarta 1967
$

Perhatikan pula bahwa sed tidak mengubah file aslinya,
sehingga jika kita menginginkan adanya perubahan terhadap
file aslinya maka yang harus kita lakukan adalah proses
pengalihan keluaran standar ke dalam file.

$ sed ’1,3 s/jakarta/bandung/’ percobaan > /tmp/coba
$ mv /tmp/coba percobaan
$

Seperti telah kita ketahui bahwa sed akan mengeluarkan
setiap baris, walaupun tidak ada perubahan pada baris
tersebut. Namun demikian kita dapat menghentikan operasi
menampilkan ke layar. Misalnya kita menginginkan menampilkan
hanya 2 baris data dari file percobaan,

$ sed 2q percobaan (jika sudah 2 baris maka selesai)
denny bandung 1969
irmawati medan 1967
$
Di atas telah disebutkan bahwa alamat yang digunakan
oleh sed ada 2 jenis yaitu nomor dan pola. Contoh-contoh di
atas menggunakan nomor sebagai alamatnya. Berikut ini akan
diberikan contoh untuk alamat yang menggunakan pola. Pola
dapat berupa ekspresi reguler.

$ sed ‘/medan/d’ percobaan (hapus yang berisi medan)
denny bandung 1969
chaerinda bandung 1968
chaidir bandung 1967
$

Masih banyak lagi kemampuan sed yang belum terungkap
pada sub bab ini. Tabel di bawah memperlihatkan beberapa
contoh pemakaian sed lainnya.

———————————————————-
perintah sed
———————————————————-
sed ‘/[Uu]nix/d’ hapus baris yang berisi kata Unix
atau unix
sed -n ’2,9p’ cetak baris 2 s/d 9 saja
sed ‘/unix/s/1/5/’ ubah 1 menjadi 5 pada semua baris
yang mengandung kata unix
sed ‘s/^…//’ hapus 3 karakter pertama dari
setiap baris
sed ‘s/…$//’ hapus 3 karakter terakhir dari
setiap baris
sed ’1,/^$/d’ hapus sampai dengan baris kosong
sed ‘/unix/w xxx’ tulis semua baris yang berisi kata
unix ke dalam file xxx
———————————————————-
BAB 7
SHELL DAN PEMROGRAMANNYA
Oleh: Syamsul Nasution

Pada bab ini akan dibahas mengenai shell dan kemampuan
pemrogramannya, khususnya Bourne Shell. Pembahasan akan
mencakup mengenai:

– kemampuan shell
– dasar-dasar pemrograman shell
– kutip
– argumen
– kendali pilihan
– pengulangan
– lingkungan pemakai
– pemrograman lanjutan

7.1 SHELL DAN KEMAMPUANNYA

Shell merupakan penghubung antara pemakai dan sistem.
Disamping itu Shell memiliki fungsi untuk menganalisa setiap
perintah yang dimasukkan melalui prompt UNIX dan
mengeksekusi perintah tersebut. Disamping itu, shell
memiliki kemampuan sebagai interpreter dari bahasa
pemrogramannya, yaitu bahasa shell.
Pada dasarnya pemrograman shell Unix adalah seperti
batch file pada DOS, namun dalam berbagai hal lebih canggih.
Shell sebagai bahasa pemrograman memiliki kelebihan
dibanding dengan bahasa pemrograman lainnya yang biasa
dipergunakan pada sistem UNIX, yaitu:

o Mudah dan handal dalam menggabungkan utilitas-
utilitas, lingkungan sistem (environment) dan
tools-tools yang ada pada sistem UNIX serta
memanfaatkannya secara optimal.

o Karena pemrograman shell dalam bentuk interpreter,
maka kesalahan yang terjadi pada pemrograman akan
lebih mudah ditemukan dan dimodifikasi.

o Pemanfaatan utilitas dan tools UNIX mengakibatkan
pengembangan suatu program dengan shell relatif
lebih cepat. Karena kita tidak perlu membangun
modul-modul baru lagi dari awal.

Bagi para pemakai biasa, pemrograman shell sering
dimanfaatkan untuk mendukung kerja pemakai pada lingkungan
sistem UNIX.
Bagi para administrator sistem dan pembangun sistem,
pemrograman shell banyak digunakan untuk:

– instalasi, reinstalasi dan deinstalsi perangkat lunak
– menu navigator
– pengelola administrasi pemakai dan file
– pengendali piranti-piranti yang digunakan

7.2 DASAR-DASAR PEMROGRAMAN SHELL

7.2.1 Membuat Program Shell

Pemrograman shell dapat dilakukan dengan menggunakan
dua cara:

o Pengetikkan isi program langsung ke terminal.

$ ls | wc -l (pemrograman sederhana !)
6
$

o Pengetikan program ke dalam file.
Untuk menulis program ke dalam file dapat digunakan
editor teks, misalnya vi (lihat bab sebelumnya). File
yang berisi program shell disebut script.

$ cat jpemakai
who | wc -l (isi program yang tersimpan di jpemakai)
$

Untuk menjalankan program yang baru kita buat adalah
dengan memanggil nama programnya.

$ jpemakai (eksekusi program)
sh: jpemakai: cannot execute
$

Program tersebut tidak bisa diekskusi, tentunya ada
sesuatu yang tertinggal. Mari kita coba cara berikut ini:

$ sh jpemakai (eksekusi program dengan shell)
6
$

Dengan memanggil shell terlebih dahulu, program di atas
dapat dijalankan dengan baik. Cara lain yang lebih praktis,
yaitu dengan mengubah mode perijinan file program tersebut
sehingga diijinkan untuk dieksekusi. Untuk itu digunakan
perintah chmod

$ ls -l jpemakai
rw-rw-r– 1 denny s1_87 12 Oct 23 07:31 jpemakai
$ chmod +x jpemakai (mengijinkan eksekusi)
$ ls -l jpemakai
rwxrwxr-x 1 denny s1_87 12 Oct 23 07:31 jpemakai
$ jpemakai
6
$

Untuk memaksa shell yang aktif yang bukan Bourne Shell
mengeksekusi program dalam bahasa pemrograman Bourne Shell,
dapat digunakan #!/bin/sh yang diletakkan pada awal baris
program shell. Dengan demikian jenis shell apapun yang
sedang aktif sekarang dapat mengeksekusi program kita dengan
penerjemah dalam bahasa Bourne Shell.

% cat jpemakai (ini C Shell)
#!/bin/sh
who | wc -l
% jpemakai
6
%

Perhatian, dukungan shell terhadap #!/bin/sh tidak
selalu terdapat pada sistem UNIX. Misalnya saja SCO Xenix
dan SCO UNIX mengharuskan baris pertama diisi perintah
kosong seperti karakter ‘:’ baru diikuti #!/bin/sh.
Mekanisme standar shell seperti pengalihan arah
keluaran dan masukan (I/O redirection) dan pemipaan dapat
langsung digunakan pada program jpemakai ini.

$ jpemakai > benarkah (masukkan keluaran ke file)
$ cat benarkah (lihat isi file benarkah)
6
$ jpemakai | wc -c (pemipaan ke perintah wc)
1
$

Di dalam program shell, kita dapat meletakkan komentar,
yaitu dengan menggunakan karakter ‘#’. Dengan demikian
ketika shell menjumpai karakter #, maka karakter dibelakang
karakter ‘#’ pada baris tersebut akan diabaikan.

$ cat info
#—————————————————–
# Program info versi 1.0
# untuk menampilkan informasi sederhana
#—————————————————–
echo Tanggal sekarang dan waktu sekarang adalah:
date # perintah melihat waktu sistem
echo Jumlah pemakai sistem sekarang adalah:
who | wc -l # perintah menghitung jumlah pemakai
echo Direktori kerja sekarang adalah:
pwd # perintah melihat direktori kerja
$ info
Tanggal sekarang dan waktu sekarang adalah:
Fri Oct 23 07:28:32 PDT 1992
Jumlah pemakai sistem sekarang adalah:
6
echo Direktori kerja sekarang adalah:
/usr/mhs/denny
$

7.2.2 Variabel

Seperti juga bahasa pemrograman lainnya, shell memiliki
kemampuan untuk menyimpan nilai ke dalam variabel. Sebuah
variabel shell dapat diawali oleh alfabet atau karakter
garis bawah dan diikuti oleh nol atau lebih alfanumerik atau
karakter garis bawah.
Untuk menyimpan sebuah nilai ke dalam variabel shell,
kita dapat lakukan dengan menyebutkan nama variabel shell
dengan diikuti oleh karakter sama dengan ‘=’ dan diikuti
oleh nilai yang ingin disimpan ke dalam variabel tersebut.

$ jumlah=10
$ dir_ku=/usr/mhs/denny
$

Ada dua hal penting yang perlu diketahui dalam
penggunaan variabel shell ini.

o Tidak diijinkan adanya spasi pada sebelum dan sesudah
karakter sama dengan.

o Shell tidak mengenal tipe data. Dengan demikian,
nilai apapun yang kita masukkan akan diartikan
sebagai untaian karakter. Jadi nilai 10 pada contoh
diatas adalah untaian karakter dan bukan integer.

Untuk menampilkan isi dari variabel, digunakan perintah
echo sebagai berikut.

echo $variabel

Karakter $ merupakan karakter khusus yang dikenal oleh
shell, yang mengartikan bahwa karakter berikutnya adalah
nama variabel. Perhatikan contoh berikut:

$ echo jumlah
jumlah
$ echo $jumlah
10
$

Contoh pertama menunjukkan bahwa jumlah adalah karakter
biasa, sedangkan pada contoh ke dua jumlah menunjukkan nama
variabel sehingga shell akan mensubstitusi variabel tersebut
dengan nilai yang tersimpan didalamnya untuk ditampilkan ke
terminal oleh perintah echo.

Untuk menghapus atau menghilangkan variabel yang telah
kita definisikan digunakan perintah unset sebagai berikut:

$ x=100
$ echo $x
100
$ unset x
$ echo $x
(variabel telah hilang !)
$

7.2.3 Membaca Data

Proses pembacaan data dapat dilakukan dari terminal
atau dari file. Caranya adalah dengan menggunakan perintah
read sebagai berikut:

read variabel-variabel

dimana ketika perintah ini dieksekusi, shell membaca
sebuah baris dari standar masukan dan memberikan kata
pertama ke dalam variabel pertama yang tercantum dalam
variabel-variabel, selanjutnya kata ke dua akan dibaca dan
diberikan ke variabel kedua, demikian seterusnya. Jika masih
terdapat banyak kata dari standar masukan, sedangkan
variabel yang ada terbatas, maka variabel terakhir akan
berisi kata-kata sisa dari standar masukan.

$ read x
saya
$ echo $x
saya
$ read x y (sisanya diberi ke y)
saya dan kamu sekalian
$ echo $y
dan kamu sekalian
$ read x (semuanya diberi ke x)
saya dan kamu sekalian
$ echo $x
saya dan kamu sekalian
$

Pembacaan dari file dilakukan dengan menggunakan
pengalihan arah masukkan dan keluaran.

$ cat data
saya kamu
$ read x y , >, < > < > <
syntax errror: ‘newline or ;’ unexpected
$

Perintah ini disalahkan oleh shell karena karakter ‘>’
adalah karakter khusus untuk pengalihan arah keluaran yang
harus diikuti nama file dan bukan oleh karakter khusus
newline. Untuk mengatasinya dapat kita gunakan garis miring
terbalik.

$ echo \>
>
$

Karakter garis miring terbalik akan menyebabkan shell
mengartikan karakter ‘>’ sebagai karakter biasa saja. Hal
yang sama berlaku pula pada contoh di bawah ini.

$ files=*
$ echo \$files
$files (bukan variabel shell)
$

Karakter garis miring sering pula digunakan untuk
membatalkan ganti baris, seperti terlihat pada contoh
berikut ini.

$ baris=satu’
> ‘dua
$ echo “$baris”
satu
dua (gagal membuat satu baris)
$ baris=satu\ (coba dengan garis miring terbalik)
> dua
$ echo “$baris”
satudua (berhasil …)
$

Karakter garis miring terbalik juga dapat kita gunakan
dalam karakter kutip ganda, seperti terlihat pada contoh
berikut:

$ echo “\$xxx”
$xxx
$ echo “\ adalah garis miring terbalik”
\ adalah garis miring terbalik
$ xxx=999
$ echo “nilai xxx adalah \”$xxx\””
nilai xxx adalah “999″
$

Ada beberapa karakter khusus yang diterjemahkan oleh
perintah echo. Karakter khusus tersebut harus didahului oleh
karakter garis miring terbalik.

——————————————————-
karakter hasil cetakan
——————————————————-
\b backspace
\c baris tanpa diakhiri newline
\f formfeed
\n newline
\r Carriage return
\t karakter tab
\\ karakter garis miring terbalik
\nnn karakter yang memiliki nilai ASCII nnn,
dimana nn adalah 1 s/d 3 dijit bilangan oktal
——————————————————-

Tabel 7.1 Karakter khusus pada garis miring terbalik

Perhatikan contoh-contoh berikut ini:

$ echo “satu \n dua \n tiga \n”
satu
dua
tiga
$ cat tanya1
echo “Masukkan pilihan anda: “
read x
echo Masukan yang anda ketik adalah $x
$ tanya1
Masukkan pilihan anda:
1234
Masukan yang anda ketik adalah 1234
$ cat tanya2
echo “Masukkan pilihan anda: \c”
read x
echo Masukan yang anda ketik adalah $x
$ tanya
Masukkan pilihan anda: 56789
Masukan yang anda ketik adalah 56789
$

7.4 ARGUMEN

7.4.1 Parameter posisi

Misalkan kita ingin mengetahui apakah seseorang sedang
aktif pada sistim, maka kita dapat melakukan perintah-
perintah sebagai berikut:

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
irmawati tty06 Oct 23 06:50
yono tty07 Oct 23 07:00
unyil tty08 Oct 23 07:01
$ who | grep ucrit
ucrit tty03 Oct 23 07:29 (hadir !)
$

Agar setiap saat tidak perlu mengetik perintah
tersebut, tentunya perintah-perintah tersebut harus
dimasukkan ke dalam sebuah file program dan diberi nama,
misalnya program bernama hadir.

$ cat hadir
who | grep ucrit
$ hadir
ucrit tty03 Oct 23 07:29 (hadir !)
$

Permasalahan yang akan segera timbul dalam program
tersebut adalah bagaimana agar nama pemakainya dapat
fleksibel, artinya kita dapat mengganti nama pemakai sesuai
kebutuhan tanpa harus mengubah programnya. Untuk itu, maka
seperti juga perintah lain pada Unix, program hadir harus
dirancang dengan menggunakan argumen sehingga format umum
program hadir adalah:

hadir pemakai

dimana pemakai adalah nama pemakai yang akan kita
periksa kehadirannya dalam sistem. Bentuk implementasinya
adalah dengan memanfaatkan parameter posisi.
Setiap saat kita mengeksekusi sebuah program shell,
secara otomatis shell akan menyimpan argumen pertama ke
dalam variabel khusus yang dimiliki shell yang diberi nama
1, demikian selanjutnya untuk argumen berikutnya. Khusus
variabel 0 akan berisi nama program yang dieksekusi.
Variabel-variabel inilah yang disebut parameter posisi.

$ cat coba
echo “nama program adalah $0″
echo “parameter pertama adalah $1″
echo “parameter ke dua adalah $2″
echo “parameter ke empat adalah $4″
echo “parameter ke lima adalah $5″
$ coba one two three four five six
nama program adalah coba
parameter pertama adalah one
parameter ke dua adalah two
parameter ke empat adalah four
parameter ke lima adalah five
$ coba “one two” three four five six
nama program adalah coba
parameter pertama adalah one two
parameter ke dua adalah three
parameter ke empat adalah five
parameter ke lima adalah six
$

Setiap kita mengeksekusi program, kata apapun yang
mengikuti nama program tersebut akan disimpan ke dalam
parameter posisi oleh shell.
Dengan demikian permasalahan pada program hadir dapat
kita selesaikan sebagai berikut:

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
irmawati tty06 Oct 23 06:50
$ cat hadir
#——————————————
# Program hadir versi 1.0
# Memeriksa kehadiran pemakai dalam sistem
#——————————————
who | grep $1
$ hadir ucrit
ucrit tty03 Oct 23 07:29 (hadir !)
$ hadir denny
denny tty02 Oct 23 07:28 (hadir !)
$ hadir ibrahim (tidak hadir !)
$

7.4.2 Jumlah Variabel yang Dilewatkan

Ketika kita mengeksekusi program, disamping dilakukan
pemasangan terhadap variabel $1, $2 dan seterusnya, shell
juga memasang variabel $#. Variabel $# dipasang untuk
mengetahui banyaknya argumen yang dikirim. Untuk lebih
jelasnya, perhatikan contoh-contoh berikut ini.

$ cat argumen (isi program argumen)
#—————————
# Program argumen versi 1.0
# Contoh pemanfaatan argumen
#—————————
echo jumlah argumen yang dikirim adalah $# buah
echo arg1 = :$1: arg2 = :$2: arg3 = :$3:
$ argumen a b c (coba eksekusi)
jumlah argumen yang dikirim adalah 3 buah
arg1 = :a: arg2 = :b: arg3 = :$c:
$ argumen a c (dengan 2 argumen)
jumlah argumen yang dikirim adalah 2 buah
arg1 = :a: arg2 = :c: arg3 = ::
$ argumen (tanpa argumen)
jumlah argumen yang dikirim adalah 0 buah
arg1 = :: arg2 = :: arg3 = ::
$ argumen “a b c” (dalam kutip ganda)
jumlah argumen yang dikirim adalah 1 buah
arg1 = :a b c: arg2 = :: arg3 = ::
$ ls *
argumen
file1
file2
$ argumen * (substitusi nama file)
jumlah argumen yang dikirim adalah 3 buah
arg1 = :argumen: arg2 = :file1: arg3 = :file2:
$ dir_ku=/home/s1_87/widji
$ argumen $dir_ku (substitusi variabel)
jumlah argumen yang dikirim adalah 1 buah
arg1 = :/home/s1_87/widji: arg2 = :: arg3 = ::
$ cat file1
unyil
usro
ucrit
cuplis
menik
ogah
ableh
$ argumen `cat file1` (dari file)
jumlah argumen yang dikirim adalah 7 buah
arg1 = :unyil: arg2 = :usro: arg3 = :ucrit:
$

Dengan demikian kita dapat melakukan pengiriman argumen
tanpa harus mendefinisikannya terlebih dahulu.

7.4.3 Variabel semua argumen

Variabel khusus $* berisi semua argumen yang dilewatkan
ke dalam program. Perhatikan contoh pemakaian dalam program
argumen versi 2.0.

$ cat argumen
#———————————
# Program argumen versi 2.0
# Contoh pemakaian program argumen
#———————————
jumlah argumen yang dikirim adalah $# buah
yaitu :$*:
$ argumen aa bb cc
jumlah argumen yang dikirim adalah 3 buah
yaitu :aa bb cc:
$ argumen aa bb cc
jumlah argumen yang dikirim adalah 3 buah
yaitu :aa bb cc:
$ argumen
jumlah argumen yang dikirim adalah 0 buah
yaitu ::
$ ls
argumen
file1
file2
file3
$ argumen *
jumlah argumen yang dikirim adalah 4 buah
yaitu :argumen file1 file2 file3:
$

7.4.4 Menggeser Parameter Posisi

Jika kita menggunakan argumen lebih dari sembilan buah
pada suatu program, timbul suatu permasalahan baru.
Perhatikan contoh berikut ini.

$ cat lebih10
#——————————————-
# Program lebih10 versi 1.0
# Contoh program dengan argumen lebih dari 9
#——————————————-
echo jumlah argumen $# buah
argumen ke sepuluh adalah :$10:
$ lebih10 a b c d e f g i j
jumlah argumen 10 buah
argumen ke sepuluh adalah :a0:
$

Akses argumen ke sepuluh menghasilkan hasil yang tidak
diinginkan. Nilai yang tampil ternyata adalah nilai dari
variabel $1 dan diikuti 0. Kita hanya diijinkan mengakses
variabel $1 sampai dengan $9.
Ada sebuah cara untuk mengakses variabel yang lebih
dari sembilan, yaitu dengan teknik penggeseran ke kiri
(shift left) nilai variabel dari parameter posisi yang kita
miliki tersebut, caranya dengan menggunakan perintah shift.
Perintah ini akan memindahkan nilai dari variabel pada
parameter posisi ke dalam variabel sebelumnya.

$1 $2 $3
+——-+ argumen +—-+—-+—-+
| shift || bb | cc | $# = 2
+—-+—-+

Gambar 7.1 Proses shift

Misalnya kita memiliki parameter posisi $1, $2, $3.
Jika kita geser sekali (shift left) maka nilai dari variabel
$3 lama akan berpindah ke dalam variabel $2 baru. Nilai dari
variabel $2 lama akan berpindah ke dalam variabel $1 baru.
Sedangkan nilai dari variabel $1 lama akan menghilang.
Sementara itu, variabel $# akan otomatis dikurang satu.

$ cat geser
#———————————-
# Program geser versi 1.0
# Contoh menggeser parameter posisi
#———————————-
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
echo $# $*
shift
$ geser a b c d e
5 a b c d e
4 b c d e
3 c d e
2 d e
1 e
0
$

Jika kita masih melakukan penggeseran ke kiri dengan
shift, sementara itu variabel yang akan digeser sudah tidak
ada lagi, maka shell akan menampilkan pesan sebagai berikut:

$ geser a b c d
4 b c d e
3 c d e
2 d e
1 e
0
geser: cannot shift
$

Pada contoh di atas, pergeseran yang kita lakukan
adalah geser ke kiri satu kali. Kita dapat menggeser lebih
dari satu kali sebagai berikut:

shift n

dimana n adalah bilangan banyaknya pergeseran yang
ingin dilakukan. Operasi tersebut adalah sama dengan proses
shift yang berulang-ulang.

shift 3

identik dengan

shift
shift
shift

Jadi jika sebuah program menginginkan akses ke
parameter posisi kesepuluh, dengan mudah kita dapat
melakukan dengan menggunakan perintah shift dan mengakses
nilai $9.

arg1=$1
shift
arg10=$9

7.5 KENDALI PILIHAN

7.5.1 Status Keluar

Setiap program yang telah melakukan eksekusi secara
lengkap pada sistem Unix akan mengembalikan status keluar
atau exit status kepada sistem. Status ini adalah berupa
bilangan yang biasanya menunjukkan apakah suatu program
telah berhasil dijalankan atau tidak.
Berdasarkan konvensi, nilai status keluar nol digunakan
untuk menunjukkan bahwa program telah dieksekusi dan benar,
sedangkan nilai selain nol akan diartikan sebagai adanya
kesalahan. Kesalahan dapat disebabkan oleh pengiriman
argumen yang tidak benar atau oleh kondisi lain yang tidak
diijinkan oleh program.
Dalam pemipaan, status keluar yang dikembalikan ke
sistem adalah status dari perintah terakhir dalam pemipaan
tersebut.

who | grep root

status keluar pada proses pemipaan yang diterima
sistem adalah status keluar dari peritah grep. Jadi jka
status keluar nol, berarti root ditemukan oleh perintah
grep.
Untuk melihat status keluar, kita dapat menggunakan
variabel khusus shell $?. Variabel $? otomatis bernilai
status keluar dari perintah terakhir yang dieksekusi oleh
shell. Perhatikan contoh berikut ini.

$ cp file1 file2
$ echo $?
0 (copy berhasil)
$ cp kosong file3
cp: cannot access kosong (copy gagal)
$ echo $?
2 (status keluar gagal)
$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
irmawati tty06 Oct 23 06:50
yono tty07 Oct 23 07:00
unyil tty08 Oct 23 07:01
$ who | grep unyil
unyil tty08 Oct 23 07:01
$ echo $? (status keluar grep)
0 (grep berhasil)
$ who | grep udin
$ echo $?
1 (grep tak berhasil)
$ echo $?
0 (status keluar echo)
$

7.5.2 Pengujian Kondisi

Perintah test sering digunakan untuk melakukan
pengujian terhadap satu atau lebih kondisi dalam sebuah
kendali pilihan. Format umum yang digunakan adalah:

test ekspresi

dimana ekspresi merupakan kondisi yang akan diuji. test
akan mengevaluasi dan jika hasilnya true maka akan
dikembalikan status keluar nol; jika hasilnya false maka
akan dikembalikan status keluar tidak nol.
Disamping menggunakan perintah test, para pemrogram
dapat menggunakan:

[ ekspresi ]

Operator yang dapat digunakan pada perintah test ada 4
jenis, yaitu:

– operator string
– opertor integer
– operator file
– operator boolean

7.5.2.1 Operator Untaian Karakter

Contoh berikut akan mengembalikan status keluar nol
jika variabel shell berisi karakter yang sama:

$ nama=chaerinda
$ test “$nama” = chaerinda
$ echo $?
0
$ nama=novrita
$ test “$nama” = chaerinda
$ echo $?
1
$

Pemrogram yang baik akan senantiasa menggunakan
karakter kutip ganda bagi variabel yang digunakan pada test.
Perhatikan contoh berikut.

$ nama=
$ test $nama = chaerinda
sh: test: argument expected
$

Karena nama berisi nilai null, maka perintah test
pertama dianggap memiliki dua argumen saja, yaitu = dan
chaerinda, padahal test membutuhkan tiga argumen !
Dengan memberikan karakter kutip ganda pada variabel
tersebut akan memastikan test melihat variabel tersebut
sebagai argumen walaupun bernilai null.

$ nama=novrita
$ test “$nama” = chaerinda
$ echo $?
1
$

Perintah test di atas dapat kita lakukan dengan
menggunakan kurung siku (akan lebih banyak digunakan pada
buku ini).

$ nama=chaerinda
$ [ "$nama" = chaerinda ]
$ echo $?
0
$ nama=novrita
$ [ "$nama" = chaerinda ]
$ echo $?
1
$

Awas, jangan lupa memberikan spasi atau tab pada
setelah [ dan sebelum ]. Sekarang perhatikan lagi bagaimana
spasi dapat mengacaukan dugaan kita.

$ hari=”senen “
$ [ "$hari" = senen ]
$ echo $?
1
$

Disamping operator =, masih ada beberapa operator
string lainnya seperti terlihat pada tabel berikut:

——————————————————-
Operator Kondisi benar (status keluar nol)
——————————————————-
string1 = string2 string1 identik string2
string1 != string2 string1 tak identik string2
string string tak null
-n string string tak null
-z string string adalah null
——————————————————-

Tabel 7.2 Operator string

Fungsi operator != adalah keterbalikan dari fungsi
operator =. Perhatikan contoh berikut ini.

$ nama=chaerinda
$ [ "$nama" = chaerinda ]
$ echo $?
0
$ nama=novrita
$ [ "$nama" != chaerinda ]
$ echo $?
0
$

Dengan operator string, kita dapat membuktikan apakah
variabel yang berisi spasi dapat dikatakan null atau tidak.

$ blank=” “
$ [ $blank ] (string tak null ?)
$ echo $?
1 (null !)
$ [ "$blank" ]
$ echo $?
0 (bukan null)
$

Pada pengujian pertama, tak ada argumen yang diuji
karena shell menganggap isi dari variabel blank sebagai
argument delimiter, sehingga shell menganggap tidak ada
argumen yang dikirim. Pada pengujian ke dua terlihat bahwa
shell mengartikan bahwa ada argumen yang dikirim dan
diartikan sebagai spasi dan bukan null.
Pemeriksaan ini juga dapat dilakukan dengan menggunakan
operator pengujian -n dan -z.

$ nullvar=
$ blank=” “
$ [ -n $blank ] (string tak null ?)
$ echo $?
1 (null !)
$ [ -n "$blank" ]
$ echo $?
0 (bukan null)
$ [ -n "$nullvar" ]
$ echo $?
1
$ [ -z "$blank" ]
$ echo $?
1
$ [ -z "$nullvar" ]
$ echo $?
0
$

Pengujian ini harus berhati-hati terhadap isi dari
variabel yang akan diuji. Sebab jika nilai dari variabel
yang akan diuji berisi operator pengujian maka hasilnya akan
berbeda dengan yang kita kehendaki. Perhatikan contoh
berikut ini

$ simbol=`=`
$ test -z “$simbol”
sh: test: argument expected
$

Operator = memiliki derajat yang lebih tinggi dari
operator -z sehingga pengujian lebih mendahulukan operator =
dari pada operator -z. Untuk mengatasi hal ini dapat kita
gunakan sedikit trik sebagai berikut:

$ test X”$simbol” = X

Trik ini akan mengembalikan status keluar 0 jika nilai
variabel simbol adalah null.

7.5.2.2 Operator Integer

Shell juga memiliki fasilitas perbandingan integer yang
disebut operator integer. Operator tersebut yaitu:

——————————————————-
Operator Kondisi benar (status keluar nol)
——————————————————-
int1 -eq int2 int1 sama dengan int2
int1 -ge int2 int1 lebih besar sama dengan int2
int1 -gt int2 int1 lebih besar int2
int1 -le int2 int1 lebih kecil sama dengan int2
int1 -lt int2 int1 lebih kecil int2
int1 -ne int2 int1 tidak sama dengan int2
——————————————————-

Tabel 7.3 Operator integer

Perhatikan contoh-contoh berikut:

$ a=1
$ b=2
$ c=3
$ [ "$a" -eq 1 ]
$ echo $?
0
$ [ "$c" -ge "$b" ]
$ echo $?
0
$ [ "$c" -le "$c" ]
$ echo $?
0
$ [ 1 -lt 10 ]
$ echo $?
0
$

$ [ 1 -ne 10 ]
$ echo $?
0
$

Ingat bahwa shell tidak membedakan type data dari nilai
yang disimpan oleh variabel, semuanya adalah karakter biasa.
Operator test akan menerjemahkan nilai-nilai dari yang
terkandung dalam variabel sebagai integer, bukan shell.
Sekarang perhatikan beberapa contoh kasus antara
integer dan string.

$ x1=”007″
$ x2=” 10″
$ [ "$x1" = 7 ] (perbandingan string)
$ echo $?
1
$ [ "$x1" -eq 7 ] (perbandingan integer)
$ echo $?
0
$ [ "$x2" = 10 ] (perbandingan string)
$ echo $?
1
$ [ "$x2" -eq 10 ] (perbandingan integer)
$ echo $?
0
$

Pada pengujian pertama menggunakan perbandingan string
dengan operator =. Hasilnya tidak benar karena kedua string
tidak cocok benar

007 = 7

Berbeda dengan perbandingan string pada contoh
pengujian pertama, pengujian ke dua menggunakan perbandingan
integer dengan menggunakan operator -eq. Hasilnya tentu
benar, karena 007 adalah bernilai equivalen dengan 7.

7.5.2.3 Operator File

Pada pemrograman shell, penggunaan file sebagai
penyimpanan permanen atau penyimpanan sementara adalah hal
yang biasa karena mudah dan praktis (perhatikan pemanfaatan
file /dev/null atau file sementara pada direktori /tmp).
Untuk kebutuhan ini, terkadang kita perlu melakukan
pemeriksaan terhadap kondisi file dan direktori tersebut.
Perhatikan tabel berikut ini:

——————————————————-
Operator Kondisi benar (status keluar nol)
——————————————————-
-d file file adalah direktori
-f file file adalah file biasa
-r file file dapat dibaca oleh proses
-s file file memiliki panjang tak nol
-w file file dapat ditulis oleh proses
-x file file dapat dieksekusi
——————————————————-

Tabel 7.4 Operator file

Dengan demikian jika kita ingin memeriksa apakah file
/usr/denny ada atau tidak dapat kita lakukan hal berikut:

$ [ -f /usr/denny ]
$ echo $?
0 (file /usr/denny ada)
$ [ -d /usr ]
$ echo $?
0 (direktori /usr ada)
$ [ -x /etc/passwd ]
$ echo $? (tidak dapat dieksekusi)
1
$ [ -w /etc/passwd ]
$ echo $?
1 (tak dapat ditulis)
$

7.5.2.4 Operator Boolean

Operator boolean yang dapat digunakan pada pemrogram
shell adalah sebagai berikut:

– negasi, yaitu !
– AND, yaitu -a
– OR, yaitu -o

Perhatikan daftar nilai hasil operasi boolean berikut
ini:

Operator !
—————
expr | hasil !
——+——–
benar | salah
salah | benar
—————

Tabel 7.5 Operasi negasi

Operator ! dapat diletakkan pada ekpresi pengujian.
Perhatikan contoh berikut:

$ [ -f /usr/denny ]
$ echo $?
0
$ [ ! -f /usr/denny ]
$ echo $?
1
$

Perhatikan pernyataan berikut, dimana pemanfaatkan
operator ! pada keduanya menghasilkan nilai status keluar
yang sama.

$ x1=999
$ x2=777
$ [ ! "$x1" = "$x2" ]
$ echo $?
0
$ [ "$x1" != "$x2" ]
$ echo $?
0
$

Perhatikan daftar nilai hasil operasi boolean berikut
ini:

Operator -a
———————
expr1 | expr2 | hasil
——+——-+——
benar | benar | benar
benar | salah | salah
salah | benar | salah
salah | salah | salah
———————

Tabel 7.6 Operasi AND

Operator -a (logika AND) akan memberikan nilai benar
atau status keluar 0 jika kedua ekspresi yang digabung
memiliki nilai benar.

[ -f "$mailfile" -a -r "$mailfile" ]

Pernyataan diatas akan bernilai benar jika file
$mailfile adalah sebuah file biasa dan dapat dibaca oleh
kita.
Perlu diketahui bahwa operator boolean memiliki derajat
yang lebih rendah dibanding operator lainnya.

[ "$x1" -ge 0 -a "$x2" -lt 888 ]

Operasi yang akan dilakukan adalah operasi perbandingan
integer terlebih dahulu, kemudian dilanjutkan operasi
perbandingan boolean.
Perhatikan daftar nilai hasil operasi boolean berikut
ini:

Operator -o
———————
expr1 | expr2 | hasil
——+——-+——
benar | benar | benar
benar | salah | benar
salah | benar | benar
salah | salah | salah
———————

Tabel 7.7 Operasi OR

Operator -o (logika OR) akan memberikan nilai benar
atau status 0 jika salah satu ekspresi memiliki nilai benar.
Operator -o memiliki derajat yang lebih rendah
dibanding operator -a. Perhatikan contoh berikut:

$ [ 1 -eq 1 -o 1 -ge 0 -a 0 -lt 0 ]
$ echo $?
0
$

Mengapa demikian ? Hal ini dikarenakan derajat operator
-a lebih tinggi dibanding operator -o. Pernyataan diatas
dapat kita tulis sebagai berikut:

1 = 1 OR ( 1 >= 0 AND 0 /dev/null
then
echo “^$pemakai sedang aktif”
fi
$

Sehingga hasil yang akan kita peroleh pada pemeriksaan
pemakai sebagai berikut:

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
irmawati tty06 Oct 23 06:50
yono tty07 Oct 23 07:00
unyil tty08 Oct 23 07:01
$ hadir ucrit (ucrit hadir)
ucrit sedang aktif
$ hadir udin (udin tak hadir)
$ hadir (tanpa argumen!)
$

Konstruksi else dapat kita tambahkan pada perintah if
jika diinginkan dengan menggunakan format:

if perintahT
then
perintahB
perintahB

else
perintahS
perintahS

fi

dimana kondisi yang akan diuji oleh perintah if adalah
status keluar dari perintahT. Jika status keluar adalah nol
(true), maka perintah-perintah yang dieksekusi adalah
perintahB, jika status keluarnya tidak nol (false) maka
perintah-perintah pada perintahB akan dilewati (tidak
dieksekusi) dan perintahS saja yang akan dieksekusi.
Sebagai contoh, marilah kita modifikasi kembali program
hadir kita.

$ cat hadir
#——————————————
# Program hadir versi 4.0
# Memeriksa kehadiran sesorang dalam sistem
#——————————————

pemakai=”$1″
if who | grep “^$pemakai” > /dev/null
then
echo “^$pemakai sedang aktif”
else
echo “^$pemakai tidak aktif”
fi
$

Jika pemakai yang kita periksa tidak ada, maka akan
diberikan pesan bahwa pemakai yang kita cari sedang tidak
aktif.

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
irmawati tty06 Oct 23 06:50
yono tty07 Oct 23 07:00
unyil tty08 Oct 23 07:01
$ hadir ucrit (ucrit hadir)
ucrit sedang aktif
$ hadir udin (udin tak hadir)
udin tidak aktif (diberi pesan)
$

Terkadang kita membutuhkan suatu baris yang berisi
tidak ada perintah. Perintah seperti ini disebut perintah
null. Format umum perintah tersebut adalah:

:

tugasnya adalah tidak melakukan apa-apa. Lalu apa
manfaatnya ? Perhatikan perintah berikut ini:

$ cat rekening
#—————————
# Program rekening versi 1.0
# Memeriksa rekening pemakai
#—————————
if grep “$1″ /etc/passwd > /dev/null
then
:
else
echo “Awas, rekening $1 hilang !”
fi
$

Program di atas akan memberitahu kita jika nama yang
kita kirim tidak terdaftar pada file /etc/passwd hilang.
Jika nama tersebut ada, maka program di atas tidak akan
menampilkan apa-apa.

$ rekening root (root ada!)
$

Shell juga memiliki perintah untuk menghentikan
eksekusi perintah selanjutnya, yaitu menggunakan perintah
exit. Format umumnya adalah:

exit bil

dimana bil adalah bilangan yang merupakan status
keluarnya. Perhatikan hasil eksekusi program rekening.

$ rekening root
$ echo $?
0 (root ada)
$ rekening sikabayan
Awas, rekening sikabayan hilang !
$ echo $?
0 (sikabayan tidak ada?)
$

Mari kita modifikasi program tersebut dengan
menambahkan perintah exit.

$ cat rekening
#—————————–
# Program rekening versi 2.0
# Memberi contoh perintah null
#—————————–
if grep “$1″ /etc/passwd > /dev/null
then
:
else
echo “Awas, rekening $1 hilang !”
exit 1
fi
$

Selanjutnya kita lihat hasil perubahannya sebagai
berikut:

$ rekening root
$ echo $?
0 (root ada)
$ rekening sikabayan
Awas, rekening sikabayan hilang !
$ echo $?
1 (sikabayan tidak ada?)
$

7.5.4 Mengatasi if-then-else yang Rumit dengan elif

Ketika program anda semakin komplek, terkadang kita
sering terpaksa harus menuliskan perintah if di dalam if
yang telah kita buat, misalnya:

if perintah1
then
perintah
perintah

else
if perintah2
then
perintah
perintah

else

if perintahn
then
perintah
perintah

else
perintah
perintah

fi

fi
fi

Berikut ini akan diberikan contoh program yang terpaksa
menggunakan bentuk if-then-else yang rumit. Program ini
diberi nama program selamat yang akan mencetak ucapan
“selamat pagi”, “selamat siang” dan “selamat malam” ketika
kita masuk ke dalam sistim (loggin).
Untuk membuat program ini kita dapat memanfaatkan
program date.

$ date
Fri Oct 23 07:28:32 PDT 1992
$

dari keluaran ini kita dapat memeriksa jam saat ini
dengan cara memeriksa karakter ke 12 dan 13.

$ date | cut -c12-13
07
$

Selanjutnya waktu tersebut kita kategorikan menjadi
tiga bagian:

00 s/d 11 “selamat pagi”
12 s/d 17 “selamat siang”
18 s/d 23 “selamat malam”

Sehingga dengan demikian kita dapat membuat programnya
sebagai berikut:

$ cat selamat
#—————————
# Program selamat versi 1.0
# Mencetak ucapan selamat
#—————————

jam=`date | cut -c12-13`

if [ "$jam" -ge 0 -a "$jam" -le 11 ]
then
echo “selamat pagi”
else
if [ "$jam" -ge 12 -a "$jam" -le 17 ]
then
echo “selamat siang”
else
echo “selamat malam”
fi
fi
$ date
Fri Oct 23 07:28:32 PDT 1992
$ selamat
selamat pagi
$

Penggunaan if-then-else yang rumit seperti pada contoh
program selamat ini dapat kita sederhanakan dengan
menggunakan konstruksi elif yang memiliki format umum
sebagai berikut:

if perintah1
then
perintah
perintah

elif perintah2
then
perintah
perintah

elif perintahn
then
perintah
perintah

else
perintah
perintah

fi

Bandingkan dengan konstruksi if-then-else sebelumnya.
Dengan demikian program selamat dapat kita sederhanakan
menjadi sebagai berikut:

$ cat selamat
#—————————
# Program selamat versi 2.0
# Mencetak ucapan selamat
#—————————

jam=`date | cut -c12-13`

if [ "$jam" -ge 0 -a "$jam" -le 11 ]
then
echo “selamat pagi”
elif [ "$jam" -ge 12 -a "$jam" -le 17 ]
then
echo “selamat siang”
else
echo “selamat malam”
fi
$ date
Fri Oct 23 07:28:32 PDT 1992
$ selamat
selamat pagi
$

7.5.5 Perintah case

Perintah case dapat melakukan pembandingan sebuah nilai
variabel dengan nilai lainnya dan apabila nilai variabel
tersebut cocok dengan nilai yang dibandingkan, maka perintah
yang terletak dibawah nilai yang dibandingkan akan
dieksekusi hingga ditemukan karakter-karakter ‘;’. Format
perintah ini adalah:

case nilai in
pola1) perintah
perintah

perintah;;
pola2) perintah
perintah

perintah;;

polan) perintah
perintah

perintah;;
esac

Kata nilai akan dibandingkan dengan nilai yang ada pada
pola1, pola2, …, polan hingga ditemukan pola yang cocok.
Jika ditemukan pola yang cocok, maka perintah yang terletak
mengikuti pola yang cocok akan dieksekusi hingga ditemukan
karakter ;;. Setelah karakter ;; ditemukan maka proses case
akan dihentikan, jika tidak maka tak satu perintah dalam
lingkup case akan dijalankan.
Contoh penggunaan case adalah seperti tertulis pada
program nomor berikut.

$ cat nomor
#————————
# Program nomor versi 1.0
# Menerjemahkan angka
#————————

if [ "$#" -ne 1 ]
then
echo “Cara pakai: nomor bilangan”
else
case “$1″
in
0) echo nol;;
1) echo satu;;
2) echo dua;;
3) echo tiga;;
4) echo empat;;
5) echo lima;;
6) echo enam;;
7) echo tujuh;;
8) echo delapan;;
9) echo sembilan;;
esac
fi
$ nomor 3
tiga
$ nomor 0
nol
$ nomor (tanpa bilangan)
Cara pakai: nomor bilangan
$ nomor 19 (bilangan tak dikenal)
$

Pola pada case dapat kita ganti dengan karakter khusus
yang dikenal oleh shell seprti *, [ ... ] atau ?
Pada program nomor, bilangan selain 0 s/d 9 belum
didefinisikan. Kita dapat mendefinisikan 10 s/d tak
terhingga dengan menggunakan karakter khusus *.

$ cat nomor
#————————
# Program nomor versi 2.0
# Menerjemahkan angka
#————————

if [ "$#" -ne 1 ]
then
echo “Cara pakai: nomor bilangan”
else
case “$1″
in
0) echo nol;;
1) echo satu;;
2) echo dua;;
3) echo tiga;;
4) echo empat;;
5) echo lima;;
6) echo enam;;
7) echo tujuh;;
8) echo delapan;;
9) echo sembilan;;
*) echo “Argumen harus dijit tunggal !”;;
esac
fi
$ nomor 19 (bilangan tak dikenal)
Argumen harus dijit tunggal !
$

Contoh lain dari pemanfaatkan karakter khusus adalah
sebagai berikut:

$ cat karakter
#—————————————————
# Program karakter versi 1.0
# Menebak karakter tunggal yang dikirim dari argumen
#—————————————————

if [ "$#" -ne 1 ]
then
echo “Cara pakai: karakter char”
exit 1
fi
case “$1″
in
[0-9] ) echo dijit;;
[a-z] ) echo huruf kecil;;
[A-Z] ) echo huruf besar;;
? ) echo karakter khusus;;
* ) echo “harus karakter tunggal !”
esac
$ karakter a
huruf kecil
$ karakter A
huruf besar
$ karakter ‘>’
karakter khusus
$ karakter USA
harus karakter tunggal !
$

Di antara dua pola pada case dapat diberi operator
logika OR dengan cara sebagai berikut:

pola1 | pola2
Dengan menggunakan cara tersebut kita dapat
menyederhanakan program selamat menjadi sebagai berikut:

$ cat selamat
#—————————
# Program selamat versi 3.0
# Mencetak ucapan selamat
#—————————

jam=`date | cut -c12-13`

case “$jam”
in
0? | 1 [01] ) echo “selamat pagi” # 0 s/d 11
1[2-7] ) echo “selamat siang” # 12 s/d 17
* ) echo “selamat malam” # 18 s/d 23
esac
$

7.6 PENGULANGAN

7.6.1 Perintah for

Perintah for digunakan untuk mengeksekusi beberapa
perintah secara berulang-ulang. Format dasarnya adalah:

for var in kata1 kata2 … katan
do
perintah
perintah

done

Perintah-perintah yang terletak antara do dan done
disebut tubuh pengulangan (body of loop). Perintah-perintah
tersebut akan dieksekusi sebanyak kata yang di cantumkan
setelah kata in pada perintah for. Ketika perintah
pengulangan dieksekusi, kata kata1 diberikan ke variabel var
dan perintah pada tubuh pengulangan dieksekusi. Setelah itu,
kata ke dua pada daftar, yaitu kata2 diberikan ke variabel
var dan perintah pada tubuh pengulangan dieksekusi. Proses
ini akan terus berlangsung hingga seluruh kata yang
tercantum selesai dimasukkan ke dalam variabel var. Dengan
demikian, jika terdapat n kata sesudah kata in pada for,
maka akan dilakukan pengulangan eksekusi perintah pada tubuh
pengulangan sebanyak n kali.

$ for x in a b c
> do
> echo $i
> done
a
b
c
$

Proses pengulangan di atas dilakukan sebanyak tiga
kali, karena banyaknya kata pada daftar kata setelah in pada
perintah for adalah tiga.
Pada pengulangan pertama, kata pertama pada daftar kata
dimasukkan ke variabel x. Kemudian perintah pada tubuh
pengulangan dieksekusi, yaitu menampilkan nilai dari
variabel x. Demikian selanjutnya hingga kata terakhir dari
daftar kata tersebut.
Misalkan kita memiliki 4 buah file yang akan kita cetak
ke printer. Maka kita dapat menggunakan perintah for sebagai
berikut:

$ for berkas in prog1 prog2 prog3
> do
> cat $berkas | lp
> done
request id is laser-89 (standard input)
request id is laser-90 (standard input)
request id is laser-91 (standard input)
$

Perintah ini identik dengan perintah-perintah sebagai
berikut:

$ cat prog1 | lp
request id is laser-89 (standard input)
$ cat prog2 | lp
request id is laser-90 (standard input)
$ cat prog3 | lp
request id is laser-91 (standard input)
$

Shell juga mengijinkan penggunaan substitusi nama file
pada daftar kata setelah in dari perintah for, sehingga
perintah di atas dapat kita ubah menjadi sebagai berikut:

$ for berkas in prog[1-3]
> do
> cat $berkas | lp
> done
request id is laser-89 (standard input)
request id is laser-90 (standard input)
request id is laser-91 (standard input)
$

Jika isi current directory kita adalah hanya prog1,
prog2, prog3 maka perintah di atas dapat dilakukan sebagai
berikut:

$ for berkas in *
> do
> cat $berkas | lp
> done
request id is laser-89 (standard input)
request id is laser-90 (standard input)
request id is laser-91 (standard input)

Kita juga dapat menggunakan daftar file yang tersimpan
dalam berkas sebagai berikut:

$ cat listfile
prog1
prog2
prog3
$ for berkas in `cat listfile`
> do
> cat $berkas | lp
> done
request id is laser-89 (standard input)
request id is laser-90 (standard input)
request id is laser-91 (standard input)
$

Pada pemanfaatan parameter posisi, ada beberapa hal
yang harus diperhatikan. Perhatikan program argufor dibawah
ini:

$ cat argufor
#———————————-
# Program argufor versi 1.0
# Contoh pemakaian argumen pada for
#———————————-
echo jumlah argumen yang dipassing adalah $#
for argu in $*
do
echo $argu
done
$ argufor a b c
jumlah argumen yang dipassing adalah 3
a
b
c
$ argufor ‘a b’ c
jumlah argumen yang dipassing adalah 2
a
b
c
$

Pada eksekusi argufor ke dua, terlihat bahwa jumlah
argumen yang dilewatkan atau dipassing adalah benar dua.
Namun nilai yang ditampilkan terlihat ada tiga. Hal ini
disebabkan karena kutip ganda diabaikan pada perintah for.
Sekarang kita gunakan variabel $@ sebagai pengganti $*.

$ cat argufor
#———————————-
# Program argufor versi 2.0
# Contoh pemakaian argumen pada for
#———————————-

echo jumlah argumen yang dipassing adalah $#

for argu in “$@”
do
echo $argu
done
$ argufor ‘a b’ c
jumlah argumen yang dipassing adalah 2
a b
c
$ argufor
jumlah argumen yang dipassing adalah 0
$

Perintah for dapat dilakukan tanpa daftar kata yang
mengikut perintah in.

for var
do
perintah
perintah

done

Perintah for tanpa daftar kata yang mengikuti perintah
in memiliki arti yang identik dengan:

for var in “$@”
do
perintah
perintah

done

Dengan demikian, program argufor di atas dapat kita
perbaiki sebagai berikut:

$ cat argufor
#———————————-
# Program argufor versi 3.0
# Contoh pemakaian argumen pada for
#———————————-
echo jumlah argumen yang dipassing adalah $#
for argu
do
echo $argu
done
$ argufor ‘a b’ c
jumlah argumen yang dipassing adalah 2
a b
c
$ argufor
jumlah argumen yang dipassing adalah 0
$

7.6.2 Perintah while

Jenis ke dua dari perintah pengulangan adalah perintah
while. Format umumnya adalah:

while perintahT
do
perintah
perintah

done

perintahT akan dieksekusi dan diuji status keluarnya.
Jika status keluarnya adalah nol maka perintah-perintah yang
terletak antara do dan done akan dieksekusi. Setelah
eksekusi perintah-perintah tersebut selesai, perintahT akan
diuji kembali, jika status keluarnya adalah tidak nol maka
proses pengulangan dihentikan dan dilanjutkan ke proses
selanjutnya. Jadi perintah antara do dan done tak akan
dieksekusi jika status keluar perintahT adalah tak nol.

$ cat cobawhile
#—————————-
# Program cobawhile versi 1.0
# Contoh program while 1
#—————————-
i=1
while [ "$i" -lt 6 ]
do
echo $i
i=`expr $i + 1`
done
$ cobawhile
1
2
3
4
5
$

Variabel i adalah variabel penghitung yang sebelumnya
telah diset dengan 1, dimana setiap dilakukan pengulangan
variabel penghitung akan ditambah satu dan variabel
penghitung tersebut akan dibandingkan dengan bilangan 5.
Perintah while akan melakukan pengulangan atas perintah
selama kondisi pada perintahT benar atau mengembalikan
status keluar nol. Jika tidak maka perintah antara do dan
done akan diabaikan.
Kita juga dapat menggunakan perintah while dengan
dikombinasi dengan perintah shift untuk memanfaatkan
argumen.

$ cat shiftwhile
#—————————-
# Program shiftwhile versi 1.0
# Contoh program while 2
#—————————-

while [ "$#" -ne 0 ]
do
echo $i
shift
done
$ shiftwhile a b c
a
b
c
$ shiftwhile ‘a b’ c
a b
c
$ shiftwhile
$

7.6.3 Perintah until

Jenis ke tiga dari perintah pengulangan adalah perintah
until. Format umumnya adalah:

until perintahT
do
perintah
perintah

done

perintah-perintah yang terletak di antara do dan done
akan dieksekusi jika status keluar dari perintahT adalah
tidak nol.
Perintah until berguna terutama bagi program yang
sedang menunggu suatu keadaan tertentu. Misalnya seperti
program hadir versi 5.0 yang berfungsi memberitahu kehadiran
pemakai yang kita cari. Mekanisme yang digunakan adalah
bahwa program akan memeriksa ke dalam sistem Unix setiap 60
detik sekali. Jika pemakai yang kita cari telah ditemukan
maka program hadir akan menampilkan pesan kepada kita.

$ cat hadir
#————————
# Program hadir ver 5.0
# Contoh penggunaan until
#————————

if [ "$#" -ne 1 ]
then
echo “Cara pakai: hadir namapemakai”
exit 1
fi
pemakai=”$1″

# memeriksa setiap menit atas kehadiran
# orang yang kita cari dalam sistem

until who | grep “^$pemakai” > /dev/null
do
sleep 60 # 1 menit
done

# dan beritahu jika hadir !

echo “$pemakai hadir dalam sistem !”
$

Perintah sleep berfungsi menunda eksekusi program
selama n detik. Pada program di atas, eksekusi ditunda
selama 60 detik, kemudian setelah itu dilanjutkan dengan
proses pemeriksaan pemakai kembali. Jika pemakai ditemukan
maka perintah grep akan mengembalikan status keluar nol
sehingga kondisi keluar bagi until terpenuhi.

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$ hadir ucrit
ucrit hadir dalam sistem !
$ hadir irmawati
– (menunggu hingga irmawati hadir)

Cara pemanggilan perintah tersebut tidak praktis karena
terminal yang kita gunakan akan menunggu hingga irmawati
hadir ke dalam sistem. Untuk itu maka kita dapat melakukan
perintah tersebut secara proses latar belakang. Jika pemakai
yang dicari diketemukan maka pesannya akan otomatis
ditampilkan ke layar walaupun kita sedang mengerjakan
perintah lain.

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$ hadir irmawati & (proses latar belakang)
4241 (id proses)
$ vi program (melakukan perintah lain)

irmawati hadir dalam sistem ! (otomatis ditampilkan!)

Cara ini tentunya akan merusak satu baris layar kita.
Untuk itu maka program hadir tersebut disempurnakan dengan
mengirim pesan kehadirannya melalui mail sebagai berikut:

$ cat hadir
#————————
# Program hadir ver 6.0
# Contoh penggunaan until
#————————

if [ "$1" = -m ]
then
mailpil=TRUE
shift
else
mailpil=FALSE
fi

if [ "$#" -eq 0 -o "$#" -gt 1 ]
then
echo “Cara pakai: hadir [-m] namapemakai”
echo ” -m = pesan dikirim via mail”
exit 1
fi

pemakai=”$1″

# memeriksa setiap menit atas kehadiran
# orang yang kita cari dalam sistem

until who | grep “^$pemakai” > /dev/null
do
sleep 60
done

if [ "$mailpil" = FALSE ]
then
echo “$pemakai hadir dalam sistem !”
else
aku=`who am i | cut -c1-8`
echo “$pemakai hadir dalam sistem !” | mail $aku
fi
$

Kini hasil pemeriksaan dapat diterima langsung di layar
atau melalui surat elektronik (mail) dengan memberi pilihan
-m ketika memanggil program hadir

$ who
heru tty05 Oct 23 07:30
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
chaerind tty04 Oct 23 07:30
$ hadir irmawati -m
Cara pakai: hadir [-m] namapemakai
-m = pesan dikirim via mail
$ hadir irmawati & (proses latar belakang)
4250 (id proses)
$ vi program (melakukan perintah lain)
.
.
.
you have mail
$ mail
from denny Fri Oct 23 07:28:32 PDT 1992
irmawati hadir dalam sistem !

?d
$

7.6.4 Perintah yang Berkaitan dengan Pengulangan

7.6.4.1 Keluar dari Pengulangan

Terkadang kita tidak menginginkan melanjutkan perintah-
perintah dalam suatu pengulangan. Untuk keluar dari
pengulangan (tidak dari program) dapat kita gunakan perintah
break. Perintah break sering digunakan terutama pada
pengulangan tak berakhir (loop forever). Contoh pengulangan
tak berakhir adalah sebagai berikut:

while true
do

done

atau menggunakan until sebagai berikut:

until false
do

done

Pemakaian break pada pengulangan tak berakhir adalah
sebagai berikut:

while true
do
read pilihan
if [ $pilihan = quit ]
then
break
else
echo $pilihan
fi
done

Pengulangan pada program breaker adalah pengulangan tak
berakhir. Program breaker ini akan memanggil program getcmd
yang akan mengambil masukan dari terminal. Masukan dari
terminal ini akan dievaluasi dan jika masukan tersebut
adalah kata quit maka proses pengulangan ini diakhiri.
break dapat diletakkan pada pengulangan dalam
pengulangan (nested loop). Untuk itu break juga memberikan
fasilitas untuk meninggalkan pengulangan bertingkat
tersebut.

break n

dimana n menunjukkan banyaknya pengulangan yang harus
ditinggalkannya. Perhatikan contoh berikut dimana break akan
memaksa kita untuk meninggalkan 2 tingkat pengulangan:

for file
do

while true
do

if [ -n "$error" ]
then
break 2
fi

done

done

Jika diinginkan keluar sesungguhnya dari program maka
dapat kita gunakan perintah exit sebagai berikut:

exit n

dimana n adalah status keluar dari program tersebut.

7.6.4.2 Mengabaikan Sisa Perintah dalam Pengulangan

Perintah continue akan mengabaikan sisa perintah yang
belum dieksekusi dalam pengulangan tapi tidak keluar dari
pengulangan melainkan melanjutkan ke proses pemeriksaan
kondisi dari pengulangannya.

for file
do
if [ ! -f "$file" ]
then
echo “$file tak ada !”
continue
fi
# proses terhadap file

done

Setelah continue dieksekusi maka perintah dibawahnya
tetapi masih di dalam pengulangan, tidak akan dieksekusi.

7.7 LINGKUNGAN PEMAKAI

Di dalam lingkungan shell terdapat sejumlah variabel standar
yang dapat kita manfaatkan untuk memudahkan kita dalam
pemrograman shell.

7.7.1 PS1 dan PS2

Karakter prompt dari sistem UNIX disimpan di dalam
variabel lingkungan yang dinamakan PS1. Kita dapat mengubah
variabel ini menjadi sesuai yang kita inginkan.

$ echo :$PS1: (ubah prompt shell)
“$ :
$ PS1=”unix> ” (ubah prompt shell)
unix> pwd
/usr/denny
unix> PS1=”$ ” (kembali normal)
$

Untuk mengubah prompt shell kedua, dimana defaultnya
adalah >, dapat kita gunakan variabel PS2.

$ echo :$PS2:
:> :
$ PS2=”ext> “
$ for x in 1 2
ext> do
ext> echo $x
ext> done
1
2
$

Seperti juga variabel shell lainnya, setelah kita
keluar dari sistem maka nilai yang tersimpan akan hilang dan
kembali ke nilai default.

7.7.2 HOME

Direktori tinggal atau home direktory adalah direktori
dimana kita akan ditempat setelah kita masuk ke dalam
sistem. Direktori ini merupakan direktori dimana kita bisa
bekerja. Variabel lingkungan yang menyimpan mengenai lokasi
direktori tinggal kita adalah variabel HOME.

$ echo $HOME
/usr/denny
$

Variabel ini dapat digunakan dalam pemrograman untuk
mengetahui lokasi direktori tinggal kita. Variabel ini juga
dimanfaatkan oleh perintah cd jika perintah ini tak diikuti
oleh argumen.

$ pwd
/tmp/gatotkaca
$ cd
$ pwd
/usr/denny (direktori tinggal saya)
$

Variabel ini dapat diubah sesuai dengan kehendak kita,
namun harap berhati-hati karena beberapa perintah pada Unix
mengacu direktori tinggal pemakai dengan memanfaatkan
variabel HOME (misalnya perintah cd).

$ cd
$ pwd
/usr/denny
$ HOME=/usr/denny/coba
$ cd
$ pwd
/usr/denny/coba
$

7.7.3 PATH

Variabel PATH digunakan untuk menentukan lokasi
pencarian dari suatu file yang akan kita eksekusi.

$ echo $PATH
/bin:/usr/bin::
$

Artinya bahwa shell akan mengeksekusi program dengan
pencarian sebelumnya pada direktori seperti yang tercantum
di atas, yaitu /bin, /usr/bin dan current directory.
Pencarian oleh shell pada direktori yang tercantum dalam
variabel PATH dilakukan secara terurut. Pemisah satu
direktori dengan direktori lainnya adalah titik dua. Jika
terdapat :: diartikan sebagai current directory Atau
beberapa UNIX lebih suka menggunakan karakter “.’ untuk
menyatakan pencarian di current directory.

$ echo $PATH
/bin:/usr/bin:.
$

Jika direktori dari program yang kita panggil belum
terdaftar dalam variabel PATH, kita harus memanggil program
tersebut secara lengkap, misalnya:

$ pwd
/tmp
$ echo $PATH
/bin:/usr/bin::
$ /usr/denny/program/jpemakai (harus lengkap !)
6
$
$ jpemakai (tanpa direktori lengkap)
jpemakai: not found (tidak dikenal ?)
$

Shell tidak berhasil menemukan program yang akan
dieksekusi. Sekarang marilah kita pasang direktori
/usr/denny/program ke dalam variabel PATH dan perhatikan
pengaruhnya.

$ PATH=$PATH:/usr/denny/program (update PATH)
$ echo $PATH
/bin:/usr/bin::/usr/denny/program
$ pwd
/tmp
$ jpemakai (tanpa direktori lengkap)
6 (berhasil…)
$

Dengan alasan keamanan, sebaiknya pencarian pada
current direktori diletakkan setelah direktori sistem.

PATH=/bin:/usr/bin::/usr/denny/bin

atau

PATH=/bin:/usr/bin:/usr/denny/bin::

Di dalam pemrograman sebaiknya juga dicantumkan letak
jalur pencarian yang akan digunakan oleh seluruh perintah di
dalam program. Hal ini dengan tiga alasan:

o Sebagai standar direktori program yang kita gunakan.
o Fleksibel dan konsisten dalam penggunaan jalur.
o Menghindari penggunaan jalur yang tidak semestinya
sehingga memungkinkan pengeksekusian program yang
tidak semestinya, yaitu namanya sama tetapi
direktorinya berbeda.

7.7.4 IFS

IFS adalah singkatan dari Internal Field Separator.
Shell akan menggunakan nilai ini pada melakukan parsing
masukan dari perintah read, keluar dari substitusi perintah
(mekanisme kutip terbalik) dan ketika melakukan substitusi
variabel. Nilai standar dari variabel IFS ini adalah
karakter spasi atau tab.

$ echo “$IFS”

$

Kita dapat pula mengubah nilai dari variabel IFS. Hal
ini berguna untuk mengubah delimiter masukan non spasi atau
tab. Perhatikan contoh berikut:

$ IFS=:
$ read x y z
123:456:789
$ echo $x
123
$ echo $z
789
$ list=”satu:dua:tiga”
$ for x in $list
> do
> echo $x
> done
satu
dua
tiga
$ say=aku cinta Unix
$ echo $say
aku cinta Unix
$

7.7.5 File .profile

Ketika kita masuk ke dalam sistem Unix dan sebelum
prompt Unix ditampilkan, shell login mengeksekusi dua file
khusus. Pertama adalah /etc/profile, yaitu program yang
diset up oleh administrastor sistem dan biasanya berisi
pemeriksaan seperti pemeriksaan mail yang masuk, set up
default umask, nilai standar bagi variabel tertentu atau
program tertentu lainnya yang dipasang administrator sistem
untuk memonitor pemakai.
File ke dua adalah file .profile di dalam direktori
tinggal. Berikut ini contoh file .profile.

$ cat $HOME/.profile
#——————————
# Program .profile
# Contoh isi .profile sederhana
#——————————
PATH=”/bin:/usr/bin::”
export PATH
selamat (program ucapan pada bab lalu !)
$

Kita dapat pula mengubah isi .profile dengan
menambahkan variabel lain atau program lainnya sehingga
begitu anda masuk ke dalam sistem maka program yang anda
inginkan otomatis aktif. Cara kerja ini seperti autoexec.bat
pada sistem operasi DOS.
Jika kita menginginkan perubahan, maka untuk
mengaktifkan /etc/profile dan .profile adalah dengan dua
cara, pertama dengan proses login dan ke dua dengan cara
menggunakan perintah bertitik:

$ . /etc/profile
$ . .profile
$

Dengan demikian perubahan yang telah terjadi akan
segera dirasakan oleh kita.

7.7.6 TERM

Variabel TERM adalah variabel yang digunakan untuk
menentukan jenis terminal yang digunakan.
Jika kita memiliki lebih dari satu jenis terminal, maka
kita dapat melakukan pemilihan jenis terminal yang akan kita
gunakan dengan membuat program terminal dibawah ini. Program
ini dapat pula kita letakkan di dalam file .profile sehingga
kita dapat langsung mengubah jenis terminal yang sesuai jika
kita masuk ke dalam lingkungan baru .

$ cat terminal
#—————————-
# Program terminal versi 1.0
# Pemilih terminal
#—————————-
echo “Terminal yang akan digunakan [default vt100] : “
read TERM
if [ -z "$TERM" ]
then
TERM=vt100
fi
export TERM
$

Cara menggunakan program terminal tidak dalam file
.profile adalah sebagai berikut:

$ terminal
Terminal yang akan digunakan [default vt100] : ansi
$ echo $TERM
ansi
$

7.8 PEMROGRAM LANJUTAN

7.8.1 Perintah eval

Perintah eval akan memaksa shell memeriksa argumennya
dua kali setelah itu dilanjutkan dengan pengeksekusian
terhadap argumen tersebut. Argumen dari perintah eval adalah
perintah baris dalam UNIX.

eval perintah-baris

Untuk lebih jelasnya marilah kita perhatikan contoh
berikut ini:

$ pipa=”|”
$ ls $pipa wc -l
| not found
wc not found
-l not found
$

Kesalahan di atas disebabkan karena shell tidak
mengenal karakter khusus pemipaan ‘|’ yang tersimpan dalam
variabel pipa. Sehingga perintah ls mengartikan argumen yang
diberikan ada tiga yaitu ‘|’, wc dan -l. Argumen tersebut
dianggap file atau direktori yang akan dicari. Karakter ‘|’
tidak diartikan sebagai karakter khusus pemipaan shell.
Untuk mengatasi hal ini dapat kita gunakan perintah eval.

$ pipa=”|”
$ ls $pipa wc -l
$ eval ls $pipa wc -l
10
$

Pemeriksaan pertama, shell akan mensubstitusi karakter
‘|’ sebagai nilai dari variabel pipa dan shell belum
mengenal karakter khusus pemipaan shell tersebut.
Pemeriksaan ke dua, shell mengenal karakter ‘|’ sebagai
karakter khusus pemipaan shell.
Perintah eval sering pula digunakan untuk membuat
semacam pointer ke variabel. Perhatikan contoh penggunaan
perintah eval berikut:

$ x=sapi
$ pointerx=x
$ eval echo \$$pointerx (nilai dari nilai pointerx)
sapi
$ eval $pointerx=kuda
$ echo $x
kuda
$

7.8.2 Perintah trap

Jika kita mengetik tombol DELETE pada terminal selama
mengeksekusi program maka program akan segera berhenti.
Untuk itu maka diperlukan suatu mekanisme yang mampu melacak
dan melakukan aksi bagi program terhadap adanya aksi ini.
Pada saat tombol DELETE ditekan, terdapat sinyal
interrupt yang dikirim ke proses yang sedang berjalan pada
terminal tersebut. Kejadian tersebut berlaku pula jika kita
login melalui modem dan memutuskan hubungan (hang-up).
Sinyal ini yang melakukan secara paksa supaya program
berhenti. Terdapat berbagai jenis sinyal dalam UNIX dan
masing-masing memiliki kegunaan tersendiri. Misalnya dengan
menjalankan proses latar belakang &, shell melindungi dari
sinyal interrupt tapi tidak terhadap sinyal hang-up.
Dalam shell terdapat perintah trap yang mengatur
bagaimana menjalankan perintah sesudah mendeteksi sinyal.
Secara umum format dari perintah trap adalah:

trap perintah sinyal

perintah adalah satu atau lebih perintah dalam karakter
kutip yang akan dieksekusi ketika sinyal yang didefinisikan
terdeteksi. Sinyal adalah angka yang didefinisikan sebagai
nomor sinyal shell. Nomor sinyal shell yang biasa digunakan
adalah seperti pada tabel 7.8.

Perintah trap sering digunakan untuk melakukan
penghapusan secara otomatis terhadap file sementara yang
digunakan di dalam pemrograman jika terdapat kondisi yang
tak diinginkan yang telah didefinisikan pada perintah trap.
Sebagai contoh perhatikan perintah berikut di bawah ini:

trap “rm tmp/work1 tmp/work2; exit” 0 1 2

Program shell yang memiliki perintah trap di atas akan
menghapus file /tmp/work1 dan /tmp/work2 secara otomatis
jika program keluar dari shell sempurna (sinyal 0) atau jika
terjadi hang up (sinyal 1) atau adanya penekanan tombol
DELETE.

——————————————————-
sinyal Arti
——————————————————-
0 keluar dari shell
1 hangup
2 interrupt (tombol DELETE)
3 terminasi program
4 perintah illegal
5 trace trap
6 perintah I/O trap
7 perintah emulator trap
8 perkecualian floating point
9 Kill (tak dapat diacuhkan)
10 bus error
11 pelanggaran segmentasi
12 bad argumen to a system call
13 tulis ke pipa tanpa sebuah proses membacanya
14 Alarm timeout
15 Terminasi, sinyal yang dikirim kill
——————————————————-

Tabel 7.8 Sinyal interupsi

Selain itu trap dapat digunakan untuk melindungi
program supaya tidak keluar (exit) pada saat menerima sinyal
tertentu, misalnya sinyal interrupt.

trap “” 2

Karakter “” pada trap berarti proses tersebut tidak
akan melakukan sesuatu bila menerima sinyal interrupt.

7.8.3 Fungsi

Pada shell, kita dapat membuat suatu fungsi.
Mendefinisikan suatu fungsi dapat dilakukan dengan cara:

nama () { perintah; … ;perintah; }

dimana nama adalah nama dari fungsi yang didefinisikan,
karakter kurung () akan memberitahukan kepada shell bahwa
sebuah fungsi telah didefinikan dan perintah yang terdapat
diantara karakter kurung kurawal {} adalah tubuh fungsi.
Perintah-perintah pada tubuh fungsi tersebut yang akan
didefinisikan apabila fungsi tersebut dieksekusi. Perhatian
bahwa harus terdapat ruang pada sebelum dan sesudah karakter
kurung kurawal serta pada perintah terakhir harus diikuti
karakter titik koma.
Berikut contoh sebuah fungsi sederhana yang digunakan
untuk menampilkan jumlah pemakai yang sedang menggunakan
sistem sekarang.

$ nu () { who | wc -l; }
$ nu
15
$

Argumen yang tercantum setelah nama fungsi ketika
dilakukan pemanggilan fungsi, secara otomatis akan diberikan
ke parameter posisi $1, $2, … seperti halnya pada
pemrograman biasa. Berikut ini contohnya:

$ cetak () { cat $1 | pr | lp; }
$ cetak file1 cetak file1)
$

Keberadaan fungsi hanya pada current shell dan tidak
dilewatkan ke subshell. Selanjutnya, karena fungsi
dieksekusi dalam current shell, maka perubahan direktori
atau perubahan variabel akan juga diterima oleh current
shell tersebut.

$ pwd
/usr/denny
$ db () {
> PATH=$PATH:/usr/denny/bin
> PS1=DB:
> cd /usr/denny/bin;
> }
$ db
DB: pwd
/usr/denny/bin
DB:

Kita dapat pula menggabungkan fungsi-fungsi yang kita
miliki dalam sebuah file.
Untuk mengeksekusi ke shell current yang sedang kita
gunakan dapat dilakukan cara sebagai berikut:

. namafilefungsi

Sekali sebuah fungsi telah dieksekusi, maka eksekusi
terhadap fungsi selanjutnya akan lebih cepat dibanding
dengan eksekusi terhadap program shell. Hal ini disebabkan
shell tidak perlu lagi melakukan proses pencarian program
pada disk, membuka file dan memuat ke memori.

$ cat filefung
#——————————————–
# Nama fungsi mycd versi 1.0
# mycd dir pindah ke direktori dir
# mycd – pindah ke direktori sebelumnya
#——————————————–

mycd ()
{
DIRBARU=`pwd`

if [ "$1" = "-" ]
then
echo $DIRLAMA
cd $DIRLAMA
else
cd “$1″
fi

DIRLAMA=$DIRBARU;
}
$ . filefung
$ pwd
/usr/denny
$ mycd /usr/spool/uucppublic
$ pwd
/usr/spool/uucppublic
$ mycd -
/usr/denny
$ mycd -
/usr/spool/uucppublic
$

Sekali fungsi didefinisikan pada shell, maka selamanya
fungsi akan terus menetap pada memori. Untuk menghapus
keberadaan fungsi pada shell tersebut dapat kita gunakan
perintah unset.

$ nu () { who | wc -l; }
$ nu
15
$ nu
15
$ unset nu
$ nu
nu: not found
$

Jika kita mengeksekusi perintah exit dalam sebuah
fungsi, maka akibatnya tidak hanya keluar dari fungsi tetapi
juga keluar dari program shell yang memanggil fungsi. Jika
kita hanya ingin menghentikan eksekusi fungsi, kita dapat
lakukan:

return n

Nilai n digunakan sebagai status kembali fungsi. Status
kembali fungsi identik dengan status keluar. Jika perintah
return tidak dinyatakan, maka status kembali dari perintah
terakhir yang dieksekusilah yang akan dikembalikan.
Berikut ini contoh penggunaan return n dan pemanfaatan
fungsi di dalam program shell.

$ cat demo
#—————————————————-
# Program demo versi 1.0
# Contoh fungsi dalam program dan pemanfaatan return
#—————————————————-
# Tubuh fungsi bernama confirm
confirm () {
echo “Konfirmasi $1 ([N] atau Y)? \c”
read response junk
case “$response”
in
[Yy]*) return 0;;
[Nn]*) return 1;;
*) return 1;;
esac
}
# Tubuh program shell
for f in $*
do
if confirm “Hapus $f”
then
echo “Hapus $f”
rm $f
else
echo “Tidak dihapus $f”
fi
shift
done
$

7.8.4 Pelacakan Kesalahan Program

Sebagai bahasa pemrograman, shell memiliki fasilitas
pelacakan kesalahan program. Walaupun sederhana, fasilitas
ini cukup ampuh dalam melacak kesalahan program yang
terjadi. Cara yang digunakan adalah sebagai berikut:

sh -x perintah [argumen]

atau dengan mencantumkan ke dalam program :

set -x

Pada pelacakan ini, perintah-perintah yang dieksekusi
akan dicetak ke terminal setelah nama file, variabel dan
substitusi perintah dan pengalihan arah masukan dan keluaran
dilakukan. Pencetakkan perintah yang dieksekusi ke terminal
sebelumnya didahului oleh karakter plus.

$ x=*
$ set -x
echo $x
+ echo file1 file2 file3
file1 file2 file3
$ perintah=wc
perintah=wc
$ ls | $perintah -l
+ ls
+ wc -l
5
$

Penghentian proses pelacakan program dapat dilakukan
dengan memanggil perintah set dengan pilihan +x.

$ set +x
+ set +x
$ ls | wc -l
5
$

Berikut ini diberikan contoh program dan proses
pelacakannya.

$ cat ratarata
set -x
num=`wc -l < $1`
tot=0
count=$num
while test $count -gt 0
do
score=`sed -n ${count}p $1 | tr -dc '[0-9]'`
tot=`expr $tot + $score`
count=`expr $count – 1`
done
avint=`expr $tot / $num`
avdec=`expr $tot % $num \* 100`
echo Rata rata skore adalah $avint.$avdec
set +x
$ ratarata file
+ wc -l
num= 10
tot=0
count= 10
+ test 10 -gt 0
+ tr -dc [0-9]
+ sed -n 10p file
score=2
+ expr 10 -1
count=9
+ test 9 -gt 0


+ test 1 -gt 0
+ tr -dc [0-9]
+ sed -n 1p file
score=18
+ expr 71 + 18
tot=89
+ expr 1 – 1
count=0
+ test 0 -gt 0
+ expr 89 / 10
avint=8
+ expr 89 % 10 * 100
avdec=900
+ echo Rata rata skore adalah 8.900
$

BAB 8

KOMUNIKASI ANTAR PEMAKAI

Oleh: Syamsul Nasution

UNIX memiliki fasilitas untuk komunikasi antar pemakai,
baik secara langsung maupun tak langsung. Komunikasi pemakai
secara langsung dapat dilakukan bila pemakai yang dituju
sedang aktif di dalam sistem. Sedangkan komunikasi pemakai
secara tidak langsung dapat dilakukan baik pemakai sedang
aktif maupun tidak aktif di dalam sistem.
Banyak fasilitas komunikasi antar pemakai yang dapat
digunakan di dalam sistem UNIX, namun pada bab ini hanya
akan dibahas mengenai:

– komunikasi antar pemakai secara langsung dengan write
– komunikasi antar pemakai secara tidak langsung dengan
mail

8.1 KOMUNIKASI ANTAR PEMAKAI SECARA LANGSUNG

Sistem UNIX dapat membolehkan pemakai saling
mengirimkan pesan elektronik. Pesan dapat dikirim secara
langsung ke terminal pemakai lain yang sedang aktif di dalam
sistem. Kedua pemakai tersebut kemudian dapat melanjutkan
percakapan melalui keyboard masing-masing. Fasilitas seperti
ini dapat dilakukan dengan menggunakan perintah write.
Untuk mengirim pesan ke pemakai lain adalah sebagai
berikut:

$ write ita
Teng pukul 12.00 wib
Waktunya makan siang !
^D
$

Perintah write diikuti oleh nama pemakai lain yang akan
dikirimi pesan, misalnya ita. Setelah mengetikkan ENTER,
kita dapat langsung mengetikkan pesan-pesan yang akan
dikirim. Semua pesan yang kita ketika otomatis langsung
ditampilkan di layar pemakai yang dituju. Ketikkan ^D untuk
mengakhiri pesan yang kita kirim.
Sementara itu pada penerima akan ditampilkan pesan
sebagai berikut:

Message from denny tty02 [Wed Jun 11 12:00:00] ..
Teng pukul 12.00 wib
Waktunya makan siang !
EOF

EOF menunjukkan pesan yang dikirim sudah selesai dan
denny telah keluar dari perintah write. Pada contoh ini
terlihat pesan dikirim satu arah, yaitu dari denny ke ita
saja. Sesungguhnya kita dapat melakukan percakapan dua arah,
seperti halnya percakapan sehari-hari.

$ write ita
Selamat siang, ita (tunggu jawaban ita)

denny tidak segera mengakhiri pesan dengan ^D, tetapi
menunggu hingga ada jawaban dari ita. Pada layar ita akan
tampil pesan berikut:

Message from denny tty02 [Wed Jun 11 12:00:00] ..

Jika ita ingin menjawab, ketikkan:

$ Message from denny tty02 [Wed Jun 11 12:00:00] ..
Selamat siang, ita
write denny (ini perintah write)
Selamat siang juga, denny (ini pesan buat denny)
Ada apa yach ?

ita tidak mengetikkan ^D sebagai tanda akhir pesan,
sehingga sekarang kedua pemakai tersebut dapat memulai
percakapan. Percakapan akan diakhiri jika salah satu telah
mengakhiri pesan dengan ^D.
Pada akhir percakapan, layar denny akan tampak sebagai
berikut:

$ write ita
Selamat siang, ita
message from ita tty04 [Wed Jun 11 12:00:10] …
Selamat siang juga, denny
Ada apa yach ?
Yuk kita makan siang !
Maaf, aku tak bisa
Sebab harus menyelesaikan tugas dari Bos
Baiklah, selamat tinggal
Selamat tinggal
^D
$

Pada layar ita akan tampak sebagai berikut:

$ message from denny tty02 [Wed Jun 11 12:00:00] …
Selamat siang, ita
write denny
Selamat siang juga, denny
Ada apa yach ?
Yuk kita makan siang !
Maaf, aku tak bisa
Sebab harus menyelesaikan tugas dari Bos
Baiklah, selamat tinggal
Selamat tinggal
EOF
^D
$

Jika kita mencoba menghubungi pemakai yang tidak
terdaftar pada rekening sistem, maka akan menampilkan pesan:

$ write jampang
jampang is not logged on
$

dan perintah write berakhir. Jika kita mencoba
menghubungi pemakai yang saat itu sedang tidak aktif:

$ write heru
heru is not logged on
$

kita akan mendapat pesan yang sama, karena sesungguhnya
perintah write tidak memeriksa apakah pemakai tersebut
terdaftar sebagai pemakai sistem (memiliki rekening) atau
tidak. Perintah write hanya memeriksa apakah pemakai yang
dimaksud sedang aktif atau tidak. Untuk memeriksa apakah
pemakai yang akan kita hubungi sedang aktif atau tidak,
dapat kita lakukan dengan perintah who.

$ who
root tty01 Oct 23 07:28
denny tty02 Oct 23 07:28
ucrit tty03 Oct 23 07:29
ita tty04 Oct 23 07:30
$

Pemberian karakter ‘!’ pada awal baris pada baris
komunikasi dari pesan melalui perintah write, akan
menyebabkan baris tersebut diterjemahkan sebagai perintah
UNIX. Namun demikian, keluaran dari perintah sistem yang
dilakukan tidak dikirim ke pemakai yang sedang kita hubungi,
sehingga kita harus mengetikkan ulang.

$ write ita
File yang kamu cari ada pada direktori:
!pwd
/usr/local/bin/tmp/graphic/barrier
!
/usr/local/bin/tmp/graphic/barrier
^D
$

Terkadang kita ingin bekerja tanpa diganggu oleh
pemanggilan pesan. Untuk itu kita dapat menolak pesan yang
masuk dengan menggunakan perintah mesg sebagai berikut:

$ mesg n
$

Parameter ‘n’ menyatakan ‘no’ atau tidak, yang berarti
pesan tidak dapat menginterupsi kerja kita. Jika sesorang
mengirim pesan kepada kita maka mereka akan mendapat pesan:

$ write denny
Permission denied
$

Selanjut untuk mengembalikan ke kondisi dimana pemakai
lain dapat mengirim pesan, ketiklah:

$ mesg y
$

Parameter ‘y’ menyatakan ‘yes’ atau ya, yang berarti
pesan dapat diterima kembali.
Jika perintah mesg diketikkan tanpa menyertakan
parameter, maka akan ditampilkan kondisi penerimaan pesan:

$ mesg
is Y
$

8.2 KOMUNIKASI ANTAR PEMAKAI SECARA TIDAK LANGSUNG

Sistem UNIX dapat membolehkan pemakai mengirimkan
pesan. Berbeda dengan perintah write, pesan dapat dikirim ke
terminal pemakai walaupun pemakai tersebut sedang tidak
aktif di dalam sistem. Pada umumnya pesan yang dikirim
berupa memo atau surat, bahkan listing program. Fasilitas
yang berfungsi seperti ini adalah electronic mail.
Ada dua buah electronic mail yang banyak dipakai di
dalam sistem UNIX untuk membaca dan mengirim pesan, yaitu
mail dan mailx.
Perintah mailx memiliki kemampuan lebih baik dibanding
dengan perintah mail, namun sayangnya perintah mailx lebih
komplek dan lebih sulit digunakan. Pada sub bab ini hanya
diterangkan penggunaan mail, karena mail merupakan dasar
bagi mailx. Program mail yang kini beredar banyak mengalami
modifikasi, namun dasar-dasarnya masih tetap dipertahankan.
mail adalah fasilitas UNIX dimana pemakai dapat
mengirim pesan ke pemakai lain di dalam sistem. Jika
pemakai yang kita kirim pesan sedang aktif, pemakai tersebut
akan diberitahu mengenai kedatangan surat kita. Jika pemakai
yang kita kirim saat itu sedang tidak aktif, maka ketika
pemakai tersebut masuk ke dalam sistem, otomatis akan
diberitahu bahwa ada surat untuknya.

you have mail

Untuk mengirim pesan ke pemakai digunakan cara berikut:

$ mail ibrahim

selanjutnya diikuti pesan-pesan yang akan dikirim ke
pemakai lain dan diakhiri dengan ^D atau karakter ‘.’.

$ mail ibrahim
Akan ada pertemuan staff pada
Tanggal : 20 Januari 1993
Pukul : 14.00 wib
Tempat : Ruang A
Acara : Rapat Kordinasi
Harap datang tepat waktu
–Direktur–
^D
$

Kita dapat mengirim ke beberapa pemakai sekaligus
seperti ini.

$ mail ibrahim haydin ivan edwin
Akan ada pertemuan staff pada
Tanggal : 20 Januari 1993
Pukul : 14.00 wib
Tempat : Ruang A
Acara : Rapat Kordinasi
Harap datang tepat waktu
–Direktur–
.
$

Perintah mail tidak memeriksa apakah pemakai yang kita
kirim adalah pemakai yang tercatat di dalam sistem atau
tidak. Jika kita mengirim pemakai yang tidak dikenal oleh
sistem maka kita akan mendapat pesan berikut:

$ mail ibroahim (seharusnya ibrahim)
Akan ada pertemuan staff pada
Tanggal : 20 Januari 1993
Pukul : 14.00 wib
Tempat : Ruang A
Acara : Rapat Kordinasi
Harap datang tepat waktu
–Direktur–
^D
mail: can’t send to ibroahim
Mail saved in dead.letter
$

Pesan yang dikirim ke pemakai tak dikenal akan disimpan
di dalam file dead.letter pada current directory. Sehingga
jika kita ingin mengirim ulang pesan tadi ke pemakai yang
dikenal, dapat dilakukan dengan bantuan pengalihan arah
masukan sebagai berikut:

$ mail ibrahim From nadiah Sat Jan 30 12:38:30 1993
Rapat pertanggung jawaban HIMIKO UI, 6 Februari 1993
Peserta harap hadir tepat waktu
?

Sedangkan untuk menjawab pesan dengan segera dapat
dilakukan cara sebagai berikut:

$ mail
From nadiah Mon Feb 1 10:18:12 1993
>From nadiah Sat Jan 30 12:38:30 1993
Rapat pertanggung jawaban HIMIKO UI, 6 Februari 1993
Peserta harap hadir tepat waktu
? !mail denny
Terima kasih atas pemberitahuannya
Saya akan datang tetapi agak terlambat
–Denny–
^D
!
?

Untuk melihat pesan berikutnya yang kita terima, dapat
digunakan perintah ‘+’ atau ENTER. Jika tidak ada pesan
berikutnya, maka penekanan perintah ‘+’ akan menyebabkan
kita segera keluar dari sistem mail. Sementara itu untuk
melihat pesan sebelumnya dapat digunakan perintah ‘-’.
Selanjutnya untuk menghapus pesan yang kita terima
dapat digunakan perintah ‘d’ dari prompt mail. Pesan yang
tidak dihapus akan selalu muncul pada setiap pemanggilan
mail dilakukan. Perlu diingat bahwa proses penghapusan belum
‘benar-benar’ dilakukan selama kita masih aktif di dalam
sistem mail. Penghapusan ‘benar-benar’ dilakukan setelah
kita keluar dari sistem mail.
Ada tiga cara untuk keluar dari sistem mail, yaitu
dengan mengetikkan perintah-perintah berikut pada prompt
mail:

? ^D

atau

? q

atau

? x

Perintah ^D dan ‘q’ akan menyebabkan kita keluar dari
sistem mail dengan menyimpan hasil perubahan yang telah
dilakukan. Perintah ‘x’ menyebabkan kita keluar dari sistem
tanpa menyimpan hasil perubahan yang telah dilakukan. Yang
dimaksud perubahan disini misalnya adalah penghapusan pesan.
Contoh, jika perintah ‘x’ yang dipilih maka penghapusan yang
dilakukan akan dibatalkan.

FILE COMMANDS
By : Syamsul Nasution

touch Create a new file.
Usage: touch
Usage:
cp Copy files.
Usage: cp [options]
cp [options]
Options: -r recursively copy directory structures.
mv Move or Rename files or directories.
Usage: mv [options]
mv [options]
Options: -i query user for confirmation.
rm Remove files.
Usage: rm [options]
Options: -r recursively remove directory structures.
-i query user for confirmation.
cat View complete file content.
cat
more View file contents in sections determined by the size of the terminal.
Usage: more
less View file contents in sections determined by the size of the terminal.Has more options and search features than more.
Usage: less [options]
compress Reduces the size of the file. and adds the extension .Z
Usage: compress .
uncompress Restores a compressed file.
Usage: uncompress
Usage: Orientation 2002 3
gzip Compresses files and adds the .gz extension. provides more compression than compress.
Usage: gzip [options]
Options: -d expands a compressed file.
gunzip Expand files compresses by gzip.
Usage: gunzip [options]
Options: -c write on standard output and keep file unchanged.
zcat Expands a file (compressed by gzip or compress) and sends it to
standard output. Original file remain unchanged.
zcat
tar Archives and extracts files to and from a single file called a tarfile.
Usage: tar [options]
Usage: tar [options]
Options: x Extracts the file.
c creates a new tarfile
r appends files into a tarfile.
f stores files in or extracts files into an archive.
f – store outcome in standard output or input ,
used for redirection.
Eg: tar cf ~hoda/archive myfile.tar to archive a file
Eg: tar xf filename.tar to extract a file

DIRECTORY COMMANDS
cd Change directory.
Usage: cd
Eg: cd my-directory
cd go to home directory
cd .. go up one directory
cd – go backwards to the last directory visited.
pwd Print working directory on the terminal.
ls List the content of a directory.
Usage: ls [options] or ls [options]
Options: -l list all files in long format.
Orientation 2002 4
(permissions, users, filesize,date, and time are displayed).
-a list all files including those beginning with a “.”
-F list files distinguishing
directories/ executables* symbolic links@
-R recursively list subdirectories encountered.
mkdir Create a new directory.
Usage: mkdir
rmdir Remove a directory if its empty.
Usage: rmdir

SYMBOLIC LINKS

ln Create symbolic links between files or between directories.
Usage: ln [options]
ln [options]
Options: -s allows linking across file systems and allows the display
of the link’s name upon ls -l.
Eg: ln -s course-file mylink
Eg: ln -s course-directory mylink

TERMINAL COMMANDS

clear Clears the terminal.
echo: Write a string to standard output.
Usage: echo “string” or
echo ‘string’
repeat Repeats commands.
Usage: repeat
HELP COMMANDS
man Displays the manual page for the selected command.
Usage: man
Orientation 2002 5
help Opens the default web browser in the andrew unix help web site.

http://polaris.andrew.cmu.edu/help/sys=sun4_55/env=gamma/Top-Page

rtfm Displays the man page and help files ont he terminal.
Usage: rtfm

INFORMATION COMMANDS

history Lists the commands typed during the session.
Options: -r displays the list in reverse.
hostname Displays the computer’s or server’s name on the terminal.
who Displays who is on the system.
who am i Displays the invoking user.
wc Counts and displays the number of lines, words and characters of a
file.
Usage: wc [options]
Options: -c count character only.
-l count lines only.
-w count words only.
date to be completed by students
cal to be completed by students
whatis Displays the command description.
Usage: whatis
whereis to be completed by students
which to be completed by students Orientation 2002 6
id Displays the user id and the group id of the invoking user.
tty Displays users terminal name.
uname Displays the current unix system name.
Options: -n gives the computer name

USEFUL CSHELL SYMBOLS

| Pipe the output of a command to be processed by another command.
Usage: command1 |command2
Eg: ls -l | more
more file-name | grep pattern
more filename | wc
> Redirect output…….. to file (overwrite ).
Usage: command > filename
Eg: wc filename > new-file
>> Append (the result of the command) to the end of the file.
Usage: command >> file-name
Eg: pwd >> existing-file
< Take the input for the command from a file.
Usage: command1 < filename.
& Run process in the backgound so that the shell remains active.
Usage: program-name &
program-name filename &
; Separate commands on the same line.
Usage: command1 ; command2
Eg: pwd ; ls
* Match a string of zero or more characters.
Eg: cp * copy all files
Orientation 2002 7
cd publ* go to any directory that begins with publ
cd *tory go to any directory which ends with tory
cp *.* copy all files that contain a dot
? Match a single character.
Eg: grep d?n filename display all lines that contain
dan, don, din, dgn, ect.
[ ] Match any of the enclosed characters.
Eg: grep [abc] filename
grep [a-z] filemane Hyphen is used to specify a
range.
$var Anything thats starts with a $ is a variable.
# Begin comments (used in the Cshell script files).
~ Home directory symbol.
Eg: cd ~ go to home directory of the current user.
cd ~rob go tot home directory of user rob.
$home Home directory .
! The history commands.
!! Redo last command.
!str Redo the last command that starts with str.
!23 Redo the 23rd command.
!-2 Redo the (last command -2)
^ Quick modifier for the last command.
Usage: ^mistake^correction.
&& The logical and symbol : execute first command then if successful,
the second command.
Usage: &&
Orientation 2002 8
|| The OR symbol : executes the first command or, if it fails, the second
command.
Usage: ||
./ Runs a compiled program.
Usage: ./ program-name

PERMISSIONS AND FILE STORAGE (UNIX)

chmod Set the permission on a file or a directory.
Usage: chmod [options]
Options: -R Recursively updates permisions within a directory
structure.
Who: u user
g group
o other
a all
Opcode: + add permission.
- remove permission.
Permission:
r read
w write
x execute
Eg: chmod a +rwx public-file
adds permissions of read write and execute to all.
Eg: chmod go -wx my-file
removes write and execute to group and others.
passwd Change the password.
df Displays the amount of free and used disk space.
du Displays the amount of disk usage.
quota Displays the amount of disk space used.
Options: -v Display user’s quota on all file systems.
Orientation 2002 9

PERMISSIONS AND FILE STORAGE (ANDREW)

fs quota Checking your percentage disk usage on your andrew account.
fs lq Lists the amount and percentatge of disk usage on your andrew
account.
fs la Lists access control lists for directories.
Usage: fs la or fs la
fs sa Sets access control lists for directories.
Usage: Usage: fs sa
Eg: Eg: fs sa system:anyuser rl.
Permissions:
r read
l list
i insert
d delete
w modify
a administrative
PROCESSES
ps Displays the active processes.
Includes the process number, process name and process time.
Options: -a
kill Terminates a process.
Usage: kill [options]
Options: -9 absolute kill.
control z Stops a current process.
bg Restarts process in the baground.
Orientation 2002 10
exec Executes a command in place of the current shell which terminates.
Usage: exec command-name.

PRINTING

lpr Sends a job to the printer.
Usage: lpr- P
Options: -n specifies the number of copies.
Eg: lpr -P triglyph -3 myfile
prints 3 copies of myfile on trilyph
lpq Displays the printer queue including the job number.
Usage: lpq -P
lprm Removes a job from the printer queue.
Usage: lprm -P
print Sends the job to the printer.
Usage: print -P

ENVIRONMENT

env Show all the environment variables.
Usage: env
Some Environment variables:
HOME : home directory
PATH: search path for commands
TERM: terminal type
USER: username
DISPLAY: the name of the machine to which the display is sent.
SHELL: the current shell
PWD: the current directory.
EDITOR : the default text editor
printenv Show all or specified environment variable.
Usage: printenv
printenv will print only this variable
Orientation 2002 11
setenv Sets a particular environment variable.
Usage: setenv
Eg: setenv EDITOR emacs.
setenv DISPLAY bernini.arc.cmu.edu:0.0

CUSTOMIZING

alias Creates a shortcut for a command or series of commands.
Usage: alias displays all specified aliases.
Usage: alias
To include command line arguments in the alias
\!* for the all command line arguments
\!^ for the first argument
\!$ for the last argument
Eg: alias h ‘history’
alias janus ‘xhost + ; telnet janus.arc.cmu.edu’
alias rm ‘rm -i’
alias my-term ‘xterm -title \!* -bg ivory -fg black’
unalias Removes the alias from its bound commands.
Usage: unalias
set Sets variables in current shell.
Usage: set =
echo $variable will print out the value of the variable.
Usage: set: displays all the set variables in the shell.
unset Removes value form the variable.
Usage: unset
stty Set the option for a terminal.
Usage: stty erase character erase
stty kill whole line erase
stty werase word erase
Orientation 2002 12
set filec If filec is set, any partially typed filename can be expanded to its full
name whenever esc key is pressed.
Usage: set filec
set prompt Sets the prompt of the terminal.
Usage: set prompt=.
Eg: set prompt=”[hoda]”
set prompt=”\!%“ will show command number
set prompt=” ” will show working directory
chsh Change Shell.
Usage: chch
Eg: chsh hoda tcsh.
source Reads commands from a file. Used to reload an updated .cshrc file
into the current working shell.
Usage: source filename.

NETWORKING

telnet Connects to a remote computer.
Essential telnetting steps:
xhost +
telnet
setenv DISPLAY :0.0
Eg: telnet janus.arc.cmu.edu
xhost + Gives permission to all clients to establish remote connections with a
server and display its output to its terminal.
Usage: xhost +
xhost – removes permision from all clients.

setenv DISPLAY

Allows the remote host to display its x-applications onto the local
terminal.
Usage: setenv DISPLAY :0.0;
Eg: setenv DISPLAY bernini.arc.cmu.edu:0.0
setenv DISPLAY 128.2.120.96:0.0
Orientation 2002 13
ftp File transfer program: Allows the get and put of files between computer
accounts.
Usage: ftp
Inside ftp: put
get
mget gets multiple files.
eg: mget *
mput puts multiple files.
eg mput *
lcd changes the local directory.
help lists all ftp commands.
quit or bye exits ftp.
finger Display information about local or remote users.
Usage: finger
finger
talk to be completed by students
write to be completed by students.

X-APPLICATIONS

xterm Opens a terminal window.
Options: -name gives a name to the terminal.
-title displays a title on the terminal.
-bg specifies background color.
-fg specifies foreground color.
-e gives a command to be executed.
- g specifies the geometry in the format .
x + +
Eg: xterm -name janus -title janus -bg ivory -fg blue &
xterm-e telnet janus.arc.cmu.edu &
xterm -g 90×28+640+600 &
Orientation 2002 14
xclock to be completed by students
dclock Displays a digital clock.
Options: -bg – fg – g
-date
Eg: dclock -date “%d %m %y” &
xemacs /
emacs
Opens emacs editor.
Usage: xemacs &
xemacs filename &

UNIX FILTERS

grep Search a file for a matching pattern or regular expression.
Usage: grep [options]
Options: -n print lines and line numbers
-v prints all the lines that do not contain the expression.
Eg: grep [a-z]*.C filename
grep *[SITE]* filename
fgrep A variation of grep that maches a text-string and does-not support
regular expressions.
Eg: fgrep
spell to be completed by students
sort to be completed by students
head to be completed by students
tail to be completed by students
find Search the system for filenames.
Usage: find
Eg: find /home/hoda -name seed
split Splits a file into several files of equal length.
Usage: split [options] .
Options: -n specifies the number of lines per file.
Another variation of split is csplit which splits the file using a speciOrientation
2002 15
fied expression as a splitting point.
cmp Compare 2 files.
Usage: cmp
diff Reports the lines that differ between 2 files
Usage: diff
join A database operator that joins the common lines of two sorted files.
Usage: join