Sabtu, 28 November 2015

Fuse

halo temen temen bertemu lagi dengan saya. pada kesempatan kali ini saya akan berbagi sedikit tentang fuse.
apa itu fuse??
Filesystem in Userspace (fuse) merupakan mekanisme sistem operasi untuk sistem operasi unix like yang memungkinkan pengguna tidak berhak istimewa menciptakan file system mereka sendiri tanpa mengubah kode kernel Hal ini dicapai dengan menjalankan kode file system di userspace.

langkah langkah instalasi fuse di linux
1, Download fuse dari http://fuse.sourceforge.net/ pada bagian Download stable release
2. extract file tar.gz dan masuk ke direktori fuse. (ketikkan "tar -xvzf fuse-2.9.4.tar.gz" di terminal)
3. lakukan instalasi fuse dengan cara
   A. gunakan hak akses super user (ketikkan "sudo su" di terminal)
   B. ketikkan perintah ./configure
   C. ketikkan perintah make
   D. ketikkan perintah make install
4. fuse sudah terinstal dan siap digunakan

berikut langkah langkah membuat program fuse sederhana yaitu membuat suatu direktori tertentu menadi sebuah mount directory
1. ketikkan kode berikut di text editor

#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>

static const char *dirpath = "/home/Faiq/Documents";

static int xmp_getattr(const char *path, struct stat *stbuf)
{
 int res;
 char fpath[1000];
 sprintf(fpath,"%s%s",dirpath,path);
 res = lstat(fpath, stbuf);

 if(res == -1)
 {
  return -errno;
 }

 return 0;
}

static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
 char fpath[1000];
 if(strcmp(path,"/") == 0)
 {
  path=dirpath;
  sprintf(fpath,"%s",path);
 }
 else sprintf(fpath, "%s%s",dirpath,path);
 int res = 0;
 DIR *dp;
 struct dirent *de;
 dp = opendir(fpath);
 if(dp==NULL)
 {
  return -errno;
 }
 while((de = readdir(dp))!=NULL)
 {
  res = filler(h, de->d_name, de->d_type);
  if(res!=0) break;
 }
 closedir(dp);
 return res;
}

static struct fuse_operations xmp_oper =
{
 .getattr = xmp_getattr,
 //.readlink = xmp_readlink,
 .getdir = xmp_getdir,
 //.mknod = xmp_mknod,
 //.mkdir = xmp_mkdir,
 //.symlink = xmp_symlink,
 //.unlink = xmp_unlink,
 //.rmdir = xmp_rmdir,
 //.rename = xmp_rename,
 //.link = xmp_link,
 //.chmod = xmp_chmod,
 //.chown = xmp_chown,
 //.truncate = xmp_truncate,
 //.utime = xmp_utime,
 //.open = xmp_open,
 //.read = xmp_read,
 //.write = xmp_write,
 //.release = xmp_release,
 //.fsync = xmp_fsync,
 //.readdir = hello_readdir
};

int main(int argc, char *argv[])
{
 return fuse_main(argc, argv, &xmp_oper);
}

Ubah static const char *dirpath = "/home/Faiq/Documents"; sesuai dengan folder yang akan difusekan
2. compile program dengan comand gcc -Wall namafile,c `pkg-config fuse --cflags --libs` -o namafile.o

3. buat sebuah directory baru bernama zzz di directory home
4. run program dengan mengetikkan ./namafile.o /zzz

5. untuk mengecek nya buka folder tmp yg kamu mount maka pasti akan ada file yg sama seperti yg ada di folder documents mu hehe

terima kasih temen2 atas perhatiannya semoga bermanfaat

Sabtu, 07 November 2015

IPC & THREAD

halo teman teman
pada kesempatan kali ini saya akan berbagi sedikit tentang thread  dan ipc.
Apa itu thread?

merujuk pada modul 4  materi sistem operasi
"Thread adalah bagian kecil dari suatu proses yang bisa di jadwalkan oleh sistem operasi."

apa itu ipc?
IPC (Interprocess Communincation)
Interprocess Communication adalah suata cara untuk melakukan pertukaran data antara
satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer yang
sama, atau komputer jarak jauh yang terhubung melalui jaringan.
a. Pipes
Pipe merupakan komunikasi sequensial antar proses yang saling terelasi, namun
pipe memiliki kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses
yang saling berhubungan, dan komunikasinya yang dilakukan adalah secara
sequensial.
b. Message Queue
Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk
membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu
mengirim pesan dan menerima pesan.
c. Shared Memory
Sistem Berbagi Memori merupakan salah satu cara komunikasi antar proses dengan
cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar
proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh
pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara
efektif.
d. Socket
Bentuk dari komunikasi yaitu UDP dan TCP menggunakan abstraksi socket yang
menyediakan endpoint untuk komunikasi antar proses. Socket bisa dijalankan di
berbagai platform(BSD UNIIX, UNIX, Linux, Windows, & Machintos OS).

