=====unix Keywords=====
====Text Processing====
===Definition===
Definition (in your own words) of the chosen keyword.
>> The creation and manipulations of a file.
===Demonstration===
Demonstration of the chosen keyword.
lab46:~$
lab46:~$ cat > file.c
Any text can go here
^D (command to end operation)
lab46:~$
lab46:~$ cat file.c
Any text can go here
lab46:~$
====The VI Editor====
===Definition===
Definition (in your own words) of the chosen keyword.
>> Screen-oriented text editor originally created for the Unix operating system.
===Demonstration===
Demonstration of the chosen keyword.
>> Lets use file.c from the previous topic.
Syntax: **vi** [-rR][file...]
>> Exiting and Entering VI:
>>
>>**ZZ** save file and exit VI
>>**:wq** same as above
>>**:e!** return to last saved version of current file
>>**:q** quit without save, (Note :q! is required if changes have been made)
>>**:w** write without exit (:w! to force write)
lab46:~$ vi file.c
* enters VI program
Any text can go here
~
~
"file.c" 2L, 22C 1,1 ALL
:q
lab46:~$
====The Unix Shell: Environment Variable====
===Definition===
Definition (in your own words) of the chosen keyword.
>> Environment variables are a set of dynamic named values that can affect the way running processes will behave on a computer.
===Demonstration===
Demonstration of the chosen keyword.
>> Environment Variables include:
>>**USER** (your login name)
>>**HOME** (the path name of your home directory)
>>**HOST** (the name of the computer you are using)
>>**ARCH** (the architecture of the computers processor)
>>**DISPLAY** (the name of the computer screen to display X windows)
>>**PRINTER** (the default printer to send print jobs)
>>**PATH** (the directories the shell should search to find a command)
**env**: Display environment variables.
lab46:~$ env
Term=xterm
SHELL=/bin/bash
SSH_CLIENT=67.252.199.108 61408 22
SSH_TTY=/dev/pts/74
USER=tedmist1
MAIL=/home/tedmist1/Maildir
PATH=/usr/lcoal/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
LC_COLLATE=C
PWD=/home/tedmist1
HISTCONTROL=ignoreboth
SHLVL=1
HOME=/home/tedmist1
LOGNAME=tedmist1
SSH_CONNECTION=67.252.119.108 61408 10.80.2.38 22
_=/usr/bin/env
OLDPWD=/usr/local/bin
lab46:~$
==== The UNIX Shell: $PATH ====
===Definition===
Definition (in your own words) of the chosen keyword.
>> PATH is an environment variable on Unix-like operating systems. This path specifies a set of directories where executable programs are located.
===Demonstration===
Demonstration of the chosen keyword.
>> Examples of SHELL variables are:
>>
>>**cwd** (your current working directory)
>>
>>**home** (the path name of your home directory)
>>
>>**path** (the directories the shell should search to find a command)
>>
>>**prompt** (the text string used to prompt for interactive commands shell your login shell)
>>
>> SHELL variables are both set and displayed using the set command.
lab46:~$ set
BASH=/bin/bash
HOME=/home/tedmist1
LOGNAME=tedmist1
PWD=/home/tedmist1
SHELL=/bin/bash
USER=tedmist1
lab46:~$
====The UNIX Shell: Wildcards====
===Definition===
Definition (in your own words) of the chosen keyword.
>> A special character usually used in the middle of a search term in a keyword search to retrieve results containing words with any character or no character in the position.
===Demonstration===
Demonstration of the chosen keyword.
>> Syntax:
>>**?** Matches any one character in a filename.
>>***** Matches any character or characters in a filename.
>>**[ ]** Matches one of the characters included inside the [ ] symbols.
lab46:~$
lab46:~$ cd script
lab46:~/script$ ls
file1 file2 file3 file4 file5 file6 file8 script8 typescript
lab46:~/script$ ls file?
file1 file2 file3 file4 file5 file6 file7 file8
lab46:~/script$ ls file*
file1 file2 file3 file4 file5 file6 file7 file8
lab46:~/script$ ls [f]*
file1 file2 file3 file4 file5 file6 file7 file8
lab46:~/script$
====The UNIX Shell: Tab Completion====
===Definition===
Definition (in your own words) of the chosen keyword.
>> Tab completion is a common feature of command line interpreters, in which the program automatically fills in partially typed commands.
===Demonstration===
Demonstration of the chosen keyword.
>> Changing directories into your home directory.
>>
>>If you haven't provided unique enough information to the command-line, the tab completion cannot complete. Hitting tab a second time will give you a list of possible choices.
lab46:~$ cd ho <-- hit tab
lab46:~$ cd home/ <-- this is what should appear after hitting the tab command
lab46:~/home$
lab46:~$ cd home/ <-- if you hit the tab command twice the next prompt should appear:
lab46:~$ cd home/
.swp username/
====Job Control====
===Definition===
Definition (in your own words) of the chosen keyword.
>> The ability to suspend an interactive job and resume it at a later time, or send it into the "background".
===Demonstration===
Demonstration of the chosen keyword.
>> Need to know information:
>>
>>**Process ID (PID)**: a unique number assigned to each running process on the system.
>>**Foreground Process**: a process that is running in the foreground (currently using STDIN/STDOUT/STDERR).
>>**Background Process**: a process that is running independently in the background, allowing you to use your shell (which is in your foreground) or start additional applications.
>>**Killing a Process**: in UNIX, you can terminate processes with the kill(1) utility.
>> The **ps(1)** utility is used to list the running processes on the system. Running with no arguments will show the current processes attached to your login session.
>>
>> The **kill(1)** utility is used to terminate certain PID numbers running.
lab46:~$ ps
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tedmist1 13123 1.0 0.1 13628 1956 pts/74 SNs 12:53 0:00 -bash
tedmist1 13126 0.0 0.0 8588 996 pts/74 RN+ 12:53 0:00 ps u
lab46:~$ kill 13123
lab46:~$
====The UNIX Programming Environment: Compiler====
===Definition===
Definition (in your own words) of the chosen keyword.
>> A program that decodes instructions written in a higher order language and produces an assembly language program.
===Demonstration===
Demonstration of the chosen keyword.
>> The Unix command for compiling C/C++ code is **gcc**.
>> Where **hello** is the name of the desired executable, and **hello.c** is the name of the text file containing the program source.
>>The **-o** argument to **gcc** indicates the name of the output file.
>>**C Compiler**
lab46:~$ gcc -o hello hello.c
lab46:~$ ls
hello (green coloration indicating it as a special file)
hello.c
lab46:~$
>>**C++ Compiler**
>> Where **hello1** is the name of the desired executable, and **hello.cc** is the name of the text file containing the program source.
>>The **-o** argument to **g++** indicates the name of the output file.
lab46:~$ g++ -o hello1 hello.cc
lab46:~$ ls
hello1 (green coloration indicating it as a special file)
hello.cc
lab46:~$
=====unix Objective=====
====The Ability to Accomplish/Automate Tasks====
State the course objective
>> The ability to accomplish/automate tasks
===Definition===
In your own words, define what that objective entails.
>> The ability to create ones own task, and have it run at a certain point of time on each day you so wish it to run.
===Method===
State the method you will use for measuring successful academic/intellectual achievement of this objective.
>> Such an objective can be accomplished using the **cron** command. **Cron** the name of a program that enables Unix users to execute commands or scripts automatically at a specified time/date.
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6)
(Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
===Measurement===
Follow your method and obtain a measurement. Document the results here.
>> The method of measurement would be the times in which your task will be occurring. If the task only runs for a week the measurement of that task will be a week.
===Analysis===
Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.
* How did you do?
>> Good, in this objective I learned how to automate tasks to my wanting.
* Is there room for improvement?
>> Yes, by learning all the commands and proper syntax involved.
* Could the measurement process be enhanced to be more effective?
>> No, it will just take time to learn such things.
* Do you think this enhancement would be efficient to employ?
>> Yes, by running tasks on certain days, thus you would not forget to run them on that day.
* Could the course objective be altered to be more applicable? How would you alter it?
>> The course objective is just fine the way it is. It is already applicable, thus no changes needed to be made.