=====unix Keywords===== ====Regular Expressions==== Like pattern matching, regular expressions involve text manipulation and other commands like grep. ===Definition=== By definition, a regular expression is a formula for matching strings that follow some pattern. ===Demonstration=== ====Networking, Unix tools==== There are several important commands in unix for networking. Whether it's checking your IP address or seeing if a website is up, these simple networking tools are very important. ===Demonstration=== ping - it sends packets to the address you give it, and tells you whether or not it received them. lab46:~$ ping cnn.com PING cnn.com (157.166.255.19) 56(84) bytes of data. ifconfig - device interface config. These are your networking devices and what they are currently up too. It will list a bit of information reguarding the network it is connected too. [sudo] password for thakes3: eth0 Link encap:Ethernet HWaddr 00:30:84:0e:88:c1 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:16 Base address:0x1400 eth1 Link encap:Ethernet HWaddr 00:11:0a:36:64:4d inet addr:10.80.2.180 Bcast:10.80.2.255 Mask:255.255.255.0 inet6 addr: fe80::211:aff:fe36:644d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4832 errors:0 dropped:0 overruns:0 frame:0 TX packets:2954 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4155503 (3.9 MiB) TX bytes:526011 (513.6 KiB) Interrupt:20 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:660 (660.0 B) TX bytes:660 (660.0 B) Telnet - a protocol that allows you to remote to computers and both receive and send ascii text. one of my favorite Telnets would be the star wars movie in ascii. telnet towel.blinkenlights.nl ====Shell Scripting==== Shell scripting in unix is very important as it accomplishes repetitive tasks simply and provides an easy method of executing a command that takes rather long to type over and over again. ===Demonstration=== Shell scripting is very useful for writing a long command that sometimes is forgotten. For this demonstration I will reveal my ssh shell script within my home folder lab46:~$ cat Universe ssh thakes3@69.207.208.154 lab46:~$ by changing the permissions to allow it to be executed (chmod a+x Universe) all I would need to do is execute that file and it would ssh me to that address. lab46:~$ ./Universe thakes3@69.207.208.154's password: ====Security==== The security environment in unix is rather unique as it relies on permissions and users to block out the information that should not be accessed by others. ===Demonstration=== Permissions are important in unix as they are needed for the current user to access the file. If your permissions are low for other users, such as read only, then they are not able to edit the file or make amends to it. to view your permissions, use the -l appendage to the command 'ls' lab46:~$ ls -l total 3 drwxr-xr-x 4 thakes3 lab46 46 Feb 29 11:41 Backups drwxr-xr-x 2 thakes3 lab46 28 Feb 25 15:06 Desktop -rwxr--r-- 1 thakes3 lab46 27 Mar 2 14:43 Foxtrot lab46:~$ to edit your permissions, see the chmod command. Users in Unix often are put within a group of other users often referred to as a User Group. They are often given certain permissions to the entire group so that the group can accomplish a task together. every user must be a member of at least one group, which is identified in /etc/passwd. This group is referred to as the primary group ID. A user may be listed as member of additional groups in the relevant entries in the /etc/group; the IDs of these groups are referred to as supplementary group IDs. results given by cat'ing /etc/group : lab46:~$ cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5:wedge disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24: floppy:x:25: tape:x:26: sudo:x:27: audio:x:29: dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44: sasl:x:45: plugdev:x:46: staff:x:50:wedge games:x:60: users:x:100: nogroup:x:65534: libuuid:x:101: crontab:x:102: ssh:x:103: ntp:x:104: tss:x:105: scanner:x:106: nvram:x:107: fuse:x:108: kvm:x:109: rdma:x:110: messagebus:x:111: utempter:x:112: avahi:x:113: netdev:x:114: cl-builder:x:115: ====$PATH==== The path variable in unix is used for finding files that are executable instead of having to go to those locations specified inorder to execute a program. ===Demonstration=== By echo'ing the $PATH variable, you are given each directory that the cli searches for on the system. lab46:~$ echo $PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin lab46:~$ without these listed, when you attempt to use a program it will return a "command not found" lab46:~$ PATH = null lab46:~$ man dd man: command not found lab46:~$ ====Tab Completion==== Tab completion in unix refers to the utility that allows you to automatically fill out the rest of the command you are attempting to type out, as well as directories that exist. ===Demonstration=== By using Tab completion your computer will guess as to what you are attempting to type. Let's say I want it to auto complete for file. lab46:~$ fli file filebyproc.d filecoordinationd filtercalltree lab46:~$ fli Now I would like to edit a file with a very long file name. lets say treehuggersarefriendly.txt . Since there are no other commands or files that have any characters beyond tree, it will auto complete the name for you. lab46:~$ vi treehuggersarefriendly.txt lab46:~$ ====Environment Variables==== Environment Variables are sets of dynamically named values that affect how programs run. ===Demonstration=== By using the command 'set', you are able to see all of the environment variables that are currently in place on the system. lab46:~$ set Apple_PubSub_Socket_Render=/tmp/launch-zxcVFC/Render Apple_Ubiquity_Message=/tmp/launch-h4tdQI/Apple_Ubiquity_Message BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="2" [2]="48" [3]="1" [4]="release" [5]="x86_64-apple-darwin11") BASH_VERSION='3.2.48(1)-release' COLUMNS=80 COMMAND_MODE=unix2003 DIRSTACK=() DISPLAY=/tmp/launch-nlv4HI/org.x:0 EUID=501 GROUPS=() HISTFILE=/Users/Thomas/.bash_history HISTFILESIZE=500 HISTSIZE=500 HOME=/Users/Thomas HOSTNAME=Thomass-MacBook-Pro.local HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LINES=24 LOGNAME=Thomas MACHTYPE=x86_64-apple-darwin11 MAILCHECK=60 OPTERR=1 OPTIND=1 OSTYPE=darwin11 PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin PIPESTATUS=([0]="0") PPID=649 PROMPT_COMMAND='update_terminal_cwd; ' PS1='\h:\W \u\$ ' PS2='> ' PS4='+ ' PWD=/Users/Thomas SECURITYSESSIONID=186a5 SHELL=/bin/bash SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor SHLVL=1 SSH_AUTH_SOCK=/tmp/launch-3MwPil/Listeners TERM=xterm-color TERM_PROGRAM=Apple_Terminal TERM_PROGRAM_VERSION=303 TERM_SESSION_ID=C4D3E870-C900-43E5-8C99-DD82C82ED39A TMPDIR=/var/folders/s_/4x3d698174b8cn1l1c0m1mkm0000gn/T/ UID=501 USER=Thomas _=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin __CF_USER_TEXT_ENCODING=0x1F5:0:0 update_terminal_cwd () { local SEARCH=' '; local REPLACE='%20'; local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"; printf '\e]7;%s\a' "$PWD_URL" } You are able to change an environment variable by setting it equal to some value lab46:~$ echo $TERM xterm-color lab46:~$ TERM=xterm lab46:~$ echo $TERM xterm lab46:~$ ====Wildcards==== Wildcards are a magical operator that allows the unix system to search for the beginning characters + 0 or more characters. They are very useful for searching for a very long file or searching for one that you do not know the rest of the name. ===Demonstration=== In this example I will be searching for a file named 'diablo3looksprettygood.jpg' within my home directory of /home/thakes3. lab46:~$ find /home/thakes3 --name 'diablo*' 2> /dev/null diablo3looksprettygood.jpg lab46:~$ Note that it found the exact file even though we did not specify the rest of it. I can also use vi on a different file 'lulzjkidkroflhahanoob.txt' lab46:~$ vi lulz* =====unix Objective===== ====unix Objective==== State the course objective ===Definition=== In your own words, define what that objective entails. ===Method=== State the method you will use for measuring successful academic/intellectual achievement of this objective. ===Measurement=== Follow your method and obtain a measurement. Document the results here. ===Analysis=== Reflect upon your results of the measurement to ascertain your achievement of the particular course objective. * How did you do? * Is there room for improvement? * Could the measurement process be enhanced to be more effective? * Do you think this enhancement would be efficient to employ? * Could the course objective be altered to be more applicable? How would you alter it?