■ $PATH….X
■ Job control…….x
■ wildcards……x
■ tab completion…..x
■ Cron/Crontab…….x
■ Pattern Matching………x
■ Regular Expressions…….x
■ Shell Scripting…..x
shell scripting
shell scripting is a small program essentialy that contains commands such as command line task such as grep, ls, mv, and cp. when you run the script it it excute these for you instead of typing all theses things.
ls ~ df who
is in script.sh
lab46:~$ ./script.sh Desktop archive2.zip count.c mail Documents archives data motd Downloads archivescombined.tar date multitask.lab.txt Maildir at dateyears output Music badname devel phenny Pictures badname.tgz file phenny.tar.bz2 Public bin forloop.sh script.sh Templates botscript.sh guess1.sh src Videos class_notes lab1 src.bak age.sh classlog.c lab2 the answer.txt archive1.tar.gz count loop.sh Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 4128448 2522072 1396664 65% / tmpfs 784300 0 784300 0% /lib/init/rw udev 755640 36 755604 1% /dev tmpfs 784300 4 784296 1% /dev/shm /dev/xvda2 253871 12859 227905 6% /tmp nfs:/home 2930056576 1434124544 1495932032 49% /home nfs:/lib/mail 2930056576 1434124544 1495932032 49% /var/mail skinney1 pts/8 2012-03-17 11:36 (cpe-24-94-52-91.stny.res.rr.com) rmatsch pts/16 2012-03-17 11:46 (user-10bj433.cable.mindspring.com) jjohns43 pts/24 2012-01-23 12:18 (cpe-74-65-82-173:S.0) smalik2 pts/29 2012-03-17 10:49 (cpe-69-205-204-88.stny.res.rr.com) skinney1 pts/35 2012-03-16 10:15 (65-124-85-125.dia.static.qwest.net) mfaucet2 pts/65 2012-03-09 17:09 (55:S.0) smalik2 pts/27 2012-01-25 14:53 (cpe-69-205-204-88:S.0) wedge pts/28 2012-03-17 10:02 (telstar.lair.lan) jdavis34 pts/22 2012-03-06 12:57 (cpe-69-205-141-69:S.0) jjohns43 pts/82 2012-02-27 11:03 (cpe-74-65-82-173:S.0) lab46:~$
PATH is an environmental variable that specifies a set of directories where executable programs are located.
lab46:~$export PATH=$PATH:/home/rmatsch/src/unix
Job control allow you to have the system work on a job in the background while you do something else . If you are simply trying to get logged out, but have encountered the “There are stopped jobs” message
Useful Commands control-z Stop (don't kill) the foreground job, and then return to the shell
Check the status of jobs in the current session ps -u username Check the status of processes, including those from other sessions. On BSD systems, use 'ps -gx'. kill -9 %1 Kill a job, by specifying its job number after the percent sign kill -9 123 Kill a process, by specifying its process id (PID) number bg Run the most recently stopped job in the background fg Bring most recently background job to the foreground fg %1 Bring a job to foreground by specifying its job number after the percent sign
A daemon is a computer program that runs in the background as a process, instead of running in the foreground. below is an example of a deamon running in back ground and a command to look at the root processes.
inetd or init
lab46:~$ ps -u root USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 8356 720 ? Ss Jan17 0:41 init [2] root 2 0.0 0.0 0 0 ? S Jan17 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Jan17 0:05 [migration/0] root 4 0.0 0.0 0 0 ? S Jan17 0:08 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S Jan17 0:00 [watchdog/0] root 6 0.0 0.0 0 0 ? S Jan17 0:04 [migration/1] root 7 0.0 0.0 0 0 ? S Jan17 0:03 [ksoftirqd/1] root 8 0.0 0.0 0 0 ? S Jan17 0:00 [watchdog/1] root 9 0.0 0.0 0 0 ? S Jan17 5:40 [events/0] root 10 0.0 0.0 0 0 ? S Jan17 3:53 [events/1] root 11 0.0 0.0 0 0 ? S Jan17 0:00 [cpuset] root 12 0.0 0.0 0 0 ? S Jan17 0:00 [khelper] root 13 0.0 0.0 0 0 ? S Jan17 0:00 [netns] root 14 0.0 0.0 0 0 ? S Jan17 0:00 [async/mgr] root 15 0.0 0.0 0 0 ? S Jan17 0:00 [pm] root 16 0.0 0.0 0 0 ? S Jan17 0:00 [xenwatch] root 17 0.0 0.0 0 0 ? S Jan17 0:00 [xenbus] root 18 0.0 0.0 0 0 ? S Jan17 0:06 [sync_supers] root 19 0.0 0.0 0 0 ? S Jan17 0:07 [bdi-default] root 20 0.0 0.0 0 0 ? S Jan17 0:00 [kintegrityd/0] root 21 0.0 0.0 0 0 ? S Jan17 0:00 [kintegrityd/1] root 22 0.0 0.0 0 0 ? S Jan17 0:00 [kblockd/0] root 23 0.0 0.0 0 0 ? S Jan17 0:00 [kblockd/1] root 24 0.0 0.0 0 0 ? S Jan17 0:00 [kseriod] root 27 0.0 0.0 0 0 ? S Jan17 0:00 [kondemand/0] root 28 0.0 0.0 0 0 ? S Jan17 0:00 [kondemand/1] root 29 0.0 0.0 0 0 ? S Jan17 0:02 [khungtaskd] root 30 0.0 0.0 0 0 ? S Jan17 0:20 [kswapd0] root 31 0.0 0.0 0 0 ? SN Jan17 0:00 [ksmd] root 32 0.0 0.0 0 0 ? S Jan17 0:00 [aio/0] root 33 0.0 0.0 0 0 ? S Jan17 0:00 [aio/1] root 34 0.0 0.0 0 0 ? S Jan17 0:00 [crypto/0] root 35 0.0 0.0 0 0 ? S Jan17 0:00 [crypto/1] root 38 0.0 0.0 0 0 ? S Jan17 0:00 [khvcd] root 123 0.0 0.0 0 0 ? S Jan17 0:14 [kjournald] root 170 0.0 0.0 10408 4 ? S<s Jan17 0:00 udevd --daemon root 222 0.0 0.0 10404 4 ? S< Jan17 0:00 udevd --daemon root 223 0.0 0.0 10404 4 ? S< Jan17 0:00 udevd --daemon root 355 0.0 0.0 0 0 ? S Jan17 0:49 [rpciod/0] root 356 0.0 0.0 0 0 ? S Jan17 0:00 [rpciod/1] root 373 0.0 0.0 0 0 ? S< Jan17 0:00 [kslowd000] root 374 0.0 0.0 0 0 ? S< Jan17 0:00 [kslowd001] root 375 0.0 0.0 0 0 ? S Jan17 0:28 [nfsiod] root 395 0.0 0.0 0 0 ? S Jan17 0:03 [kjournald] root 495 0.0 0.0 6748 596 ? Ss Jan17 0:00 dhclient -v -pf root 788 0.0 0.0 43220 4 ? S Jan17 0:00 supervising sys root 789 0.0 0.1 51592 2912 ? Ss Jan17 0:39 /usr/sbin/syslo root 890 0.0 0.0 10208 104 ? Ss Jan17 0:00 /usr/sbin/inetd root 921 0.0 0.0 43112 344 ? Ss Jan17 0:05 /usr/sbin/sshd root 1014 0.0 0.0 0 0 ? S Jan17 0:00 [nfsv4.0-svc] root 1037 0.0 0.0 5928 8 hvc0 Ss+ Jan17 0:00 /sbin/getty 384 root 1780 0.0 0.1 74000 2296 ? SN Mar09 0:00 /USR/SBIN/CRON root 15461 0.0 0.1 59236 2076 ? Ss Jan19 0:12 /usr/sbin/cron root 21168 0.0 0.0 0 0 ? S Mar14 0:01 [flush-202:1] root 25915 0.0 0.2 89100 3932 ? SNs 02:23 0:00 sshd: csit2310 root 27443 0.0 0.2 89100 3964 ? SNs Mar16 0:00 sshd: skinney1 root 28768 0.0 0.0 0 0 ? S 08:35 0:00 [flush-0:17] root 29506 0.0 0.2 89100 3960 ? SNs 10:02 0:00 sshd: wedge [pr root 30082 0.0 0.2 89100 3988 ? SNs 10:48 0:00 sshd: smalik2 [ root 30157 0.0 0.1 58860 2076 ? Ss Mar14 0:02 /usr/sbin/rpc.i root 30213 0.0 0.1 167308 2236 ? Ssl Mar14 0:16 /usr/sbin/nscd root 30246 0.0 0.2 89100 4000 ? SNs 11:08 0:00 sshd: smalik2 [ root 30373 0.0 0.0 0 0 ? S 11:28 0:00 [flush-202:2] root 30418 0.0 0.2 89100 3984 ? SNs 11:35 0:00 sshd: jdavis34 root 30435 0.0 0.2 89100 4000 ? SNs 11:36 0:00 sshd: skinney1 root 30530 0.0 0.2 89100 3992 ? SNs 11:46 0:00 sshd: rmatsch [ root 31447 0.0 0.1 74000 2296 ? SN Mar09 0:00 /USR/SBIN/CRON root 31763 0.0 0.1 74004 1956 ? SN Mar14 0:00 /USR/SBIN/CRON root 32271 0.0 0.1 74000 2296 ? SN Mar09 0:00 /USR/SBIN/CRON root 32506 0.0 0.1 74000 2300 ? SN Mar13 0:00 /USR/SBIN/CRON lab46:~$
cron/crontab
cron tab is a task scheduler.It is a time based which runs periodically at certain times or dates, used to automate system processes.
lab46:~$ crontab -e # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command
characters that are very powerful and help a great deal when in UNIX. the special characters enable a user to control the output of commands without having to specify the exact name of a file.
* zero or more of “any” character
? used to represent one of “any” character
\ will ignore such things as space if the variable name isn't one string.
” ” (or ' ') quote the enclosed characters
[ ] character class - match any of the enclosed characters.
[^ ] inverted character class - do not match any of the enclosed characters.
Pattern matching a way to search in unix which enables the user to look for files.
Using ls(1), list files that match the following patterns: a. Only files that begin with a lowercase vowel. b. All files that end with a .s c. All files that do not start with a vowel, yet end with a .s d. Only 3 character filenames that don't end with a consonant. e. Explain your strategy and reasoning for constructing an effective pattern for each part of this question
a. Using ls in the given directory, show me how you'd list only files
that begin with a lowercase vowel:
ls a* e* i* o* u*
b. Using ls in the given directory, show me how you'd list only files
that end with a .s:
ls *.s
c. Using ls in the given directory, show me how you'd list only files
that do not start with a vowel, yet end with a .s:
ls [b-d,f-h,j-n,p-t,v-z]**.s
d. Using ls in the given directory, show me how you'd list only the
files consisting of just 3 character filenames that don't end with a consonant:
lab46:/var/public/unix/patterns$ ls a* e* i* o* u* a.b.c.d.e.f.s abd i3 a39487y abe i4 a6.c abf i5.s a7.d ac.s i6.s a8.e aca i7.s a9.f ad.s ive_got_a_beautiful_feeling aaa alab5.s o_what_a_beautiful_day aab alab6.s o_what_a_beautiful_morning.s aac e11 u_2 aad e8933 uey aae e9038 uey2 aaf e904385 ueya ab.s ee.s ueyai aba everythings_going_my_way.s ueyed abb i1 uint abc i2 lab46:/var/public/unix/patterns$
tab completion
tab completion is a command line feature that allows you to type some of a command and have the command line finish it when you hit the tab key. kinda like a auto complete
Demonstration of the chosen keyword.
lab46:/var/public/unix/patterns$ l (tab) last less lispmtopgm lrrdNode lastb lessecho listres ls lastlog lessfile ln lsattr latin2ascii.py lesskey lnstat lscpu lcf lesspipe loadkeys lsinitramfs ld let loadunimap lsmod ld.bfd lex local lsof ld.gold lexgrog locale lspci ldapadd lft localedef lspgpot ldapcompare lft.db lockfile lsusb ldapdelete lftp lockfile-check luit ldapexop lftpget lockfile-create lwp-download ldapmodify libnetcfg lockfile-remove lwp-dump ldapmodrdn libpng-config lockfile-touch lwp-mirror ldappasswd libpng12-config loggen lwp-request ldapsearch line logger lwp-rget ldapurl link login lxterm ldapwhoami links logname lynx ldd links2 logout lynx.cur ldrdf linux32 look lzmainfo leaftoppm linux64 lorder
regular expressions
Regular Expression Symbol . Match any character * Match 0 or more of the preceding
$ End of line or string [ ] Character class - match any of the enclosed characters [^ ] Negated character class - do not match any of the enclosed characters \< Beginning of word \> End of word
grep '^[b-d][aeiou]' /etc/passwd
be able to write a simple shell scipt that contains file manipulation, and irc bot configuration.
the objective entails making a script to do multiple task incoporatiing things which have already learned allong with new task.
have students given many task and allow students to write all of these task in a script to be performed in a single script.
tell students to creat a script to do thing they know how to do via command line and also do task they dont know.
Reflect upon your results of the measurement to ascertain my achievement i did alright but there is always room for inprovmemt.