perintah set

22
Perintah Set 1. Menampilkan seluruh perintah dan hasil eksekusi pens@debian:~$ set } _usermod () { local cur prev split=false; COMPREPLY=(); _get_comp_words_by_ref cur prev; _split_longopt && split=true; case $prev in -c | --comment | -d | --home | -e | --expiredate | -f | -- inactive | -h | --help | -l | --login | -p | --password | -u | -- uid | -Z | --selinux-user) return 0 ;; pens@debian:~$ set -v pens@debian:~$ set +v set +v pens@debian:~$ cat > lsdir if [ $# = 0 ] then dir=. else Dir=$1 fi find $dir -type d -print pens@debian:~$ sh -x lsdir + [ 0 = 0 ] + dir=. + find . -type d -print . ./.gnupg ./Pictures ./.dbus ./.dbus/session-bus ./.gconf ./.gconf/apps

Upload: galihpamungkas

Post on 28-Jan-2016

220 views

Category:

Documents


0 download

DESCRIPTION

Pemrograman shell

TRANSCRIPT

Page 1: Perintah Set

Perintah Set1. Menampilkan seluruh perintah dan hasil eksekusipens@debian:~$ set}_usermod () { local cur prev split=false; COMPREPLY=(); _get_comp_words_by_ref cur prev; _split_longopt && split=true; case $prev in -c | --comment | -d | --home | -e | --expiredate | -f | --inactive | -h | --help | -l | --login | -p | --password | -u | --uid | -Z | --selinux-user) return 0 ;;pens@debian:~$ set -vpens@debian:~$ set +vset +vpens@debian:~$ cat > lsdirif [ $# = 0 ]thendir=.elseDir=$1fifind $dir -type d -printpens@debian:~$ sh -x lsdir+ [ 0 = 0 ]+ dir=.+ find . -type d -print../.gnupg./Pictures./.dbus./.dbus/session-bus./.gconf./.gconf/apps./.gconf/apps/gnome-screenshot./.gconf/apps/nautilus./.gconf/apps/nautilus/desktop-metadata./.gconf/apps/nautilus/desktop-metadata/trash./.gconf/apps/nautilus/desktop-metadata/computer./.gconf/apps/nautilus/desktop-metadata/directory./.gconf/apps/nautilus/desktop-metadata/home./.gconf/apps/nautilus/preferences

Page 2: Perintah Set

./.gconf/apps/metacity

./.gconf/apps/metacity/general

./.gconf/apps/gcalctool

./.gconf/apps/panel

./.gconf/apps/panel/general

./.gconf/apps/panel/objects

2. Menggunakan perintah set dengan opsi flag (-u, -v, dan –x) pens@debian:~$ cat > optwhile test $# -gt 0docase $1 in-u)set -ushift;;-v)set -vshift;;-x)set -xshift;;esacdoneecho Ini adalah body shell script.pens@debian:~$ chmod u+x optpens@debian:~$ ./optIni adalah body shell script.pens@debian:~$ sh -x opt+ test 0 -gt 0+ echo Ini adalah body shell script.Ini adalah body shell script.pens@debian:~$ ./opt -uIni adalah body shell script.pens@debian:~$ ./opt -vecho Ini adalah body shell script.Ini adalah body shell script.pens@debian:~$ ./opt -x++ shift++ test 0 -gt 0++ echo Ini adalah body shell script.Ini adalah body shell script.3. Menggunakan perintah set dengan beberapa opsi flag pens@debian:~$ cat > opts

Page 3: Perintah Set

while test $# -gt 0 docase $1 in-U| -V| -X)set `echo $1 | tr UVX uvx`shift;;esacdoneecho Ini adalah body shell script.^Cpens@debian:~$ chmod u+x optspens@debian:~$ ./optsIni adalah body shell script.pens@debian:~$ ./opts -UIni adalah body shell script.pens@debian:~$ ./opts -Vecho Ini adalah body shell script.Ini adalah body shell script.pens@debian:~$ ./opts -X++ shift++ test 0 -gt 0++ echo Ini adalah body shell script.Ini adalah body shell script.4. Menggunakan perintah set dengan opsi flag (--) untuk mengambil argumen dan memberikannya pada parameter posisi pens@debian:~$ dateTue Nov 24 23:17:35 EST 2015pens@debian:~$ set -- `date`pens@debian:~$ echo $1 $2 $3Tue Nov 24pens@debian:~$ year=$6pens@debian:~$ echo $year2015pens@debian:~$ ls -l /etc/motdlrwxrwxrwx 1 root root 13 Sep 3 00:33 /etc/motd -> /var/run/motdpens@debian:~$ set -- `ls -l /etc/motd`pens@debian:~$ echo $9 : $5 $1/etc/motd : 13 lrwxrwxrwxpens@debian:~$ ls -l /etc/motdlrwxrwxrwx 1 root root 13 Sep 3 00:33 /etc/motd -> /var/run/motdpens@debian:~$ set `ls -l /etc/motd`pens@debian:~$ echo $9 : $5 $1/etc/motd : 13 lrwxrwxrwxpens@debian:~$ set X `ls -l /etc/motd`pens@debian:~$ echo $9 : $5 $100:33 : root Xpens@debian:~$ shiftpens@debian:~$ echo $9 : $5 $1/etc/motd : 13 lrwxrwxrwx5. Menggunakan perintah set dengan opsi flag (-k) untuk reverse posisi pens@debian:~$ cat > myname

Page 4: Perintah Set

echo My name is $name and my argument is $1pens@debian:~$ chmod u+x mynamepens@debian:~$ cat myname echo My name is $name and my argument is $1pens@debian:~$ echo $-himBHpens@debian:~$ name=george ./myname johnMy name is george and my argument is johnpens@debian:~$ ./myname name=george johnMy name is and my argument is name=georgepens@debian:~$ set -kpens@debian:~$ echo $-hikmBHpens@debian:~$ name=george ./myname johnMy name is george and my argument is johnpens@debian:~$ ./myname name=george johnMy name is george and my argument is john6. Penggunaan perintah set dengan parameter posisi ($1, $2, ...)pens@debian:~$ vi set1.sh#!/bin/bashechoecho "Parameter posisi sebelum set \`uname -a\` :"echo "Command-line argument #1 = $1"echo "Command-line argument #2 = $2"echo "Command-line argument #3 = $3"set `uname -a`echo $_echo "Parameter posisi sesudah set \`uname -a\` :"echo "Field #1 of 'uname -a' = $1"echo "Field #2 of 'uname -a' = $2"echo "Field #3 of 'uname -a' = $3"echo ---echo $_echoexit 0pens@debian:~$ chmod u+x set1.shpens@debian:~$ ./set1.sh

Parameter posisi sebelum set `uname -a` :Command-line argument #1 = Command-line argument #2 = Command-line argument #3 = GNU/LinuxParameter posisi sesudah set `uname -a` :Field #1 of 'uname -a' = LinuxField #2 of 'uname -a' = debianField #3 of 'uname -a' = 2.6.32-5-686------

pens@debian:~$ ./set1.sh 1 2 3

Page 5: Perintah Set

Parameter posisi sebelum set `uname -a` :Command-line argument #1 = 1Command-line argument #2 = 2Command-line argument #3 = 3GNU/LinuxParameter posisi sesudah set `uname -a` :Field #1 of 'uname -a' = LinuxField #2 of 'uname -a' = debianField #3 of 'uname -a' = 2.6.32-5-686------

pens@debian:~$ ./set1.sh apel jeruk mangga

Parameter posisi sebelum set `uname -a` :Command-line argument #1 = apelCommand-line argument #2 = jerukCommand-line argument #3 = manggaGNU/LinuxParameter posisi sesudah set `uname -a` :Field #1 of 'uname -a' = LinuxField #2 of 'uname -a' = debianField #3 of 'uname -a' = 2.6.32-5-686------7. Mengganti letak (pembalikkan posisi) dari parameter posisipens@debian:~$ vi set2.sh#!/bin/bashset a\ b c d\ e;OIFS=$IFS; IFS=:; #internal field separatorechountil [ $# -eq 0 ]doecho "### k0 = "$k"" # Beforek=$1:$k;echo "### k = "$k"" # Afterechoshift;doneset $kecho -echo $#echo -for idoecho $idoneIFS=$OIFSexit 0pens@debian:~$ chmod u+x set2.shpens@debian:~$ ./set2.sh

Page 6: Perintah Set

### k0 = ### k = a b

### k0 = a b### k = c a b

### k0 = c a b### k = d e c a b

-3-d eca b8. Menggunakan perintah set dengan opsi flag (--) untuk mengambil isi variabelpens@debian:~$ vi set3.sh#!/bin/bashvariable="one two three four five"set -- $variablefirst_param=$1second_param=$2shift; shiftremaining_params="$*"echoecho "first parameter = $first_param" echo "second parameter = $second_param" echo "remaining parameters = $remaining_params"echo; echoset -- $variablefirst_param=$1second_param=$2echo "first parameter = $first_param" echo "second parameter = $second_param"set --first_param=$1second_param=$2echo "first parameter = $first_param" echo "second parameter = $second_param"exit 0pens@debian:~$ chmod u+x set3.shpens@debian:~$ ./set3.shfirst parameter = onesecond parameter = tworemaining parameters = three four five

first parameter = one

Page 7: Perintah Set

second parameter = twofirst parameter = second parameter =9. Penggunaan perintah unset untuk menghapus isi variabelpens@debian:~$ vi set4.sh#!/bin/bashvariable=helloecho "variable = $variable"unset variableecho "(unset) variable = $variable"if [ -z "$variable" ]thenecho "\$variable has zero length."fiexit 0pens@debian:~$ chmod u+x set4.shpens@debian:~$ ./set4.shvariable = hello(unset) variable = $variable has zero length.10. Menggunakan perintah set dan perulangan (loop) dengan dua parameterpens@debian:~$ vi set5.sh#!/bin/bashfor planet in "Mercury 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483"doset -- $planetecho "$1 $2,000,000 miles from the sun"doneexit 0pens@debian:~$ chmod u+x set5.shpens@debian:~$ ./set5.shMercury 36,000,000 miles from the sunVenus 67,000,000 miles from the sunEarth 93,000,000 miles from the sunMars 142,000,000 miles from the sunJupiter 483,000,000 miles from the sun11. Menggunakan perintah set dan pengkondisian (if)pens@debian:~$ vi set6.sh#!/bin/shset -xif [ -z "$1" ] ; thenecho "ERROR: Insufficient Args."exit 1fipens@debian:~$ chmod u+x set6.shpens@debian:~$ ./set6.sh

Page 8: Perintah Set

+ [ -z ]+ echo ERROR: Insufficient Args.ERROR: Insufficient Args.+ exit 1pens@debian:~$ ./set6.sh 1+ [ -z 1 ]pens@debian:~$ ./set6.sh saya+ [ -z saya ]12. Menggunakan perintah set untuk enable (-) dan disable (+)pens@debian:~$ set -xpens@debian:~$ ls *.sh+ ls --color=auto arit1.sh arit2.sh arit2..sh arit3.sh arit4.sh arit55.sh arit5.sh arit5..sh arit6.sh arr1.sh arr2.sh arr3.sh arr4.sh arr5.sh arr6.sh arr7.sh arr8.sh arr9.sh arrA.sh arrB.sh arrC.sh check_env1.sh check_env.sh dec1.sh defi1.sh define.sh defi.sh devine.sh expres1111.sh expres111.sh expres11.sh expres1.sh expres1..sh func1.sh func2.sh func3.sh func4.sh func5.sh func6.sh func7.sh func8.sh if1.sh if2.sh if2..sh my-script.sh out1.sh out2.sh out3.sh out4.sh out.sh p1.sh p2.sh p3.sh ploop.sh pos1.sh pos2.sh pos3.sh pos4.sh pos5.sh pos6.sh set1.sh set2.sh set3.sh set4.sh set5.sh set6.sh set_env1.sh set_env.sh test11.sh test1...sh test2.sh test3.sh test4.sh test5.sh test.sh test..sharit1.sh arr8.sh expres1..sh out4.sh set5.sharit2.sh arr9.sh func1.sh out.sh set6.sharit2..sh arrA.sh func2.sh p1.sh set_env1.sharit3.sh arrB.sh func3.sh p2.sh set_env.sharit4.sh arrC.sh func4.sh p3.sh test11.sharit55.sh check_env1.sh func5.sh ploop.sh test1...sharit5.sh check_env.sh func6.sh pos1.sh test2.sharit5..sh dec1.sh func7.sh pos2.sh test3.sharit6.sh defi1.sh func8.sh pos3.sh test4.sharr1.sh define.sh if1.sh pos4.sh test5.sharr2.sh defi.sh if2.sh pos5.sh test.sharr3.sh devine.sh if2..sh pos6.sh test..sharr4.sh expres1111.sh my-script.sh set1.sharr5.sh expres111.sh out1.sh set2.sharr6.sh expres11.sh out2.sh set3.sharr7.sh expres1.sh out3.sh set4.shpens@debian:~$ set +x+ set +xpens@debian:~$ /bin/sh ./set5.shMercury 36,000,000 miles from the sunVenus 67,000,000 miles from the sunEarth 93,000,000 miles from the sunMars 142,000,000 miles from the sunJupiter 483,000,000 miles from the sun

Page 9: Perintah Set

Pemrograman Filter (awk)1. Mencari pattern "paris" pada sebuah file menggunakan awk tanpa action.pens@debian:~$ cat > findparisawk /paris/pens@debian:~$ chmod u+x findparispens@debian:~$ echo an american in georgia | ./findparispens@debian:~$ echo an American in paris | ./findparisan American in paris2. Mencari pattern "paris" pada sebuah file menggunakan awk dengan default action (print).pens@debian:~$ cat > findparisawk '/paris/ { print }'pens@debian:~$ echo an american in georgia | ./findparispens@debian:~$ echo an American in paris | ./findparisan American in paris3. Mencetak informasi tanggal dengan parameter posisi ($3) dari perintah "date" menggunakan awk.pens@debian:~$ cat > dayofmonthdate | awk '{ print $3 }'pens@debian:~$ chmod u+x dayofmonthpens@debian:~$ dateWed Nov 25 00:48:04 EST 2015pens@debian:~$ ./dayofmonth25 4. Menggunakan parameter, default action dan tanpa pattern dalam program awk.pens@debian:~$ cat > par.awk{ print $3 }pens@debian:~$ date | awk -f par.awk25 5. Menggunakan perintah awk untuk operasi arimatika 6. Menggunakan perintah awk dan BEGIN_END untuk operasi arimatika 7. Menggunakan perintah awk dengan opsi –f untuk operasi arimatikapens@debian:~$ cat > math {print $1 " + " $2 " = " $1 + $2 "\t" print $1 " - " $2 " = " $1 - $2 "\t"print $1 " / " $2 " = " $1 / $2 "\t" print $1 " x " $2 " = " $1 * $2 "\t" print $1 " mod " $2 " = " $1 % $2 "\t" }

pens@debian:~$ awk -f math5 25 + 2 = 75 - 2 = 35 / 2 = 2.55 x 2 = 105 mod 2 = 18. Memilih/manipulasi data dalam sebuah file berdasarkan pattern "good" menggunakan perintah awk.pens@debian:~$ cat > pilih

Page 10: Perintah Set

egg order 4 cacke good 10 cheese okay 4 pen good 12 floppy good 5

pens@debian:~$ awk '/good/ {print $3}' pilih101259. Manipulasi data dalam sebuah file dan operasi aritmatika dengan awk.pens@debian:~$ cat > invent1. Pen 5 20.002. Pencil 10 2.003. Rubber 3 3.504. Cock 2 45.50pens@debian:~$ awk '{print $1 $2 "--> Rp." $3 * $4}' invent1.Pen--> Rp.1002.Pencil--> Rp.203.Rubber--> Rp.10.54.Cock--> Rp.91pens@debian:~$ awk '{print $2}' inventPenPencilRubberCockpens@debian:~$ awk '{print $2 $4}' inventPen20.00Pencil2.00Rubber3.50Cock45.50pens@debian:~$ awk '{print $0}' invent1. Pen 5 20.002. Pencil 10 2.003. Rubber 3 3.504. Cock 2 45.50pens@debian:~$ cat > prn_pen/Pen/ {print $3}pens@debian:~$ awk -f prn_pen invent51010. Manipulasi data dalam sebuah file dan mencetak dengan awk. pens@debian:~$ cat > progshBEGIN { printf "Program Shell awk 2007.\n" printf "Lab. Jarkom PENS.\n" printf "-------------------------\n"

Page 11: Perintah Set

} { total = $3 * $4 recno = $1 item = $2 gtotal += total printf "%d %s Rs.%f\n", recno, item, total } END { printf "---------------------------\n" printf "Total Rs. %f\n" ,gtotal printf "===========================\n" }pens@debian:~$ awk -f progsh inventProgram Shell awk 2007.Lab. Jarkom PENS.-------------------------1 Pen Rs.100.0000002 Pencil Rs.20.0000003 Rubber Rs.10.5000004 Cock Rs.91.000000---------------------------Total Rs. 221.500000===========================11. Menampilkan daftar user pada system menggunakan awkpens@debian:~$ vi awk1.sh#!/bin/bashPASSWORD_FILE=/etc/passwdn=1for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )doecho "USER #$n = $name"let "n += 1"doneexit 0pens@debian:~$ chmod u+x awk1.shpens@debian:~$ ./awk1.shUSER #1 = rootUSER #2 = daemonUSER #3 = binUSER #4 = sysUSER #5 = syncUSER #6 = gamesUSER #7 = manUSER #8 = lpUSER #9 = mailUSER #10 = newsUSER #11 = uucpUSER #12 = proxyUSER #13 = www-data

Page 12: Perintah Set

USER #14 = backupUSER #15 = listUSER #16 = ircUSER #17 = gnatsUSER #18 = nobodyUSER #19 = libuuidUSER #20 = messagebusUSER #21 = Debian-eximUSER #22 = statdUSER #23 = avahiUSER #24 = usbmuxUSER #25 = Debian-gdmUSER #26 = sanedUSER #27 = hplipUSER #28 = pens12. Penggunaan perintah awk untuk mengetahui informasi filepens@debian:~$ vi awk2.sh#!/bin/bashFILES="/usr/sbin/accept/usr/sbin/pwck/usr/sbin/chroot/usr/bin/fakefile/sbin/badblocks/sbin/ypbind"echofor file in $FILESdoif [ ! -e "$file" ]thenecho "$file does not exist."; echocontinue # On to next.fils -l $file | awk '{ print $9 " file size: " $5 }'whatis `basename $file`echodoneexit 0pens@debian:~$ chmod u+x awk2.shpens@debian:~$ ./awk2.sh

/usr/sbin/accept file size: 10accept (2) - accept a connection on a socket

/usr/sbin/pwck file size: 30708pwck (8) - verify integrity of password files

Page 13: Perintah Set

/usr/sbin/chroot file size: 26828chroot (8) - run command or interactive shell with specia...chroot (2) - change root directory

/usr/bin/fakefile does not exist.

/sbin/badblocks file size: 19456badblocks (8) - search a device for bad blocks

/sbin/ypbind does not exist.

Statement Control (awk)

Page 14: Perintah Set

1. Menggunakan statement control dengan perintah pengkondisian (if).pens@debian:~$ vi tri.awkawk '{ if ($4 != "2")print $0else {print $1, $2+12, $3, "0"print $1+10, $2-6, $3, "1"print $1-10, $2-6, $3, "1"print $1, $2+12, $3, "1"print $1, $2, $3, "0" }}' $*pens@debian:~$ chmod u+x tri.awkpens@debian:~$ cat > sdata200 200 18 0200 -200 18 1-100 -200 18 1-100 200 18 1200 200 18 150 0 18 2pens@debian:~$ ./tri.awk sdata200 200 18 0200 -200 18 1-100 -200 18 1-100 200 18 1200 200 18 150 12 18 060 -6 18 140 -6 18 150 12 18 150 0 18 02. Menggunakan variabel NF pada program awk untuk operasi aritmatika.pens@debian:~$ vi avelineawk '{ if (NF > 0) {sum = 0n = 1while (n <= NF) {sum = sum + $nn = n + 1}print sum/NF}elseprint}' $*pens@debian:~$ chmod u+x avelinepens@debian:~$ cat > hits11 3 44 1013 -720 3018 -18

Page 15: Perintah Set

pens@debian:~$ ./aveline hits1732503. Menggunakan array dan variable built-in NR pada program awkpens@debian:~$ vi rmdupsawk '{ found = 0for ( i=I; i<=NR; i++ )if (lines[i] == $0) {found = 1break}if ( found != 1 ) {lines[NR] = $0print}}' $*pens@debian:~$ chmod u+x rmdupspens@debian:~$ cat > dupsNow isthetime for men and women ofthePrinciple to unite.pens@debian:~$ ./rmdups dupsNow isthetime for men and women ofPrinciple to unite. 4. Menggunakan statemen for dan array pada program awk untuk mengetahui user yang login. pens@debian:~$ vi nloginswho | awk '{logins[$1] = logins[$1] + 1}END {for (i in logins)print logins[i], i}'pens@debian:~$ chmod u+x nloginspens@debian:~$ ./nlogins2 pens5. Menggunakan array dua dimensi pada program awk untuk membalik posisi data dari sebuah file. pens@debian:~$ vi rev.awkawk '{for(i=1; i<=NF; i++)x[NR "." i] = $iif (NFIELDS < NF)NFIELDS = NF

Page 16: Perintah Set

}END {for (i=1; i<=NFIELDS; i++) {line = ""for(j=1; j<=NR; j++)line = line " " x[j "." i]print line}}'pens@debian:~$ chmod u+x rev.awkpens@debian:~$ cat > data92 18 1728 09 1347 43 18pens@debian:~$ ./rev.awk < data 92 28 47 18 09 43 17 13 186. Menggunakan fungsi eksponensial pada program awk. pens@debian:~$ vi exp.awkawk 'BEGIN {Print "i e**i"for(i=0;i<10;i++)print i, exp(i)exit}'pens@debian:~$ chmod u+x exp.awkpens@debian:~$ ./exp.awk0 11 2.718282 7.389063 20.08554 54.59825 148.4136 403.4297 1096.638 2980.969 8103.087. Menggunakan fungsi index pada program awk pens@debian:~$ vi index.awkawk 'BEGIN {print "substr", "sub", index("substr", "sub")print "sub", "substr", index("sub", "substr")print "substr", "str", index("substr", "str")exit}'pens@debian:~$ chmod u+x index.awkpens@debian:~$ ./index.awksubstr sub 1sub substr 0substr str 4