hmm sekarang saya akan berbagi cara membuat
thread dan shared memory dengan menggunakan bahasa c di sistem operasi linux

1. thread
yg pertama kalian harus tau cara mengkompile file thread dengan menggunakan linux sedikit berbeda dengan cara biasa kita mengcompile file.c, caranya mudah kalian tinggal ketikkan
gcc namafile.c -o namafile.o -lpthread
di terminal kalian

nah langsung saja setelah kalian sudah mengerti cara untuk mengcompile file c  yg memiliki thread sekarang saya akan berbagi codingan thread. sebuah music player menggunakan terminal.

#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

pthread_t tid[7];
int n;
char lagu[10];
char ads[100];
char dummy;

void* playandcount(void *arg)
{
    unsigned long i=0;
    pthread_t id=pthread_self();
    int iter;
    if(pthread_equal(id,tid[1]))
    {
        system("clear");
        printf(">>help\n");           
        printf(">>list\n");
        printf(">>play\n");
        printf(">>pause\n");
        printf(">>continue\n");
        printf(">>stop\n");
    }
    else if(pthread_equal(id,tid[2]))
    {
        system("clear");
        chdir ("/home/faiq/sisopmodul3/playlist");
        system("ls | grep .mp3");
    }   
    else if(pthread_equal(id,tid[3]))
    {
        system("pkill mpg123");
        system("clear");
        snprintf(ads, sizeof(ads), "mpg123 %s",lagu);
        system(ads);
    }
    else if(pthread_equal(id, tid[4]))
    {
        system("clear");       
        sleep(n);
        system("pkill -STOP mpg123");
    }
    else if(pthread_equal(id, tid[5]))
    {
        system("clear");
        sleep(n);
        system("pkill -CONT mpg123");
    }
    else if(pthread_equal(id,tid[6]))
    {
        system("clear");
        sleep(n);
        system("pkill mpg123");
    }
    return NULL;
}

int main(void)
    {
        system("clear");
        while(1)
        {
            int flag=0;
            char comm[10];           
            int i=0;
            int err=0;
        printf("press help to see menu\n");
            scanf("%s",comm);
            if (err!=0) printf("\ncan't create thread : [%s]", strerror(err));
            else if (strcmp(comm,"help")==0) err=pthread_create(&(tid[1]), NULL, &playandcount, NULL);
            else if (strcmp(comm,"list")==0) err=pthread_create(&(tid[2]), NULL, &playandcount, NULL);
            else if (strcmp(comm,"play")==0) 
            {
                scanf("%s",lagu);
                err=pthread_create(&(tid[3]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"pause")==0) 
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[4]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"continue")==0)
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[5]), NULL, &playandcount, NULL);
            }
            else if (strcmp(comm,"stop")==0)
            {
                scanf("%d",&n);
                err=pthread_create(&(tid[6]), NULL, &playandcount, NULL);
            }
            else printf("Wrong Input\n");
        }   
    return 0;

sedikit penjelasan tentang codingan diatas adalah sebuah music player yg dapat mengeluarkan beberapa menu untuk digunakan diantaranya "help" untuk melihat menu utama , "list" untuk melihat semua lagu yg ada pada sebuah directory, "play" untuk memainkan sebuah lagu "pause" untuk menghentikan sementara sebuah lagu dan stop untuk menghentikan lagu.

berikut cara mengkompile file dengan thread
 

walaaa.. setelah dikompile munculah programnya
 
2. shared memory
seperti yg telah saya tulis tadi shared memory adalah salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program.

berikut saya akan berbagi codingan tentang shared memory
sebuah program untuk seorang pedagang computer yg dapat memasukkan list  barang yg akan dijual beserta stoknya dan sebuah program untuk pembeli komputer yg dapat digunakan untuk memesan sebuah barang dan melihat stoknya

berikut adalah codingan program untuk pedagang

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>


struct STOK
{
    int RAM;
    int harddisk;
    int motherboard;
    int PSU;
    int VGA;
    int processor;
};
int  main()
{
    key_t KEY;
    int ID;

    struct STOK *data;
    char nama_barang[50];
    int pilihan;   
    int tambah;
    KEY = ftok(".", 'x');
    ID = shmget(KEY, sizeof(struct STOK), IPC_CREAT | 0666);

    data = (struct STOK *) shmat(ID, NULL, 0);
   
    data->RAM = 0;
    data->harddisk = 0;
    data->motherboard = 0;
    data->PSU = 0;
    data->VGA = 0;
    data->processor = 0;
   
    while(1)
    {   
        printf("\n\n1 = Lihat Stok Barang\n");
        printf("2 = Tambah Barang\n\n");       
           
        scanf("%d", &pilihan);

        if (pilihan == 1)
        {
            system("clear");
            printf("STOK RAM         = %d \n",data->RAM);
            printf("STOK harddisk    = %d \n",data->harddisk);
            printf("STOK motherboard = %d \n",data->motherboard);
            printf("STOK PSU         = %d \n",data->PSU);
            printf("STOK VGA         = %d \n",data->VGA);
            printf("STOK processor   = %d \n",data->processor);
        }       

        else if(pilihan == 2)
        {
            system("clear");
            printf("Barang yang Dijual: \n");
            printf("RAM \nharddisk \nmotherboard \nPSU \nVGA \nprocessor\n");
            printf("\n\nKetikkan nama barang yang ingin ditambah\n");
            scanf("%s", nama_barang);

            if (strcmp(nama_barang,"RAM")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->RAM += tambah;
                printf("STOK RAM = %d \n", data->RAM);
            }

            else if (strcmp(nama_barang,"harddisk")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->harddisk += tambah;
                printf("STOK harddisk = %d \n", data->harddisk);
            }

            else if (strcmp(nama_barang,"motherboard")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->motherboard += tambah;
                printf("STOK motherboard = %d \n", data->motherboard);
            }

            else if (strcmp(nama_barang,"PSU")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->PSU += tambah;
                printf("STOK PSU = %d \n", data->PSU);
            }

            else if (strcmp(nama_barang,"VGA")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->VGA += tambah;
                printf("STOK VGA = %d \n", data->VGA);
            }

            else if (strcmp(nama_barang,"processor")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&tambah);
                data->processor += tambah;
                printf("STOK processor = %d \n", data->processor);
            }
            else printf("Barang Tidak Ada\n");
        }
        else getchar();
    }
   
}

dan berikut adalah codingan program untuk pembeli

/* Client */

//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>


struct STOK
{
    int RAM;
    int harddisk;
    int motherboard;
    int PSU;
    int VGA;
    int processor;
};

int  main(void)
{
    key_t KEY;
    int ID;
    struct STOK *data;
    char nama_barang[15];
    int pilih;
    int beli;

    KEY = ftok(".", 'x');
    ID = shmget(KEY, sizeof(struct STOK), 0666);


    data = (struct STOK *) shmat(ID, NULL, 0);

    while(1)
    {   
        printf("\n\n1 = Lihat Stok Barang\n");
        printf("2 = Beli Barang\n\n");
        scanf("%d",&pilih);

        if(pilih == 1)
        {       
            system("clear");   
            printf("Jumlah RAM = %d \n",data->RAM);
            printf("Jumlah harddisk = %d \n",data->harddisk);
            printf("Jumlah motherboard = %d \n",data->motherboard);
            printf("Jumlah PSU = %d \n",data->PSU);
            printf("Jumlah VGA = %d \n",data->VGA);
            printf("Jumlah processor = %d \n",data->processor);
        }

        else if(pilih == 2)
        {
            system("clear");
            printf("Barang yang Dijual: \n");
            printf("RAM \nharddisk \nmotherboard \nPSU \nVGA \nprocessor\n");
            printf("\n\nKetikkan nama barang yang ingin ditambah\n");
            scanf("%s", nama_barang);

            if (strcmp(nama_barang,"RAM")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);

                if (beli > data->RAM)
                {
                    printf("Jumlah yang dibeli melebihi stok\n");
                }

                else
                {
                    printf("Anda membeli %d RAM\n",beli);
                    data->RAM -= beli;
                }
            }

            else if (strcmp(nama_barang,"harddisk")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);

                if (beli > data->harddisk)
                {
                    printf("Anda membeli terlalu banyak\n");
                }

                else
                {
                    printf("Anda membeli %d harddisk\n",beli);
                    data->harddisk -= beli;
                }
            }

            else if (strcmp(nama_barang,"motherboard")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);

                if (beli > data->motherboard)
                {
                    printf("Anda membeli terlalu banyak\n");
                }

                else
                {
                    printf("Anda membeli %d motherboard\n",beli);
                    data->motherboard -= beli;
                }
            }

            else if (strcmp(nama_barang,"PSU")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);

                if (beli > data->PSU)
                {
                    printf("Anda membeli terlalu banyak\n");
                }

                else
                {
                    printf("Anda membeli %d PSU\n",beli);
                    data->PSU -= beli;
                }
            }

            else if (strcmp(nama_barang,"VGA")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);
                if (beli > data->VGA)
                {
                    printf("Anda membeli terlalu banyak\n");
                }

                else
                {
                    printf("Anda membeli %d VGA\n",beli);
                    data->VGA -= beli;
                }
            }

            else if (strcmp(nama_barang,"processor")==0)
            {
                printf("Masukkan jumlahnya : ");
                scanf("%d",&beli);

                if (beli > data->processor)
                {
                    printf("Anda membeli terlalu banyak\n");
                }

                else
                {
                    printf("Anda membeli %d processor\n",beli);
                    data->processor -= beli;
                }
            }
            else printf("Barang Tidak Ada\n");
        }
        else getchar();
    }
}