Page 17: Perintah Set

8. Menggunakan fungsi split pada program awk pens@debian:~$ vi split.awkawk 'BEGIN {v = "This:is:a split demo"n = split(v,word,":")for(i=1; i<=n; i++)print i, word[i]exit}'pens@debian:~$ chmod u+x split.awkpens@debian:~$ ./split.awk1 This2 is3 a split demo9. Menggunakan variabel built-in NF untuk menampilkan data string.pens@debian:~$ cat > for_loopBEGIN { printf "To test for loop\n"printf "Press CTRL + C to stop\n" } { for(i=0;i<NF;i++) { printf "Welcome %s, %d times.\n" ,ENVIRON["USER"], i } }pens@debian:~$ awk -f for_loopTo test for loopPress CTRL + C to stopWelcome to Linux !Welcome pens, 0 times.Welcome pens, 1 times.Welcome pens, 2 times.Welcome pens, 3 times.10. Menggunakan perintah perulangan while pada program awk. pens@debian:~$ cat > while_loop{ no = $1 remn = 0 while ( no > 1 ) { remn = no % 10 no /= 10 printf "%d" ,remn } printf "\nNext number please (CTRL+D to stop):";}pens@debian:~$ awk -f while_loop55Next number please (CTRL+D to stop):655611. Menampilkan informasi system menggunakan awkpens@debian:~$ cat > tryrmsys{

Page 18: Perintah Set

dcmd = "rm " $1 if ( system(dcmd) != 0 ) printf "rm command not successful\n" else printf "rm command is successful and %s file is removed \n", $1 }pens@debian:~$ awk -f tryrmsysdefine.shrm command is successful and define.sh file is removed ^C12. Menggunakan fungsi getline untuk membaca input standard (keyboard). pens@debian:~$ cat > getlinBEGIN { printf "Your name please:" getline na < "-" printf "%s your age please:",na getline age < "-" print "Hello " na, ", next year you will be " age + 1}pens@debian:~$ awk -f getlinYour name please:YuriYuri your age please:19Hello Yuri , next year you will be 20