nah jika kita compile akan menjadi seperti ini



kedua program akan menghasilkan jumlah yg sama saat mengecek stok barang karena kedua program tersebut berbagi sebuah alamat memory yg sama.

begitulah yg dapat saya bagikan minggu ini semoga bermanfaat temen temen terima kasih...


Senin, 28 September 2015

Daemon

haloo teman teman pada kesempatan kali ini saya akan berbagi sedikit tentang daemon

Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. daemon berjalan dalam previlege super user.
berikut ini adalah langkah langkah untuk membuat daemon dengan bahasa c.

1. memasukkan library library berikut


#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>


library2 itu diperlukan untuk membuat sebuah daemon.

2. membuat sebuah proses menjadi proses induk dan anak kemudian kita membunuh proses induknya.

pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);


Dari langkah tersebut kita akan mendaptkan sebuah proses anak yang melanjutkan program setelah induknya mati, sehingga kita mendapatkan sebuah proses yang hampir bekerja pada backround.

3. membuat proses tersebut bekerja secara independen

sid = setsid();
if(sid < 0)
{
exit(EXIT_FAILURE);

}

Langkah ini dilakukan dengan memanggil fungsi setsid(), sehingga proses akan mendapatkan sebuah session ID yang baru.

4. Menutup standar I/O deskriptor yang diwarisi

close(STDIN_FILENO);
close(STDOUT_FILENO);

close(STDERR_FILENO);

Untuk mencegah terjadinya intervensi dari user serta untuk pengamanan, maka standar I/O descriptor dan descriptor yang diwarisi dari proses induk harus ditutup. Ada 3 jenis standar I/O descriptor : STDIN (standar input), STDOUT (standar output), STDERR (standar error).

5. melakukan masking pada file creation
umask(0);
Daemon biasanya memproteksi setiap file yang dibuat, dengan alasan keamanan. Fungsi umask() akan mencegah file-file previleges yang tidak aman dalam setiap pembuatan file.

6. mengganti direktori
if((chdir"\")<0)
{
exit(EXIT_FAILURE);

}  

Program daemon tentunya harus memiliki sebuah direktori aktif dan selalu ada sehingga dapat bekerja. Fungsi chdir() digunakan di mana ketika return -1 berarti gagal.

7. membuat inti daemon
while(1)
{
//suatu kode untuk dieksekusi

}  

Di dalam while tersebut akan berisi kode-kode untuk dieksekusi. Bisa dikatakan bahwa program utama daemon terletak setelah while tersebut. 
berikut adalah contoh dari sebuah daemon yg telah saya buat


Daemon tersebut akan mengeluarkan kata halo tiap 2 detik apabila dijalankan. 

sekarang kalian sudah paham tentang membuat daemon pasti bingung "apa sih gunanya daemon itu?"
seperti yg sudah dijelaskan di atas daemon adalah sebuah program yg dibuat dengan membunuh parent proses dan hanya meninggalkan child prosess agar proses tersebut sulit untuk dilacak. seperti virus.

Jumat, 25 September 2015

BASH SCRIPT

halo temen temen jumpa lagi dengan saya Faiq Firdausy. pada kesempatan saya kali ini saya akan berbagi pengalaman tentang bash scripting.

1. apa itu bash script?
Bash adalah singkatan dari Bourne Again SHell, versi baru dari Bourne Shell yang dikembangkan oleh Steve Bourne. Bash ini adalah shell yang paling umum digunakan pengguna Linux. Shell adalah program yang menjadi jembatan antara perintah yang dimasukkan user melalui input dari keyboard dengan sistem operasi untuk melakukan perintah yang dimasukkan user tersebut. Sekarang ini, program seperti shell ini sudah tergantikan oleh user interface yang lebih mudah digunakan.
Pemrograman bash shell itu sendiri adalah pemrograman kumpulan perintah menggunakan script yang ditulis ke dalam bash shell, sehingga nantinya dapat dieksekusi oleh sistem operasi. Selain bash shell, ada banyak shell lainnya yang bisa digunakan untuk programming, namun penggunaan bash lebih fleksibel karena script yang ditulis lebih kompatibel untuk dibaca dari mesin yang berbeda, distro linux yang berbeda , atau bahkan sistem operasi yang berbeda. Pemrograman menggunakan shell terutama bash shell berkembang terus sampai sekarang karena penggunaannya di kalangan system administrator sangat dibutuhkan.

2. bagaimana cara menggunakannya?
pertama tama sebelum mempelajari pemrograman Bash shell di linux sebaiknya temen temen sudah tahu tentang file system hyrarki dari bash dan perintah - perintah dasar shell  seperti cd, pwd, rm,mv dan sebagainya. dibawah ini adalah contoh perintah dasar bash shel linux
1   ls List information about file(s)
2   pwd Print Working Directory
3   mkdir Create new folder(s)
4   chmod Change the access permissions of files and directories
5   chown Change the user and group ownership of files6 chroot Change root directory
7   sudo Substitute user identity
8   grep Search file(s) for lines that match a given pattern
9   ps Process status
10 halt Stop and restart the operating system
11 cd Change Directory - change the current working Folder.
12 rm Remove files
13 mv Move or rename files or directories
14 date Display or change the date & time
15 free Display memory usage
16 whoami Print the current user id and name
17 which Locate a program file in the user's path


kemudian dibawah ini adalah  file sistem hirarki standard dari linux
1 /bin
All the executable binary programs (file) required during booting,
repairing, files required to run into single-user-mode, and other
important, basic commands viz., cat, du, df, tar, rpm, wc, history,
etc.

2 /boot 
Holds important files during boot-up process, including Linux
Kernel.
3 /dev 

Contains device files for all the hardware devices on the machine
e.g., cdrom, cpu, etc.
4 /etc 

Contains Application’s configuration files, startup, shutdown, start,
stop script for every individual program.
5 /lib

The Lib directory contains kernel modules and shared library images
required to boot the system and run commands in root file system.
6 /lost+found 

This Directory is installed during installation of Linux, useful for
recovering files which may be broken due to unexpected
shutdown.

7 /media 
Temporary mount directory is created for removable devices viz.,
media/cdrom.
8 /mnt 

Temporary mount directory for mounting file system.
9 /opt 

Optional is abbreviated as opt. Contains third party application
software. Viz., Java, etc.
10 /proc 

A virtual and pseudo file-system which contains information about
running process with a particular Process-id aka pid.
11 /root 

This is the home directory of root user and should never be
confused with ‘/‘.
12 /home

Home directory of the users. Every time a new user is created, a
directory in the name of user is created within home directory
which contains other directories like Desktop, Downloads,
Documents, etc.

13  /run
This directory is the only clean solution for early-runtime-dir
problem.


dan masih banyak lagi bisa kalian cari sendiri di google haha.
sekarang yuk kita ngoding bash script 
Sama halnya dengan pemrograman lainnya, Bash Shell programming juga dapat melakukan fungsi-fungsi seperti baca input, tulis output, looping, condition statement, dan sebagainya. Berikut adalah langkah-langkah untuk membuat script bash programming

1. Masuk ke terminal

2. Buat script dengan format (text editor) "namafile" .sh contoh

pada gambar diatas saya menggunakan nano text editor dengan nama file "belajar".sh
3. dan sekarang saya telah masuk ke dalam nano text editor

4. Seperti bahasa pemrograman lainnya gak afdol kalo kita belum bikin program hello world hahaha

5.untuk belajar sintax looping dan branch if silahkan temen temen pelajari sendiri dari kodingan bilangan prima saya ini


cukup sekian temen temen yg bisa saya bagikan minggu ini tunggu kelanjutannya minggu depan